컴파일링(Compiler)과 트랜스파일링(Transpiler)
[(Babel)https://babeljs.io/] 공식 홈페이지에 들어가면 Babel is a JavaScript Compiler
라는 설명을 볼 수 있다.
또한 위키피디아에서는 Babel에 대해서는 아래와 같이 설명하고 있다.
Babel is a free and open-source JavaScript transcompiler ...
transcompiler(Transpilier)
라는 설명으로 Babel
을 설명한것으로 확인할 수 있는데, 그렇다면 Compiler
와 Transpiler
가 어떠한 차이가 있을까?
컴파일러(Compiler)
일반적으로 컴파일러(Compiler)
은 한 언어로 작성된 소스 코드를 실행 가능한(excutable)
하위 수준의 언어(binary)변환하는 것이다.
이러한 언어의 예로는 C, C++, Java가 있으며, 컴파일 후에는 바이너리 파일에 가까운 바이트 코드 또는 어셈블리 수준의 언어를 생성한다.
트랜스파일러(Transpiler)
트랜스파일러(Transpiler)
은 한 언어로 작성된 소스 코드를 유사한 추상화 수준을 가진 다른 언어로 변환하는 과정이다.
반면에 트랜스파일링은 하나의 상위 수준의 언어를 다른 상위 수준의 언어로 변화는하는 '소스 대 소스' 컴파일러라고 할 수 있다.
예를 들어, Typescript 는 Transpiling 이후에 자바스크립트로 변환되며 이 또한 상위 수준의 언어이다.
또한 바벨을 통하여 ES6 문법에서 ES5 의 문법으로 변환하여 오래된 브라우저에서 사용가능하도록 변환하는 것도 마찬가지이다.
마무리
그렇다면 컴파일러(Compiler), 트랜스파일러(Transpiler)는 정말로 다른것일까?
결과적으로는 컴파일과 트랜스파일의 차이는 변환되어 생성되는 언어의 레벨의 차이이며, 컴파일러라는 큰 범주 안에 트랜스파일러라는 하나의 영역이 존재하는 것으로 개인적인 생각을 정리하고자 한다.
그러기에 컴파일, 트랜스파일이라는 용어를 사용하고자 할때 이러한 차이점을 알고 사용한다면, 트랜스파일의 과정을 컴파일이라 설명하는것도 문제가 없을것 같다.
'Develope > 기타' 카테고리의 다른 글
Typescript Infer란? (0) | 2024.08.26 |
---|---|
Typescirpt any, unknown, never 정리 (0) | 2024.08.16 |
# Visual Studio Code(VSCode) 키보드 입력이 정상적으로 작동하지 않을 때 (0) | 2024.03.04 |
Visual Sutdio(VSCode) REST Client (0) | 2024.02.18 |
점진적 향상법, 우아한 성능저하법 (0) | 2021.01.14 |