본문 바로가기
CS/Computer Basic

[CS/Basic] 컴파일? 인터프린터? 빌드(Build) 유무에 따른 비교

by iosdevlime 2022. 12. 5.

지난 포스팅에서는

 

프로그래밍 언어에 대한 간단한 개념

개발자 혹은 컴퓨터의 편의성에 따른 저수준/고수준 언어에 대해 살펴보았습니다.

 

 

이번 포스팅에서는 조금 더 나아가,

프로그래밍 언어의 종류 중, 빌드(Build)의 유무에 따라 분류되는

컴파일 언어 / 인터프리터 언어에 대해 알아보겠습니다.

 

 

 


 

 

코드가 앱이 되는 과정 

소스코드(Code)는 일련의 과정을 통해 병합되고 패키징되어 실행할 수 있는 앱으로 탄생한다

 

기초코드, 그러니까 소스코드(Source Code) 를 프로그래밍 언어로 작성하면

번역을 통해 기계어로 변환되는 과정을 거쳐서 컴퓨터가 명령을 수행하게 됩니다.

 

좀 더 구체적으로 살펴보자면,

소스코드가 모여 개발자의 의도가 담긴 목적코드(Object Code) 로서 변환되고

 

이러한 목적코드를 한데 묶는 연결, 병합하는 링크(Link)기능을 통해

실행파일(Excutable Code)이 만들어집니다.

 

일련의 과정을 한눈에 살펴보면 다음 그림과 같습니다.

 

Swift 또한 이와 같은 Build 과정을 거쳐 앱을 만든다
Swift 또한 이와 같은 Build 과정을 거쳐 앱을 만든다

 

 

하지만, 모든 언어가 위와 같은 과정을 거치진 않습니다.

 

위 그림은 컴파일(Compiled), 혹은 빌드(Build)의 과정이 존재하는

프로그래밍 언어의 종류 중 하나인 '컴파일 언어(Compiled Language)' 에 해당합니다.

 

 


 

 

컴파일 언어(Compiled)와 인터프리터(Interpreter) 언어 비교

컴파일, 그리고 인터프리터 언어의 차이는 빌드(Build)의 유무

 

개발자가 사용하는 고 수준 언어를 컴퓨터가 이해하기 쉽도록 변환하는 과정(프로그램)

컴파일(Compiled), 그리고 인터프리터(interpreter) 라고 합니다.

 

다시 말해, 컴파일을 통해 변환되는 언어는 '컴파일 언어'라고 하며

인터프리터를 통해 변환되는 언어는 '인터프리터 언어'라고 불리겠지요?

 

그렇다면,

두 가지 언어의 차이는 어디서 발생할까요?

 

 

 

컴파일 언어 (Compiled Language)

  • 개발자가 작성하는 코드의 명령을 한데 모아놓고, 한 번에 실행하는 프로그래밍 언어의 종류입니다.
    • 컴파일(Compiled)은 소스코드를 한곳에 모아 목적코드(Object code)로 변환합니다.
    • 목적코드는 빌드(Build) 과정을 통해 비로소 실행파일로 변환됩니다.
  • 빌드과정이 있으므로, 코드 실행속도가 빠르다는 특징을 가지고 있습니다.
    • 코드를 주-욱 나열하고 나중에 컴파일러와 빌드의 검사를 받으면 되고,
    • 컴퓨터가 이해할 수 있는 언어로의 중간 변환과정(빌드)이 존재하기 때문입니다. 
    • 하지만, 컴파일 과정이 매우 오래 걸릴 수 있습니다! (마치 밀린숙제 검사처럼)

 

 

인터프리터 언어 (Interpreter Language)

  • 소스코드 한 줄, 한 줄마다 번역을 동시에 처리하는 프로그래밍 언어의 종류입니다.
    • 인터프리터(Interpreter)는 해석하자면 '통역사'입니다.
    • 코드를 바로 번역/변환하는 방식이다 보니, 빌드과정이 존재하지 않습니다!
  • 빌드 과정이 없으니 실행파일 또한 존재하지 않아 개발속도가 상대적으로 빠릅니다. 
    • 코드를 바로바로 실행하는 방식입니다.
    • 하지만, 컴파일 언어와는 반대로 코드 실행(명령)속도는 느립니다.

컴파일 언어와 인터프리터 언어 프로그래밍 Process
컴파일 언어와 인터프리터 언어 프로그래밍 Process

 

 


프로그래밍 언어 분류, 2번째 시간인

컴파일 언어와 인터프리터 언어에 대해 알아보았습니다.

 

다음 포스팅에서는 

컴파일 타임(Compile Time), 런타임(Runtime)의 개념과

이에 따른 정적/동적 언어를 비교해보도록 하겠습니다.

 

 

 

 

 

댓글