본문 바로가기

컴퓨터 과학

컴파일러(Compiler)와 인터프리터(Interpreter)

728x90
C언어는 빠르고, python은 느리다?

컴퓨터와 소통하기

컴퓨터는 0과 1로 되어있는 정보만 이해할 수 있지만, 우리가 0과 1로 코딩하는 것은 너무 힘들다. 그렇다면 python과 같은 사람이 이해하기 쉬운 프로그래밍 언어로 코드를 작성하고 나중에 컴퓨터가 이해할 수 있는 0과 1로 바꾸는 것은 어떨까?

 

컴파일러(Compiler)와 인터프리터(Interpreter)가 바로 고수준의 언어로 작성된 소스 코드를 기계어로 번역해주는 역할을 하며, 이 두 가지 방식에는 차이점이 있다.

기계어란?
CPU가 직접 해석하고 실행할 수 있는 명령어로 CPU 아키텍쳐마다 다를 수 있다.

컴파일러

컴파일러는 소스 코드를 한 번에 기계어로 변환한 뒤 실행한다. 대표적인 컴파일 언어로 C, C++ 등이 있으며, 컴파일 과정은 언어별로 다를 수 있다. 대표 예시로 C 언의 컴파일 과정을 살펴보면 아래의 이미지와 같다.

 

C 언어의 컴파일 과정

 

1. 전처리(Preprocessing)

전처리 단계에서 소스코드에 포함된 #으로 시작하는 전처리 지시자를 처리한다.

2. 컴파일(Compilation)

컴파일 단계에서는 전처리된 소스 코드를 CPU에 맞는 어셈블리 코드로 변환한다.

3. 어셈블리(Assembly)

어셈블리 단계에서는 어셈블리 코드를 기계어로 구성된 목적 코드로 변환한다.

4. 링크(Linking)

링크 단계에서는 여러 목적 코드와 라이브러리를 합쳐서 실행 가능한 (기계어로 이루어진) 바이너리 파일을 생성한다.(.exe, .out)

어셈블리어란?
사람이 이해하기 쉬운 기호와 명령어를 사용하는 저수준 프로그래밍 언어다. 기계어랑 거의 1:1로 대응된다.

인터프리터

인터프리터는 코드를 한 줄 씩 기계어로 해석하며 실행한다. 대표적인 인터프리터 언어로는 파이썬이 있다.

 

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

컴파일 언어 인터프리터 언어
코드가 실행되기 전에 한 번에 기계어로 변환 후 실행 코드가 실행된 이후 한 줄 씩 기계어로 변환 후 실행
실행 파일 O (ex. exe) 실행 파일 X (ex. .py)
실행 속도는 빠르지만 큰 프로그램일 경우 컴파일 시간이 오래 걸릴 수 있다. 실행 속도가 비교적 느리다.
실행 전에 오류를 발견할 수 있다. 실행 중에 오류를 발견할 수 있다.

참고 및 출처

https://jhyonhyon.tistory.com/18

https://cassislagos.medium.com/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-vs-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-8d0c642518a0

https://velog.io/@jhur98/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%ACcompiler%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0interpreter%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

 

반응형

'컴퓨터 과학' 카테고리의 다른 글

ASCII 유니코드 UTF-8?  (1) 2024.06.13
2진법 10진법 16진법  (0) 2024.06.13