컴파일

From 백괴사전
(Redirected from 컴파일러)
Jump to: navigation, search

“Compile! return chalgiguna;”

엉덩국 핑크, string을 반환하며

컴파일C언어, C++, 자바와 같이 웬만한 프로그래머가 알아먹을 언어 혹은 brain삐–fuck아희어, 프로그래밍 ㄹ어와 같이 백괴스러운 프로그래밍 언어로 작성한 언어를 레전드급 프로그래머들과 컴퓨터와 같은 진짜 기계만 이해할 수 있는 기계어 혹은 어셈블리어 등으로 기계 번역하는 과정이다. 보통 기계어로 번역하는 경우가 많으며, 기계 번역이 대개 병맛이며 그렇게 취급받는데 비해 이 컴파일 과정은 매우 정확하고, 그렇지 않으면 컴파일 취급도 해 주지 않는다.

혹은 넓은 의미로, 컴파일은 위와 같은 언어 외의 베이식 언어, 어셈블리어와 같은 구시대 프로그래밍 언어와 외계어, dksemfhdj, icufjt, ㅊㅅㅇ, ㅇㅇㅇ 등의 매우 일반적인 언어를 프로그램으로 만들어버리는 것을 가리키기도 하나 이는 컴퓨터 과학 분야에서는 정확하지 않은 정의로 받아들이고 있다.

컴파일러[edit]

컴파일을 하려면 기계가 필요한데, 그 기계가 컴파일러다. 유명한 컴파일러로는 다음과 같은 것이 있다.

컴파일러의 본래 역할은 기계 번역이지만 컴파일러들이 똑똑해진 탓에 현재는 문법이 틀리면 가르쳐주기도 한다. 하지만 의도를 파악하여 논리적 오류를 집어내는 인공지능까지는 갖추지 못하고 있으며, 이 기능은 현재 개발중이다. 텍스트 파일을 열어보면 컴파일러가 기계어 사이에 자신의 이름을 은근슬쩍 새겨넣는다는 것을 알 수 있다.

목적 파일[edit]

컴파일을 할 때 C언어와 C++, 자바? 등 몇몇 언어는 목적 언어라는 매우 백괴스러운 파일을 만든다. 이 파일은 컴파일 되고 링크가 되어 ?실행가능한 독립적 프로그램이 되는데, 윈도의 경우 exe로 만들어진다. 목적 파일에는 기계어 투성이이다. 그 내용은 매우 복잡하여 사람이 읽을 수 없다 카더라. gcc의 경우 -c를 붙여 이 목적 파일만 만들 수 있다.

번역 단계[edit]

다른 기계 번역과 마찬가지로 컴파일도 다중 번역을 하는데, 일반적인 기계 번역은 번역을 거듭할수록 복호화가 불가능할 정도의 높은 암호화를 자랑하지만 컴파일러는 여러 단계를 거쳐 번역해도 복호화가 힘들어지지 않는다. 오히려 이렇게 함으로써 번역 속도가 상승되는 효과가 나타나기도 하며, 보다 다양한 프로그래밍 언어를 제공할 수 있게 된다. 프로그래밍 ㄹ어의 경우 3단 번역 과정을 통해 컴파일된다.

컴파일 시간[edit]

컴파일 시간은 프로그램에 따라, 그리고 CPU 성능에 따라 다르다. 복잡한 프로그램의 경우 컴파일 시간이 오래 걸린다. xkcd라는 사이트에서는 컴파일 시간이 오래 걸릴 경우 컴파일을 핑계로 놀 수 있다는 것을 가르쳐주었으며, 이 만화를 본 사람들은 회사 컴퓨터에 몰래 저사양의 CPU를 박아놓거나 회사 컴퓨터에 젠투나 리눅스 프롬 스크래치 등을 설치하여 모든 프로그램을 컴파일한 후 설치하는 만행을 저지르고 있다.