Programming Language

노정훈·2023년 3월 28일
0

CE

목록 보기
7/24

Programming Language

  • 주어진 문제를 해결하기 위해, 인간과 컴퓨터 사이에서 의사소통을 가능하게 하는 인공적인 언어
  • 자연어와 달리 미리 정해진 규칙에 따라 엄격하게 정의됨.
  • compiler나 interpreter 등을 통해 computer가 수행할 수 있는 machine language로 변환되어 수행.

Classification

Abstraction 수준에 의한 분류

1. Low-level Language

  • Computer H/W 내의 물리적 동작을 이해하고 각 동작에 대응하는 명령어를 이용하여 programming
  • 빠른 동작이 가능하지만 사람이 이해하기는 어려움.
  • Machine language, Assembly language가 있음.

2. High-level Language

  • 사람이 이해하기 쉬움.
  • Abstraction 개념을 도입하여 H/W에 대한 직접적 이해 없이도 programming이 가능
  • 오늘날의 프로그래밍 언어라고 불리는 것이 다 high level language

cf) Abstraction

  • 주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼 묘사할 수 있는 방법을 지원하는 것
  • 필수적인 attribute(속성)들만으로 주어진 것을 묘사하기 때문에 나머지 속성들은 추상화, 은닉 또는 삭제됨.
  • 추상화의 범주에는 Data Abstraction, Algorithm Abstraction가 있음.
  • Data Abstraction : 문자열, 수, tree와 같은 계산될 자료의 특성을 추상화하는 것. string, number, tree etc...
  • Algorithm Abstraction : 실행 순서를 제어하는 특성을 추상화하는 것으로 여러 기계어를 모아 이해하기 쉬운 추상 구문으로 만드는 것. Loop Statements, Condition statements, Procedure call etc...

작동방식에 따른 구분

1. Compiler Language

  • Compiler를 사용하는 고급 언어
  • 프로그램 전체를 읽어들여 이를 object code로 바꿈.
  • 컴파일러 능력에 따른 최적화 가능.
  • 빠르게 프로그램 전체 실행이 가능하지만 소스 변경 시 전체를 다시 compile 해야함.
  • Fotran, Pascal, Cobol, Ada, C, C++ etc...
  • JAVA도 compiler language라고 볼 수 있음.

Object Code

  • object module라고도 불리며 compiler가 source code로부터 compile을 수행하여 생성한 code 혹은 파일
  • machine language, intermediate language과 같은 binary code
  • linker 등을 통해 여러 다른 object code와 연결되어 executable code가 됨.

2. Interpreter Language(Script Language)

  • Interpreter에 의해 line 단위로 compile 없이 실행되는 언어.
  • 고급 언어의 한 종류
  • 개발단계에서 적은 양의 수정에 대한 결과를 쉽게 확인 가능
  • Python, Java Script etc...
Compiler LanguageInterpreter Language
object code 생성일반적으로 object code 만들지 않음
program 단위의 translationstatement 단위의 translation
translation에 많은 시간translation 속도 빠름
execution 속도 빠름execution 속도 느린 편
executable code 변환 이후 compiler 필요 없음원칙적으로는 interpreter가 수행을 위해 필요
결과물이 OS 종속적인 경우 많음결과물이 OS 독립적인 경우 많음

프로그래밍 작성 기법 별 구분

  • 절차중심 언어
  • 객체지향 언어

Reference :
1) https://dsaint31.me/mkdocs_site/CE
2) https://www.vadimbulavin.com/xcode-build-system/

profile
노정훈

0개의 댓글