본문 바로가기
[Development]/ProgrammingTerm

[ CS ] 프로그래밍 언어의 종류(인터프리터/컴파일 언어)

by Inkim 2019. 8. 18.

cf. 기계어

(개념)

컴퓨터가 사용하는 0, 1로 이루어진 언어

 

(배경)

① 생산성, 기기간 호환성, 디버깅 등 많은 측면에서 비효율적

→ 추상화 된 고수준 언어 작성 및 번역기(컴파일러)로 번역하는 방식의 필요성 대두

② 0,1 패턴으로 이루어진 명령(Instruction)을 컴퓨터에게 전달하기 위해 인간이 이해 및 작성가능한 언어 등장.

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

③ 현재 다수 프로그램은 컴파일러를 통해 전체 소스코드를 기계어로 번역 후 작동

 

 

※ 인터프리터 언어(Interpreted Language)

(개념)

원시코드의 기계어 변환 과정 없이 작성된 코드 1줄 단위로 실행하는 언어

 

(특징)

① 인터프리터가 코드를 빌드과정 없이 한 줄씩 읽고 기계어 변환, 바로 실행하므로 빌드 시간 소요 x

→ Runtime 상황에서 중간 매개체인 인터프리터가 한 줄 씩 읽고 실행하므로 컴파일 언어에 비해 실행 속도 느림

→ 번역 결과 캐싱 또는 JIT 방식을 통해 실행 속도를 컴파일 언어 근접하게 따라잡았음.

② 프로그램 수정의 용이함.

 코드 변경 시, 빌드 과정없이 바로 실행 가능. 서버 재기동 필요 x

→ 컴파일러는 소스 수정 후, 재컴파일 후 수정된 실행 파일 생성 과정 추가

→ 수정이 빈번한 프로그램 용도는 인터프리터 언어 사용.

③ 크로스플랫폼 

④ 문법 오류는 패스하고 진행하므로 디버깅에 유리.

→ 문법 오류가 포함된 버전 출시 가능성 ↑

⑤ 대화식 프로그래밍 가능

 

※ 인터프리터

(개념)

코드를 한줄 씩 기계어로 번역하는 방식의  기계어 번역 프로그램 

→ Like , 통역기

 

 컴파일 언어(Complied Language)

(개념)

원시코드에서 컴파일되는 언어. 

기계어로 구성된 목적 프로그램(실행 파일) 생성 후 가상머신(ex. JVM) 등을 통해 실행.

 

(특징)

① 원시코드를 기계어로 번역하는 빌드 과정 소요.

→ 작성된 소스코드 (ex .cpp 또는 .java) 파일에서 컴파일러를 통해 (ex .exe 또는 .class)  실행파일 생성

→ Runtime 상황에서 전체 소스코드가 기계어로 변환된 상태이므로 빠른 실행 가능

② 코드 변경 시, 빌드 과정으로 인한 시간 소요

 수정이 빈번한 부분은 인터프리터 언어로 따로 작성할 필요성

③ 각 컴퓨터별 프로세스 및 운영체제 종속적

→ 컴파일 코드는 플랫폼 종속적

④ 코드상 문법 오류 발생 시, 컴파일러는 컴파일 거부

→ 오류 발견 시간이 빠름.

※ 컴파일러

(개념)

특정 언어 A로 쓰여진 소스 파일을 다른 언어 B로 변환해주는 프로그램 

타 프로그램이나 하드웨어가 처리하기 용이한 언어로 변환한 목적 코드(목적 프로그램) 생성.

→ Like, 번역기

 

(특징)

컴파일 작업 결과물(목적 코드) + 라이브러리화 → 종합된 총 결과물을 '링커' 프로그램이 '링킹' 실행함.

 

※ 빌드(Build)

(개념)

소스코드 파일을 실행파일로 생성하는 과정.

= 고급어→ (변환) → 저급어 변환을 통한 실행 파일 생성.

 

(특징)

① 인터프리터 언어는 빌드 과정 없이 인터프리터가 고급언어에서 한 줄 씩 읽고 명령 수행.

② 컴파일 언어는 빌드 과정을 통해 실행파일(ex. .class) 생성 후 실행.

 

참고링크

https://brownbears.tistory.com/55

 

인터프리터와 컴파일러

인터프리터란? 컴파일러와는 다른 방식으로 코드를 기계어로 번역해 주는 프로그램. 스크립트 언어의 사실상 전부가 인터프리터 방식이고 각종 DSL(도메인 특화 언어)의 해석 엔진도 인터프리터로 구현된다. 코드..

brownbears.tistory.com