컴파일

내위키
Dennis (토론 | 기여)님의 2017년 10월 30일 (월) 22:33 판

Compile.

원래 여러 출처에서 자료를 따 와서 편집한다는 뜻을 가지고 있지만 지금은 컴퓨터 용어로 가장 친숙하다. 고급 프로그래밍 언어로 만든 프로그램을 실제 컴퓨터에서 실행할 수 있는 기계어, 중간 코드, 또는 다른 프로그래밍 언어로[1] 번역하는 것을 뜻한다. 프로그램을 기계어로 번역하는 방법은 크게 두 가지로 컴파일과 인터프리트가 있다. 컴파일은 전체 프로그램 코드를 번역해서 실행 가능한 기계어 코드를 만드는 반면, 인터프리트는 프로그램을 실행시켜서 그 순서에 따라 나오는 명령어를 즉석에서 번역해서 실행시킨다. 컴파일이 문서를 통으로 받아서 싹 번역해서 주는 것이라면 인터프리트는 한줄 한줄씩 통역하는 것에 가깝다. 사실 인터프리트(interpret)라는 말이 원래 '통역'을 뜻하는 말이다. 컴파일을 해 주는 프로그램을 컴파일러(compiler), 인터프리트를 해 주는 프로그램을 인터프리터(interpreter)라고 한다.

컴파일 방식을 사용하는 가장 대표적인 언어라면 뭐니뭐니해도 C. 자바도 컴파일 방식이지만 정확히는 중간 코드인 바이트코드를 만드는 부분까지만 컴파일러고, 바이트코드를 다시 기계어로 번역해서 실행하는 과정은 인터프리트에 가까웠다. 다만 이제는 속도 향상을 위해서 바이트코드→기계어 번역 과정에서 JIT 컴파일 방식을 사용하고 있다.

컴파일의 가장 큰 장점이라면 뭐니뭐니해도 속도다. 프로그램을 싹 번역해서 실행할 수 있는 파일을 만들어 주므로 프로그램을 실행할 때 그때 그때 명령어 단위로 번역하는 인터프리터보다 속도가 우월하다. 똑같은 문서를 미리 번역해 놔서 그걸 그냥 죽 읽기만 하는 것과, 원본 문서를 놓고 한 줄씩 번역하면서 읽는 것과, 어느 쪽이 속도가 더 빠를지는 말하나 마나다. 그래서 인터프리트 방식으로 실행하던 방식을 사용하던 프로그래밍 언어들도 이른바 JIT 컴파일이라는 방식을 사용한다.

각주

  1. 예를 들어 타입스크립트는 컴파일 하면 자바스크립트 파일이 나온다. C++도 처음에는 컴파일하면 C 파일이 나왔고 이걸 다시 컴파일하는 방식으로 실행 파일을 만들었다.