Babel, Typescript는 Javascript를 컴파일하는 도구입니다. 웹 브라우저가 이해할 수 있는 이전 버전의 Javascript로 트랜스컴파일러로 Babel을 사용합니다. 또한 Typescript는 정적 타입 기능을 추가해 Javascript로 트랜스파일 한다고 합니다. 사실 대부분의 개발자들이 Transpile과 Compile을 혼용해서 사용하고 있는데, 키워드가 2개인걸 보면 분명한 차이점이 있다는 겁니다.
Compile이란?
컴파일이란 한개의 언어로 작성된 Code를 다른 언어로 변환하는 작업을 의미합니다. 대표적으로 Java로 작성된 파일을 컴파일하면 JVM이 이해할 수 있도록 bytecode로 구성된 class 파일이 생성됩니다.
C 언어로 작성된 코드를 컴파일 하면 assembly 언어로 된 파일이 생성됩니다. 이 처럼 완전히 다른 언어로 변환하는 작업을 컴파일 한다고 합니다.
Transpile이란?
트랜스파일이란 한 개의 언어로 작성된 Code를 유사한 수준의 추상화를 가진 다른 언어로 변환하는 작업을 의미합니다. 그럼 추상화란 무엇일까요? 컴퓨터 사이언스에서 굉장히 중요한 개념이지만 막상 말로 표현하려니 입이 떨어지지 않습니다.
Computer Science에서 추상화(Abstraction)은 복잡한 기능을 간추려 일반화 시키는 작업을 의미합니다. 예를 들어 console.log() 를 많이 사용하지만 내부 적으로 폰 노이만 아키텍처의 Data Bus, Address Bus를 이해하고 I/O를 정확하게 구현하는 것을 생각하지 않습니다. 그냥 print기능이 있고, 뭘 출력하지만 생각하면 됩니다.
트랜스파일이 되는 경우는 아래와 같습니다.
- Babel(ES6->ES5)로 버전을 낮추는 작업
- C++ > C
- Typescript > Javascript
정리
컴파일 트랜스파일 차이는 뚜렷하게 구분되지 않습니다. 다만 추상화 수준에 따라 구분할 수 있는 개념이고, 적절한 상황에 맞는 개념을 사용하는 것이 맞다는 생각이 듭니다. 최근에는 컴파일과 트랜스파일을 섞어 트랜스컴파일러라는 개념이 등장하기도 했습니다.
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
'Blockchain' 카테고리의 다른 글
[블록체인 만들기 #5] PoW 합의 알고리즘 (1) | 2022.10.11 |
---|---|
[블록체인 만들기 #4] Chain 만들기 (0) | 2022.10.10 |
[블록체인 만들기 #3] Unit Test (Jest) (0) | 2022.10.09 |
[블록체인 만들기 #2] Genesis Block 생성 (Typescript) (0) | 2022.10.09 |
[블록체인 만들기 #1] Block 구성 (Typescript) (0) | 2022.10.09 |
댓글