컴파일러, 인터프리터, 트랜스파일러 개념 요약 정리

작성 : 2023-09-13수정 : 2023-09-13

목차 펼치기

컴파일러 (Compiler)

코드를 기계어 또는 중간 언어로 변환시키는 컴파일 작업을 수행하고 실행 파일로 저장하는 프로그램을 말한다.


  • 빌드 단계에서 정적 타입 검사를 수행하여 구문 오류를 런타임 환경 전에 확인할 수 있다.

  • 실행 파일로 빌드되어 있기 때문에 매번 코드를 해석할 필요가 없어 런타임 환경에서의 동작이 빠르다.

  • 특정 플랫폼이나 아키텍쳐에 종속될 수 있다.

  • 대표적으로 C, C++, JAVA, TypeScript 등이 있다.


TypeScript는 단순히 JavaScript로 변환되는 것 뿐만 아니라 정적 타입 검사, 타겟 ECMAScript 설정, 모듈 시스템, 데코레이터 처리 등 다양한 확장 기능을 제공하고 있기 때문에 TypeScript 컴파일러를 통해 JavaScript로 실행되는 컴파일 언어로 분류된다.



인터프리터 (Interpreter)

별도의 컴파일 과정 없이 고급 언어를 한 줄씩 해석하여 즉시 실행하는 프로그램을 말한다.


  • 실행될 때 마다 코드를 다시 읽고 해석한다.

  • 일반적으로 플랫폼에 독립적이다.

  • 대표적으로 JavaScript, Python, Ruby 등이 있다.


JavaScript는 웹 문서 구조를 동적으로 나타내기 위한다는 가벼운 목적으로 등장한 인터프리터 언어다. 현재는 그 초기 목적보다 더 큰 기능을 수행하고 있어 이를 효과적으로 처리하기 위한 기술들이 발전하고 있다. V8 엔진과 같은 현재의 JavaScript 엔진은 성능을 위해 일부 컴파일 과정을 거치기도 한다.




트랜스파일러 (Transpiler)

언어를 다른 언어로 변환시키는 트랜스파일링을 수행하는 프로그램을 말한다. ES6+ 코드를 ES5 코드로 변환하거나, JSX나 TypeScript의 문법을 JavaScript로 변환하는 등의 작업을 수행한다.


JavaScript의 대표적인 트랜스파일러로 ‘바벨(Babel)’이 있다. 현재는 많은 프로젝트가 바벨을 웹팩으로 통합하여 번들링 과정에서 트랜스파일링을 진행하는 방식으로 구성되어 있다.




Contact Me

All Icons byiconiFy