본문 바로가기
카테고리 없음

[CS] 컴파일러 언어, 인터프리터 언어, 트랜스파일

by hbIncoding 2023. 7. 19.

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