[ASAC 06] Transpile, compile

flavor_blue·2024년 8월 16일

코딩을 하면 듣게 되는 두 단어의 차이에 대해 작성 해 보겠습니다.

Transpile

Transpile, 혹은 Transcomplie 이라고 불리는 이 단어는, 하나의 소스 프로그래밍 언어에서, 동일 언어의 이전 버전으로 번역하여 소스코드를 컴파일 하거나, 다른 언어나 버전으로 번역된 소스 코드 생성을 의미합니다. 이러한 행위를 하는 프로그램을 Transpiler 혹은 Transcompiler 라고 부릅니다.
Transpiler 는 다른 언어의 번역에도 해당 단어를 사용하는데, 좋은 예시로 Typescript -> JavaScript, JSX -> Javascript 번역을 Transpile 한다고 합니다.
다만 언어의 체계가 완전히 다른 경우에는 해당 단어를 사용하지 않는데, Python -> Javascript의 경우, convert라는 언어로 말 한다고 하네요.

사용 예시

Javascript 에서는 최신 언어 버전과 하위 브라우저의 호환성을 위해 Babel 이라는 Transpiler를 사용 합니다.

Compile

Compile은 한 언어로 작성된 소스 코드를 머신 언어로 변경하여 언어와 파일 자체를 변경하는 행위를 말합니다. 컴퓨터는 기계이고, 기계어로 작성이 되어 있습니다. 우리가 사용하는 영어나 이런 한글은 컴퓨터는 이해하지 못하기 때문에, 코드를 작성하고 나면 컴퓨터가 이해할 수 있게 기계어로 번역하는 행위를 진행해야 하는데, 이 과정을 수행하는 것을 Compile이라고 합니다.

사용 예시

C의 GCC, Java의 javac가 있습니다. 해당 과정을 통해, C 언어는 Assembly어로, Java는 ByteCode로 변환하게 됩니다.

Compile Error?

컴파일 과정에서 에러가 생기는 것을 컴파일 에러라고 표현 합니다. 컴파일은 프로그램의 로직과는 상관 없이 프로그램이 구동할 수 있게 만드는 것을 의미하기 때문에, 주로 컴파일을 하지 못하게 만드는 것들을 컴파일에러라고 표현하며, 대표적으로 문장 구문 에러에서 많이 생기곤 합니다. (그러나 요즘은 IDE가 많이 좋아져서 Compile Error가 발생하기 전에 다 잡히긴 합니다.)

Compile error 말고 Runtime Error 이라는 에러도 있습니다. 런타임 에러의 경우에는 실행 중 나는 에러에 대한 정의로, 컴파일이 되어 프로그램이 실행 가능한 상태가 되었으나, 구동 중 발생하는 에러를 얘기합니다. 주로, 배열을 범위를 넘어서 탐색 하는 경우나, null 값을 변수에서 참조하는 경우가 있습니다.


📑 출처 및 참조
[ASAC] 강의 자료
https://velog.io/@wanzekim/Transpile-vs-Compile
https://en.wiktionary.org/wiki/transcompile#English
https://ideveloper2.tistory.com/166

profile
아무거나 쓰려하지 말고 생각하며 쓰고 싶습니다

0개의 댓글