Low level language vs. High level language¶
Low-Level Language¶
- 컴퓨터 H/W 내의 물리적 동작을 이해하고, 각 동작에 대응하는 명령어를 이용하여 프로그래밍.
- H/W에 대한 지식이 매우 많이 요구됨.
- 기계가 이해하기 쉬워서 빠른 동작이 가능하나 사람은 이해가 매우 어려움.
Machine language와 Assembly language가 대표적.
High-Level Language¶
- 사람이 이해하기 쉬운 언어.
- Abstraction이라는 개념을 도입하여 H/W에 대한 직접적 이해 없이도 프로그래밍이 가능.
- 기억장소(memory)의 address 대신 variable(변수)의 이름(or identifier)으로 데이터를 기억장치에 쓰거나 읽을 수 있음 (Symbolic Addressing).
- 자연어의 단어나 표현을 이용하여 컴퓨터의 동작을 추상화
- 한 표현으로 여러 기계어 코드의 동작을 지시할 수 있음.
오늘날 프로그래밍언어라고 불리는 모든 것들이 다 high level language (고급언어)임.
Note : Abstraction (추상화)¶
- 주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼 묘사할 수 있는 방법을 지원하는 것
- 필수적인 attribute(속성)들만으로 주어진 것을 묘사하므로 나머지 속성들은 은닉 또는 삭제됨
추상화의 범주¶
- 자료 추상화(Data Abstraction)
- 문자열, 수, tree와 같은 계산될 자료의 특성을 추상화
- string, number, tree 등
- 제어 추상화(Algorithm Abstraction)
- 실행 순서를 제어하는 특성을 추상화 :
Control Structure
- 제어 추상화의 예 : 반복문, 조건문, 프로시저 호출 등
- Loop statements, Condition statements, Procedure call
- 여러 기계어를 모아 이해하기 쉬운 추상 구문으로 만드는 것.
- 관련된 프로시저 그룹의 추상화(library, package등)
- 실행 순서를 제어하는 특성을 추상화 :