이력서 질문

Babel은 컴파일러 인가 ? 트랜스파일러인가?

SammyK 2022. 6. 7. 23:14
  • 트랜스파일러는 컴파일러의 한 종류이다.  
컴파일러 (compiler) 트랜스파일러 (transpiler)
컴파일의 경우는, 한 언어로 작성된 소스 코드를 다른 언어로 변환하는 것을 의미 합니다. 트랜스파일 의 경우는 한언어로 작성된 소스 코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 것을 말합니다.

컴파일러 vs. 트랜스파일러

(1) CPU-level (actual logic gates on the CPU)
(2) machine code
(3) assembly code
(4) [C/C++, JVM/bytecode]
(5) [JavaScript, Python]

여기서, 컴파일러는 한단계 아래로 코드를 변환 한다 

  • 예) 5번을 4번의 코드로
    • Java >> bytecode
    • C >> assembly code

하지만 트랜스파일러는 코드를 다른 방식/언어를 같은 레벨에서 변환한다.

  • 예) 5번의 코드를 다른 5번의 언어로
    • ES6+ 문법을 ES5 문법으로 변환
    • C++ >> C 

그래서 바벨(Babel) 은 무엇일까? 

  • 자바스크립트의 ES6+ 문법을 하위호환 ES5 문법으로 변환 ?  이거 컴파일러이네?
  • 하지만 자바스크립트 에서 다른 자바스크립트 문법으로 바뀌는거니까 트랜스파일러네? 

결론은....

컴파일러이며, 자바스크립트 트랜스파일러 둘다이다.

그래서 뭐가 맟냐고 따지지는 말자!

'이력서 질문' 카테고리의 다른 글

Redux  (0) 2022.06.08
상태관리  (0) 2022.06.08
Context API란?  (0) 2022.06.07
ES6에 추가된 것은 무엇인가?  (0) 2022.06.07
ES6의 호환성 해결방법은?  (0) 2022.06.07