인터프리터 언어 VS 컴파일 언어

RA_MI·2022년 2월 18일
1

STUDY

목록 보기
1/1

이 게시글은 전 게시글 02장 자바스크립트란? 자바스크립트의 특징을 공부하면서 인터프리터 언어와 컴파일 언어의 차이점이 궁금해서 생긴 게시글이다.

인터프리터 언어 🤔


인터프리터 언어는 원시코드(프로그래머가 작성한 소스코드)를 기계어로 변환하는 과정 없이 한줄 한줄 해석하여 바로 명령어를 실행하는 언어이다. EX) Ruby, Python, JS, SQL, HTML

인터프리터 언어는 직접 읽기 때문에 빌드 시간이 없다. Runtime 상황에서는 한 줄씩 실시간으로 읽어 실행하기 때문에 컴파일 언어에 비해 속도가 느리다

실행 속도는 느리지만 코드 변경 시 빌드 과정 없이 바로 실행이 가능하다는 장점이 있다.
크기가 큰 소스코드의 경우 컴파일 시간이 오래 걸리지만, 인터프리터 언어는 바로 실행이 가능하다.
코드를 열면 다 보이기 때문에 보안에 좋지는 않다.

컴파일 언어 🤔


컴파일 언어는 원시코드를 기계어로 변환한 후에 기계어 코드를 실행한다. 소스코드를 기계어로 번역하는 빌드 과정에서는 시간이 소요된다. 하지만 런타임 상황에서는 이미 기계어로 모든 소스코드가 변환되어 있기 때문에 빠르게 실행할 수 있다. EX) C, C++, JAVA, C#

매번 번역할 필요 없이 실행 파일만 실행하면 되기 때문에 전체적인 시간면에서 효율적이다.
프로그램을 수정해야 할 경우 처음부터 빌드과정을 다시 거쳐야하기 때문에 특히나 대규모 프로그램에서는 생산성이 떨어진다.

빌드 과정


순서과정Description
1Preprocessor
(전처리기)
#define 같은 매크로나 지시자를 소스코드로 변경하고, c파일이 i파일이 된다.
2Parser
(문법검사)
Syntax(코드 문법)을 검사하고, 문법에 따라 코드를 쪼갠다.
3Translation
(번역)
문법 파싱이 끝난 소스코드를 어셈블리어로 번역하고, i파일이 s파일이 된다.
4Assembler
(번역)
기계어만큼 낮은 수준의 언어로 번역하고, s파일이 o(object,바이너리,기계어) 파일이 된다.
--여기까지를 보통 Compile (소스코드->기계어) 이라고 칭한다.
5Linker
(object 파일 연결)
작성된 소스코드가 사용하는 API 이나 표준 라이브러리를 연결시켜, exe 파일로 만든다.

0개의 댓글