고급어와 저급어
- High level과 Low level의 직역이다.
- 저급어는 기계어(Machine code)이다. = CPU가 인식할 수 있는 명령어
- 기계어는 알아보기 매우 어렵고 고급어는 인간이 이해하기 쉬운 언어이다.
- 고급어의 코드는 보통 함수 단위로 묶어 표시한다.
- 고급어를 기계어로 바꾸는 것이 번역이다.
기계어 코드와 디스어셈블 코드
- 기계어 코드는 CPU같은 기계장치가 이해하는 코드로 사람이 보고 이해하기 굉장히 어렵다.
- 어셈블리어는 기계어를 디스어셈블한 코드로 사람이 이해할 수 있는 코드다.
- 어셈블(Assemble): 어셈블리어 → 기계어
- 디스어셈블(Disassemble): 기계어 → 어셈블리어
C언어 코드 = 고급어 = Hige level
- 고급어가 CPU에서 실행을 하기위해서는 저급어로 번역해야한다. → 컴파일(Compile)
- 컴파일 과정: C언어 → 기계어
CPU의 다른 이름 Machine
- CPU는 Machine이므로 기계어(저급어)로 명령을 내려야 실행이 가능하다.
- 프로그램은 C언어 같은 고급어로 작성되는데, CPU가 인식할 수 있도록 번역해야한다. → 컴파일
- C언어 코드 = Native 코드 = 특정 CPU와 OS에 종속 = CPU와 OS가 직접 실행할 수 있는 코드
- Native 코드 = 특정 CPU에서 실행을 하기 위해 컴파일된 언어 = 현재 프로그램이 돌아가는 환경에 적합한 기계 언어
- S/W = Logical ≒ Virtual, CPU = Machine
- CPU를 S/W로 구현하면 Virtual Machine이 된다. → 가상화
- Virtual Machine이 인식하는 코드 = Managed 코드 = CPU와 OS에 의존하지 않는 코드 → Java
- Java를 위한 Virtual Machine = JVM
- Java → byte code → JVM → OS(Windows, MAC, Linux) = JVM이 있으면 OS에 상관없이 실행 가능
인터프리터(Interpreter)
- 고급어 소스코드를 직접 실행하는 프로그램이나 환경을 의미한다.
- 보통 한번에 한 줄 단위로 실행한다. → 한 줄 읽고 번역해서 실행을 반복
- 성능(특히 속도)면에서 컴파일러 방식보다 느리다.
- JavaScript나 Python 등이 여기에 해당 한다.
JavaScript는 Front-End 언어로 브라우저에서 작동한다.
크롬 브라우저에는 JavaScript Engine이 내장되어 있음 → V8 Engine (VM)
프로그래밍 언어 방식
- 컴파일 언어 = 전체 소스 코드를 기계어로 번역 후 실행
- 인터프리터 언어 = 소스 코드를 한 줄씩, 번역과 실행을 동시에 진행
참고