1.2 컴파일하고 실행하기
앞 절에서 살펴본 것처럼 프로그램 코드는 컴퓨터로 하고 싶은 일을 표현한 것으로, 하드디스크 어딘가에 저장된 텍스트 문서와 다를 바 없다. 그런데 컴퓨터는 이렇게 텍스트 형태로 작성된 코드를 바로 이해할 수 없다. 그래서 컴파일러(compiler)라 부르는 특별한 프로그램으로 C 코드를 컴퓨터가 알아들을 수 있는 형태인 바이너리(binary)C 또는 실행 파일(executable)C로 번역해야 한다. 이러한 번역 프로그램의 형태나 처리 방식은 현재 레벨에서 설명하기에는 매우 어렵다.2 게다가 이를 설명하려면 책 한 권을 써야 할 정도이므로 자세히 다룰 수도 없다. 일단 이 모든 작업을 처리해 주는 도구를 컴파일러라고 부른다고만 알아 두자.
TAKEAWAY 1.2 C는 컴파일 방식 프로그래밍 언어다.
컴파일러의 명칭과 컴파일러에서 제공하는 커맨드 라인 인수(command-line argument)(명령줄 인수)는 프로그램을 실행할 플랫폼(platform)C마다 다르다. 그 이유는 간단하다. 타깃 바이너리 코드가 플랫폼 종속적(platform dependent)C이기 때문이다. 다시 말해 코드 형태와 세부 사항은 프로그램을 실행할 컴퓨터마다 다르다는 것이다. PC는 전화기보다 용도가 다양하다. 냉장고와 셋톱박스는 사용하는 ‘언어’가 서로 다르다. C 언어도 마찬가지로 이런 문제가 존재한다. C는 다양한 기계어(어셈블리(assembly)C)를 추상화한 것이다.
2 여기서 말하는 ‘번역’은 여러 단계를 거쳐 진행된다. 즉, 컴파일(compile) 작업을 통해 텍스트를 변환하고, 이렇게 나온 조각들을 서로 연결하는 링크(link) 과정을 거친다. 엄밀히 말해서 이 모든 작업을 처리하는 도구를 번역기(translator)라고 부르는 것이 적절하지만, 전통적으로 컴파일러(compiler)라고 부른다.