컴퓨터는 0,1로 이루어진 기계어를 언어로 사용한다. 예를 들어 컴퓨의 '00000010'이란 코드는 'A와 B를 더하라'라는 명령을 의미하는 컴퓨터만의 부호인 것이다. 이렇게 저마다의 2진(0,1) 부호마다 어떤 CPU에서 처리할 명령이 하나씩 1:1로 대응되어 있다.

하지만 만약 우리가 프로그래밍(Programming)을 할 때 기계어를 사용해서 하게 된다면 수많은 2진 부호들을 외우는데의 어려움 등 많은 문제점이 발생할 것이다.

이에 탄생한 것이 C나 Pascal과 같은, 흔히 고급언어라고 불리는 컴파일언어이다. 이는 인간이 사용하는 언어와도 흡사해 자연어라고 불리기도 한다. 가령 'A와 B를 더하라'는 우리가 흔히 사용하듯 'x = a + b ;'와 같이 쓰는 식이다.

이런 고급언어로 작성된 프로그램들을 다시 컴퓨터가 이해할 수 있는 기계어로 바꾸어주는 것이 바로 컴파일러(Compiler)다. 곧 원시언어가 파스칼(Pascal)이나 코볼(Cobol)과 같은 고급언어이고 목적언어가 어셈블리 언어나 기계어일 경우, 이를 번역해 주는 프로그램을 컴파일러라 한다.

컴파일을 하기 위하여 입력되는 프로그램을 원시 프로그램이라 하고 이 프로그램을 기술한 언어를 원시언어(source language)라 한다. 또 번역되어 출력되는 프로그램을 목적 프로그램이라 하고 이 프로그램을 기술한 언어를 목적언어(object language 또는 target language)라 한다.

한 프로그램을 컴파일하여 목적 프로그램으로 바꾸어 놓으면, 원시 프로그램을 수정하지 않는 한 계속 반복해서 수행할 수 있다.

크로스 컴파일러(cross-compiler)라는 것은 원시 프로그램을 컴파일러가 수행되고 있는 컴퓨터의 기계어로 번역하는 것이 아니라, 다른 기종에 맞는 기계어로 번역하는 컴파일러를 말한다. 이 밖에 다른 번역기를 살펴보면 어셈블러(assembler), 인터프리터
(interpreter), 그리고 프리프로세서(preprocessor) 등을 들 수 있다.

관련 사이트

Posted by 퓨전마법사
,