Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

느릿느릿 프로그래밍

[프로그래밍 언어] 컴파일러, 인터프린터 본문

프로그래밍

[프로그래밍 언어] 컴파일러, 인터프린터

김슈달 2019. 10. 11. 09:09
반응형

|컴파일러, 인터프린터를 왜 쓰지?

왜냐면 컴퓨터는 이진수만 이해 할 수 있기 때문이다!

100010101과 같은 0과 1의 조합만을 이해한다.

여기서 0과 1을 이해한다는 말은, CPU에 전기가 들어 올 때의 전압의 강도를 의미한다.

전압이 크면 1, 작으면 0으로 보고 이 조합에 따라 다른 명령어를 실행한다는 의미.

 

이렇게 CPU가 이해 할 수 있는 명령어의 모음을 기계어 셋(instruction set)이라 한다.

요 기계어는 어디서 올까? CPU 회사에서 온다. CPU가 이해할 수 있는 명령어니까..

그래서 회사나 버전 마다 이 기계어가 다를 수 있다.

 

그런데 우리는 프로그램을 만들 때 우리가 이해할 수 있는 언어로 작성한다.

var name = "sudal";

이런 식으로, 우리가 알아들을 수 있는 영어와 같은 고급언어로 작성한다.

그러나 이건 0과 1의 조합이 아니기 때문에 컴퓨터가 알아들을 수가 없다.

 

그래서 우리가 고급언어로 작성한 프로그램을 컴퓨터가 알아들을 수 있는 기계어로 번역해주는 친구들이

컴파일러와 인터프린터이다.

이 둘은 고급언어를 기계어로 변환하는 시기에 따른 차이점을 가지는데, 이건 밑에서 보도록 하자.

 

 

|컴파일러

컴파일러는 전체 소스 코드를 보고 재구성, 다른 언어로 변환한다.

이 언어는 기계어가 될 수도 있고, 다른 언어가 될 수도 있다.

Java->C 언어로의 번역도 가능하다는 의미이다.

 

|인터프린터

인터프린터는 한줄씩 번역한다. 고레벨 언어를 중간 코드로 변환, 이거를 행마다 실행해준다 -> 이 중간코드가 다른 프로그램에 의해 실행.

 

|비교

일반적으로 컴파일러가 실행 시간이 빠르다.

컴파일러는 전체 소스코드 변환 뒤 에러 보고, 인터프린터는 각 행마다 실행하다가 에러 발견되면 이후 코드 보지 않음. 보안적 관점에서는 인터프린터가 도움이 된다.

 

인터프린터 언어 : 파이썬

컴파일러 언어 : C, C++

하이브리드 언어(컴파일러+인터프리터) : 자바

 

보통 위와 같이 구분되는데, 요즘은 구현 방식에 따라 같은 언어여도 하이브리드 과정으로 번역되기도 하는 것 같다.

 

 

참고

...더보기

 

반응형
Comments