1. 컴파일러 언어
1)컴파일러란?
- 고급 언어로 작성 된 소스 코드를 저급 언어로 번역하느 프로그램을 가리킨다.
- 고급언어는 사람이 이해하기 쉽도록 작성된 언어로 C, C++, JAVA 등이 있다.
- 저급 언어는 컴퓨터 내부에서 바로 처리 가능한 프로그래밍 언어로 기계어와 어셈블리어 등이 있다.
- 컴파일러를 통해 컴파일 타임에 전체 소스 코드를 한번에 기계어로 변환 후 실행파일을 만든다.
- 컴파일 단계와 실행 단계가 각각 분리되어있고, 컴파일은 단 한번만 수행한다.
- 실행은 실행 파일을 실행시킴으로써, 실행시에는 컴파일 과정이 없기에 코드 실행 속도가 빠르다.
- 단, 프로젝트 규모가 클 경우 컴파일 시간이 오래걸릴 수 있다.
2. 인터프리터 언어
1)인터프리터란?
- 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램을 말한다.
- 컴파일 하지 않고 소스 코드를 한줄씩 읽어들여 실행한다.
- 컴파일을 하지 않고 실행파일도 별도로 생성하지 않는다.
- 실행시 마다 인터프리트 과정이 반복 수행되어 실행 속도가 느리다는 단점이 있다.
- Python, Javascript, Ruby 등이 있다.
3. 비교
컴파일러 언어 인터프리터 언어
코드 실행 전, 컴파일 타임에 소스 코드 전체를 한번에 기계어로 변환 후 실행 | 코드가 실행 단계인 런타임에 코드 한 줄씩 중간 코드인 바이트코드로 변환 후 실행 |
실행 파일 생성 | 실행 파일 생성 X |
컴파일 단계와 실행 단계가 분리 | 인터프리트 단계와 실행 단계 분리 X 인터프리터는 한 줄씩 바이트코드로 변환 후 즉시 실행 |
컴파일은 한번만 수행 | 코드 실행시마다 인터프리트 과정 반복 수행 |
컴파일과 실행단계가 분리되어 있어, 실행시에는 실행만 하면 되므로 코드 실행 속도 빠름 | 인터프리트 단계와 실행 단계가 분리되어 있지 않아 반복 수행하므로 실행 속도가 느림 |
4. 트랜스파일
1)트랜스파일 이란?
- 어떤 특정 언어로 작성된 소스 코드를 다른 소스 코드로 변환하는 것을 말한다.
- 트랜스파일은 한 언어로 작성된 소스코드를 비슷한 수준의 추상화(Abstraction)를 가진 다른 언어로 변환하는 것이다.
- 컴파일은 한 언어로 작성된 소스코드를 다른 언어로 변환하는 C언어를 기계어로 변환하는 과정이라고 할 수 있다.
- C#을 컴파일 하면 소스코드와 기계어 사이의 중간 단계 언어(IL, Intermediate Language)로 변하는데 서로 매우 다른 추상화 수준을 가지고 있고 이것을 트랜스파일링(transpiling)했다고 하지 않는다.
- C++ > C, CoffeScript > javascript 와 같은 경우가 있다.
5. 참조
1)컴파일러 언어와 인터프리터 언어 : https://velog.io/@congaweb/compiler-interpreter
2)트랜스파일링 : https://ooz.co.kr/416