[ 1 ] 컴파일 언어
만약, C언어로 코딩을 입문했다면 관련 서적에서 '컴파일'이라는 단어를 쉽게 찾아볼 수 있었을 것이다. '컴파일'이란 쉽게 말하자면 개발자가 작성한 소스 코드를 컴퓨터가 이해할 수 있도록 번역하는 과정이다.
컴파일 언어는 개발자가 작성한 소스 코드를 컴파일러를 통해 기계어로 변환한 후 하나의 실행파일을 생성한다. 소스 코드가 방대한 경우 컴파일하는데 상당히 오랜 시간이 걸릴 수 있다는 단점이 있지만, 컴파일 후 생성된 실행파일은 기계어로 작성되어 있기 때문에 런타임이 빠르다는 장점이 있다. 대표적인 컴파일 언어로는 C, C++ 등이 있다.
- 실제 C++ 컴파일 과정
(1) 헤더파일 등의 전처리기 매크로들을 처리하는 전처리(Preprocessing) 단계
(2) 소스 파일을 어셈블리어로 변환하는 컴파일 단계 - 확장자 .S
(3) 어셈블리어(.S)를 실제 기계어로 변환하는 어셈블 단계 - 확장자 .o
(4) .o 파일들을 하나의 실행 파일로 생성하는 링크 단계
실제 C++의 컴파일 과정은 생각보다 더욱 복잡하지만, 보통 (1) ~ (3) 단계를 결합하여 컴파일 과정이라 한다.
[ 2 ] 인터프리터 언어
컴파일 언어와 달리 인터프리터 언어는 별도의 컴파일 과정 없이, 소스 코드를 한 줄씩 읽어 내려가며 동시에 프로그램을 실행한다. 그로 인해 실행 자체는 느리다는 단점이 있지만, 프로그램 수정이 간단하다는 장점이 있다. 왜냐하면, 소스 코드 수정 이후에 다시 '컴파일'을 할 필요가 없기 때문이다. 또한, 인터프리터 언어는 코드를 한 줄씩 실행시킬 수 있어 디버깅이 쉽다는 장점도 있다. 대표적인 인터프리터 언어로는 python, R, javaScript 등이 있다.
[ 3 ] 그렇다면 자바(Java)는?
처음에 자바를 배울 때 .java파일을 .class파일로 컴파일하고, JVM이 .class파일을 실행한다고 배웠기 때문에 당연히 컴파일 언어일 것이라 생각했다. 하지만, JVM에는 자바 인터프리터라는 것이 존재하고, 자바 인터프리터는 .class파일을 "한 줄씩" 읽으며 binary code로 다시 번역한 후 프로그램을 실행한다는 점에서 인터프리터 언어의 성격도 있다고 한다.
따라서, 자바는 "하이브리드 언어"라고 분류한다.
'CS > 기본 용어' 카테고리의 다른 글
[용어 사전] 객체 지향 프로그래밍 - 추상화, 상속, 다형성, 캡슐화 (1) | 2023.03.02 |
---|---|
[용어 사전] UI와 API (0) | 2022.08.09 |