Study/컴퓨터 구조 | 운영체제

[컴퓨터 구조] | 고급 언어를 저급 언어로 변환하는 컴파일, 인터프리트

jaeyeong 2023. 6. 20. 17:55

 

프로그래밍 언어는 어떻게 명령어가 되어 실행될까?

그리고 명령어는 어떻게 이루어져 있을까?


고급 언어 VS 저급 언어

개발자들은 Java, Python, JavaScript와 같은 프로그래밍 언어로 코드를 작성한다.

그렇다면 컴퓨터는 이 언어들을 이해할 수 있을까?

답은 '아니'다!

 

프로그래밍 언어는 사람이 이해하고 작성하기 쉽게 만들어진 언어이며, 이렇게 사람을 위한 언어고급 언어라 하고,

반대로 컴퓨터가 이해하고 실행할 수 있는 언어저급 언어라고 한다.

저급 언어는 명령어로 이루어져 있으며 기계어와 어셈블리어로 나뉜다.

 

  1. 기계어: 0과 1의 명령어 비트로 이루어진 명령어 모음으로 구성된 저급 언어이다. 이진수와 십육진수로 표현된다.
  2. 어셈블리어: 기계어를 읽기 편한 형태로 번역한 저급 언어이다.

 

따라서 고급 언어로 작성된 소스 코드가 실행되기 위해서는 반드시 저급 언어로 변환되어야 한다.

 

고급 언어가 저급 언어로 변환되는 방식

개발자들이 작성한 코드가 실행되기 위해서는 저급 언어로 변환되어 실행되어야 하는데,

저급 언어로 변환되는 방식은 크게 컴파일 / 인터프리트 두 가지로 나눌 수 있다.

 

미리 덧붙이자면, 하나의 프로그래밍 언어가 반드시 둘 중 하나로만 작동한다고 생각하면 안 된다.

컴파일이 가능하다고 해서 인터프리트가 불가능하거나, 인터프리트가 가능하다고 해서 컴파일이 불가능한 것은 아니다.

 

컴파일 언어

컴파일 방식으로 작동하는 프로그래밍 언어를 컴파일 언어라고 한다.

 

컴파일 언어로 작성된 소스 코드 전체가 저급 언어로 변환되는 과정이 컴파일이며,

컴파일을 수행해 주는 도구를 컴파일러라고 한다.

 

컴파일러가 오류를 하나라도 발견하면 컴파일에 실패하게 되며,

성공 시 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환되는데, 이때 반환된 코드를 목적 코드라고 한다.

 

인터프리터 언어

인터프리트 방식으로 작동하는 프로그래밍 언어를 인터프리터 언어라고 한다.

 

인터프리터 언어는 소스 코드 한 줄씩 차례로 실행하며 한 줄씩 저급 언어로 변환되는 과정을 거친다.

이때 실행해 주는 도구를 인터프리터라고 한다.

 

소스 코드를 한 줄씩 실행하기 때문에 전체를 변환하는 시간을 기다릴 필요가 없지만,

오류를 발견하더라도 오류가 발견되기 전까지의 코드는 실행된다.

 

컴파일 과정을 거쳐 받은 목적 코드는 저급 언어로 이루어져 있어 컴퓨터가 빠르게 실행되는 반면,

인터프리터 언어는 소스 코드 마지막에 도달할 때까지 한 줄씩 저급 언어로 해석하며 실행하기 때문에

일반적으로 컴파일 언어가 인터프리터 언어보다 더 빠르다.


책에서는 독일어를 모르는 친구에게 독일어로 쓰인 책을 설명해 주는 것으로 비교하여 설명해주고 있었다.
컴파일 방식은 독일어로 쓰인 책 전체를 한국어로 번역한 뒤 번역된 책을 친구에게 건네주는 방식이고,
인터프리트 방식은 독일어로 쓰인 책을 같이 보며 친구에게 한 줄씩 한국어로 설명해 주는 방식이라고 비교한다.

한국어로 번역하는 시간이 필요하지만 번역된 책을 건네받기만 하면 한 줄씩 설명해 주는 것보다 빠르게 책을 읽을 수 있기 때문에
컴파일 방식이 더 빠른 것임을 쉽게 이해할 수 있었다.

혼자 공부하는 컴퓨터 구조 + 운영체제 책을 읽고 정리하였습니다.