티스토리 뷰

Computer Science

Compile, Interpret

kmj24 2021. 4. 9. 23:32

개요

프로그래밍 언어를 배우다 보면 "컴파일러", "인터프리터"라고 들어보게 될 것이다

범용적인 프로그래밍 언어 중 C/C++, Java, Python, Javascript 등이 있다.

이러한 언어들은 모두 고수준의 언어이고,여기서 고수준이란, 사람의 입장에서 쉽게 기계와 소통할 수 있도록 고안된 프로그래밍 언어이다.

 반대로 저수준 언어는 사용자의 반대 입장인 컴퓨터가 이해하기 쉬운 기계어가 있다.

기계어는 0과 1로된 언어이고 컴퓨터 실행에 효율적이지만, 사람이 작성하려면 작업량이 어마어마할것이다..

반대로 고수준 언어는 사람의 일상적인 언어와 가깝고(기계어와 비교해서 상대적으로..) 작성도 훨씬 간단하다(상.대.적.으.로)

 

사람은 이러한 고수준 언어로 작성하고 작성된 고수준 언어를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정이 필요하다. 컴파일과 인터프리터는 이러한 고수준에서 저수준으로 번역하는 대표적인 방법이며, 고수준 언어들은 이러한 번역과정인 Compile, Interpret을 하나 이상 채택하여 사용한다.

 

Compilation 언어

고급 언어로 작성된, 프로그램 전체를 기계어로 번역하는 과정을 거친다. 컴파일러는 이러한 pre-process(선행처리)과정을 거친 후 코드가 실행되도록 한다. 

코드 전체가 기계어로 번역이 완료 된 후 실행이 되고 Interpretation언어와는 여기서 차이가 난다. 

소스코드 ---> 전체번역(Compiler) ---> 실행

대표적으로 C언어가 있다.

 

Interpretation 언어

컴파일과정과 다른 과정을 거친다. 

소스코드를 intermediate code로 변환하고 이를 각 row단위로 실행한다.

쉽게 이야기하면 하나의 row씩 진행될 때 마다 실시간으로 번역하고 실행한다.

소스코드 --->번역(Interpreter) ---> 실행 ---> 소스코드 ---> 번역 ---> 실행 ---> 반복....

대표적으로 python언어가 있다.

 

이러한 방식의 차이 때문에 Compilation언어, Interpretation언어는 속도차이가 있다.

python이 느리다고(상대적으로..) 하는 이유는 이러한 번역 방법이 다르기 때문이다.

 

그리고, compile과 interpret 과정을 모두 사용하는 언어도 있다

Java, V8엔진을 사용할때의 Javascript가 있다.

 

Java는 .java파일을 .class파일로 변환하는 javac 컴파일 과정을 거치고, 변환된 .class파일을 java interpreter과정을 거쳐 기계어로 번역된다.

Javascript는 일반적으로 interpret 언어지만, V8엔진 내부에서 컴파일 과정이 필요할 시 컴파일을 진행한다. Javascript의 성능이 비약적으로 상승하게된 이유이기도 하다.

'Computer Science' 카테고리의 다른 글

TCP/IP, UDP  (0) 2021.07.16
Web Socket, 웹 소켓  (0) 2021.06.06
[Architecture] 부하 분산(Load Balancing)  (0) 2021.03.28
자료구조(Data Structure)  (0) 2021.03.12
[Network] OSI 7 Layer  (0) 2021.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함