컴파일러와 인터프리터

DW J·2022년 7월 27일
0

computer_science

목록 보기
4/7

컴파일러와 인터프리터란?

컴퓨터는 사람이 작성한 프로그래밍언어를 그대로 사용할 수 없다
왜냐하면 컴퓨터는 0과 1로 작성 된 언어를 사용하기 때문이다
그렇기 때문에 사람이 사용하는 언어를 컴퓨터가 읽을 수 있는 언어로 번역하는 과정이 필요한데
컴파일러와 인터프리터는 사람이 작성한 프로그래밍 언어를 기계어로 변환해주는 번역기 역할을 한다

사람이 사용하는 언어 > 고급언어 (프로그래밍 언어)
고급언어의 종류 : C, C++, JAVA, JavaScript 등등..

컴퓨터가 사용하는 언어 > 저급언어 (0 또는 1)
저급언어의 종류 : 어셈블리어, 기계어

  • 번역순서
    프로그래밍언어 > 어셈블리어 > 기계어

컴파일러와 인터프리터 모두 번역을 하지만 번역을 하는 방식에서
차이가 있기 때문에 어떻게 차이가 있는지 확인해보자

1. 컴파일러

작성한 코드를 컴퓨터로 실행 가능한 코드로 컴파일 뒤 실행파일을 생성시킨다
컴파일 도중 컴파일러는 이러한 코드의 명령을 어떤 순서에 맞게 프로세서에 전달해야 하는지
결정을 하게 되며 효율적이게 최적화시킨다
또한 또 다른 명령을 기다릴 필요가 없다면 프로세서는 이러한 명령을 병렬로 처리하게 된다

장점
한번에 컴파일러를 실행하여 처음에는 속도가 느리지만 컴파일을 마친 파일은 더 빨라지게 된다
규모가 크거나 코드 자체가 긴 경우에는 효과적이다
컴파일 후 생성 된 코드는 더 효과적이고 최적화가 되어있다

단점
컴파일 된 파일은 Windows, Mac, Linux와 같이 OS에 의존적이다
ex) Window에서 컴파일한 파일을 Mac에서 실행하려면 Mac OS에 맞게 다시 컴파일 해야한다
개발 및 버그 fix 과정에서 신경을 써야한다
ex) 코드가 바뀌거나 수정 된다면 다시 컴파일을 해줘야 한다

컴파일을 사용하는 언어 종류
C, C++, Pascal, Delphi, Modula, COBOL, Fortran 등등..

2. 인터프리터

실시간으로 코드를 읽고 컴퓨터에게 전달해준다
한번에 모든 코드를 전달하는 것이 아닌 한줄 씩 번역하여 프로세서에게 전달, 실행 된다
작업은 코드가 끝날 때 까지 실행되고 작업 중 에러를 만나게 되면 곧바로 중지하여 에러를 표시한다
개발자는 어떤 부분에서 에러가 발생했는지 빠르게 파악하여 대처할 수 있다
인터프리터는 추가로 실행파일을 생성하지 않는다
그렇기 때문에 인터프리터는 따로 기계어로 변환하지 않는다
프로그래밍 언어와 기계 사이에 중재자 역할을 한다
인터프리터는 실시간으로 코드를 한 줄씩 읽고 분석한 뒤 상응하는
루틴을 인터프리터 자신의 Libaray를 통해 프로세서가 원하는 행동을 수행한다

장점
실시간으로 한 줄씩 코드를 읽고 프로세서에게 전달하기 때문에 에러 발생시 즉각 표시한다
그렇기 때문에 개발자는 빠르게 에러를 수정할 수 있다

단점
실시간으로 한 줄씩 코드를 읽기때문에 빠르게 보일 수 있으나 결과적으로 컴파일러보다 느리다
읽는도중 코드가 변경되면 처음부터 다시 순서대로 읽기때문에 비효율 적이다

인터프리터를 사용하는 언어 종류
JavaScript, PHP, Python, LISP, Perl 등등..

C#, Java는 JIT(Just-inTime) 컴파일러를 사용
JIT(Just-inTime) 컴파일러 : 컴파일러 + 인터프리터가 결합 된 하이브리드 컴파일러


참고

https://allprogrammertistory.com/entry/%EC%96%B4%EC%85%88%EB%B8%94%EB%9F%AC%EC%99%80-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

https://ko-de-dev-green.tistory.com/20

https://www.youtube.com/watch?v=Dx2tSsd3aFc

profile
잘하는것보다 꾸준히하는게 더 중요하다

0개의 댓글