컴파일 언어란 무엇인가?


 컴파일 언어란 사람이 작성한 고급 프로그래밍 언어 코드를

 컴파일러통해 기계어(0과 1)로 된 파일로 전체를 한 번에 번역하여 실행하는 언어를 말한다.

 

 여기서 말하는 컴파일러(Compiler)는 무엇인가?

 어떤 언어의 코드 전체를 다른 언어로 바꿔주는 과정을 컴파일이라고 말한다.

 그런데 이것을 자동으로 수행해주는 소프트웨어가 있는데, 이를 컴파일러라고 부른다.

 

특징

  • 실행 전에 전체 코드를 한 번에 번역함
  • 컴파일이 끝나야 실행이 가능
  • 실행 속도가 빠름
  • 컴파일 단계에서 문법, 타입 오류를 미리 발견할 수 있음

 

대표적인 예시

  • C
  • C++
  • Objective-C
  • Go

 


컴파일과 컴파일 언어는 서로 같은가?


 

결론부터 말하자면 컴파일과 컴파일은 언어는 서로 다른 의미이다.

컴파일의 정의부터 살펴보자.

컴파일은 "무엇을 하느냐"에 대한 말이다.

사람이 작성한 소스 코드를
컴퓨터가 이해할 수 있는 형태(기계어)로
변환하는 과정

 

즉, 동작(행위)을 뜻한다.

 

예시

  • 문법 검사
  • 타입 검사
  • 기계어 변환
  • 실행 파일 생성

 반면, 컴파일 언어는 무엇이냐?

 컴파일 언어는 실행하기 전에 컴파일의 여부에 따라 정해진다.

 

즉, 이 컴파일 언어는

  • [ 컴파일 → 실행 ] 인 것인가
  • [ 해석 → 실행 ] 인 것인가

를 기준으로 [컴파일 언어] 또는 [인터프리터 언어] 로 분류된다.

 

 컴파일은 "번역을 하는 행위"이다.

 더 정확히 표현하자면 "전체 코드를 한 번에 번역하는 행위"를 뜻한다.

 

 또한 여기서 새로 생긴 해석(Interpretation)이란,

 소스 코드를 실행 시점에 한 줄씩 읽어서 그 즉시 동작으로 바꾸어 실행하는 방식을 의미한다.

 

 즉, 코드를 실행하기 앞서 번역이 필수인 언어를 컴파일 언어.

 반면 해석과 동시에 실행하는 언어를 인터프리터 언어로 분류한다.


 

 여기서 의문이 발생할 수 있다.

 

 그렇다면 인터프리터 언어는 컴파일을 전혀 하지 않는가?

 

 결론부터 말하자면, "그렇지 않다" 이다.

 다만, 우리가 앞에서 정의한 의미의 컴파일과는 다른 형태이다.

 

 전통적인 의미에서는 컴파일은 소스 코드 전체를 실행 전에 한 번에 기계어로 변환하고, 그 결과로 실행 파일을 생성하는 과정을 의미한다.

 반면, 인터프리터 언어는 이러한 방식의 컴파일을 거치지 않고, 실행 시점에 소스 코드를 해석하며 실행하는 방식을 사용한다.

 

 하지만 실제로는 대부분의 인터프리터 언어도 내부적으로는 컴파일 과정을 포함하고 있다.

 

 예를 들어, Phthon은 소스 코드를 바로 기계어로 실행하지 않는다.

 먼저 소스 코드를 중간 코드(바이트 코드)로 변환한 뒤, 이 바이트 코드를 가상 머신이 해석하여 실행한다.

 

 이 과정은 엄밀히 말하면 기계어로의 컴파일은 아니지만, 코드를 실행 가능한 형태로 변환한다는 점에서 일종의 컴파일 과정이라고 볼 수 있다.

 

 즉, 핵심은 다음과 같다.

  • 인터프리터 언어는 실행 파일을 생성한다는 컴파일을 하지 않는다.
  • 하지만 실행을 위해 내부적인 변환(중간 단계 컴파일)은 수행한다.

 

정리하자면

인터프리터 언어는 컴파일을 전혀 하지 않는 것이 아니라,
실행 파일을 생성하지 않는 방식의 컴파일을 수행한다.

 

또는 더 직관적으로 표현하자면,

인터프리터 언어는 "미리 컴파일해서 실행하는 언어"가 아니라,
"실행을 중심으로 컴파일과 해석이 결합된 언어"이다.

 

 

'컴퓨터과학(CS) > CS개념 정리' 카테고리의 다른 글

인코딩(Encoding)과 디코딩(Decoding)  (0) 2026.02.05
빌드(Build) 과정 순서  (0) 2026.01.27
CS 공부의 시작  (0) 2026.01.26