본문 바로가기
Frontend/JavaScript

Build process(인터프리터 언어/ 컴파일 언어)

by joy_95 2021. 7. 2.

Build란?

컴퓨터는 근본적으로 0과 1밖에 모른다. 우리가 작성하는 코드들은 대부분 고급언어를 사용하기 때문에 결국에 컴퓨터가 이해할 수 있도록 번역을 해주어야 한다. 여기서 컴퓨터가 이해하는 언어를 기계어라고 하는데, 프로그래머가 작성한 소스코드를 기계어로 번역하여 실행 가능한 파일로 만드는 과정을 빌드라고 한다.

 

이러한 빌드 과정은 크게 3가지 방식으로 분류할 수 있는데

Compile : 소스코드 전체를 기계어로 번역함.

Interpreted : 소스코드를 한 줄씩 번역하면서 실행함.

Hybrid : 소스코드 전체를 중간코드(바이트 코드)로 번역한 뒤 가상머신(VM)에서 한 줄씩 실행함.

 


1 Compile Type

우리가 작성한 소스코드를 한꺼번에 번역해서 실행파일로 만들어준다. 한마디로 통번역이다.

이렇게 한 번에 번역하는 언어들을 컴파일 언어라고 하는데 대표적으로 C, C++, Go 언어가 있다.

preprocessing(전처리)

말 그대로 사전처리다. 전처리기에 의해 소스코드에 포함된 매크로나 지시자 같은 것을 포함시켜준다. 쉽게 말하자면 '소스코드의 중심(main)이 실행되기 전에 사전준비 하는 과정'

 

compilation(컴파일)

compile이라는 뜻이 번역하다라는 뜻이다. 흔히 컴파일을 소스코드를 실행코드로 만드는 것으로 생각하는 사람들이 많은데 엄연하게 다르다. 말 그대로 '번역'하는 것일 뿐이다. 컴파일 하는 프로그램을 컴파일러(compiler)라고 하고, 흔히 중간언어라고 하는 어셈블리어(Assembly Language)로 번역된다. 즉 프로그래머가 작성한 언어를 기계어로 바로 번역하는 게 아니라 중간언어로 먼저 번역을 해주는 것이다.

 

assemble(어셈블)

컴파일 단계에서 고급언어를 저수준 언어로 번역을 해줬다. 이제 최종적으로 기계어로 번역해주는 단계를 말한다.

 

linking(링킹)

컴파일(어셈블 포함) 과정을 통해 각 파일들이 기계어로 번역되었다면, 이제 하나로 연결해줘야 한다. 컴파일 과정을 통해 만들어진 object file은 기계어가 이해할 수 있는 번역본일 뿐 실행을 할 수 있는 파일이 아니다. 

즉 링킹 단계에서 하나의 실행가능한 파일(Executable file)로 만들어준다. 

 

 

이러한 단계들을 포괄적으로 보았을 때, 전처리-컴파일-어셈블 단계를 하나의 컴파일 단계라고도 본다. 

즉 빌드와 컴파일의 차이점이 여기서 나온다. 컴파일은 번역하는 단계로 소스코드를 object file로 만들어주는 과정일 뿐 그 결과물이 실행파일인 것은 아니다. 이 컴파일 단계에서 링크 과정이 포함되어야, 실행가능한 파일이 나온다.

 

컴파일 + 링크 = 빌드

 

 

컴파일 언어의 장점

- 빌드가 완료된 실행가능한 파일을 실행 속도가 빠르다.

- 매번 번역할 필요없이 실행 파일만 실행하면 되기 때문에 전체적인 시간면에서 효율적이다.

 

컴파일 언어의 단점

- 프로그램을 수정해야 할 경우 처음부터 빌드과정을 다시 거쳐야하기 때문에 대규모 프로그램에서는 생산성이 떨어진다.

- 플랫폼에 매우 의존적이다.


2 Interpreted Type

소스코드를 통번역하는 것이 아닌 한 명령 단위로 해석하면서 즉시실행하는 방법이다. 통역사를 생각하면 된다.

컴파일 언어와 인터프리터 언어의 가장 큰 차이점은 바로 Object file을 생성하지 않고 바로 실행된다는 것이다.

가장 대표적인 언어는 javascript, python, ruby이다. 

소스코드의 한 명령 세트마다 기계어로 번역해주면서 바로바로 실행해주는 방식을 인터프리터라고 한다. 그래서 인터프리터를 통해 바로 결과를 볼 수 있기 때문에 프로그램 수정에 매우 유리하다.

 

인터프리트 언어의 장점

- 컴파일과정 없이 바로 실행하기 때문에 수정, 디버깅에 유리하다. 개발속도에 유리하다.

- 각 플랫폼에 지원하는 인터프리터만 있따면 실행 가능하기 때문에 플랫폼에 독립적이다.

 

인터프리트 언어의 단점

- 빌드 되어있는 컴파일 언어 프로그램보다 실행시간이 느리다.

- 코드를 열면 다 보이기 때문에 보안에 좋지 않다.

 

 

참고,이미지 출처

본 내용은 아래 포스팅을 보고 공부하려고 정리한 글입니다 :)

https://st-lab.tistory.com/176

 

프로그래밍 언어와 빌드 과정 [Build Process]

안녕하세요. 제가 이 시리즈를 작성할 때 처음 계획했던 것이 있습니다. 최소한의 프로그래밍언어에 대한 작성 방법은 알고 있다는 전제하에 프로그래밍 전반에 관한 내용을 다뤄본다고 했죠.

st-lab.tistory.com

 

반응형

'Frontend > JavaScript' 카테고리의 다른 글

[Javascript] preventDefault  (0) 2021.07.20
[Javascript] classList.toggle  (0) 2021.07.20
조건문(if)  (0) 2021.07.15
세로모드에서 가로모드로 스크롤하기.  (0) 2021.07.03
[Javascript] parseInt()  (0) 2021.06.30