[리눅스] 컴파일러 vs 인터프리터 차이

업데이트:

[리눅스] 컴파일러 vs 인터프리터 차이

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

관련 링크

1. 컴파일러(compiler)

컴파일러(compile)는 특정 프로그래밍 언어로 쓰여있는 문서를 다른 프로그래밍 언어로 옮기는 언어 변역 프로그램을 말합니다. 예를 들어 C로 작성한 소스코드가 있다고 하면 컴파일러는 이를 어셈블리 언어와 같은 다른 언어로 번역해줍니다. 이때, C로 작성한 소스코드는 고급 프로그래밍 언어라고 하며, 어셈블리 언어는 저급 프로그래밍 언어라고 합니다. 즉, 컴파일러는 고급 프로그래밍 언어를 저급 프로그래밍 언어로 바꿔주는 역할을 하며, 컴파일 되기 전 코드를 원시코드(source code)라고 하며, 컴파일 된 이후의 코드를 목적코드(object code)라고 합니다.

즉, 원시코드는 컴파일러의 인풋이 되는 것이고 목적코드는 컴파일러의 아웃풋이 되는 것입니다. 정확히 말하면 목적코드(object code)는 머신 코드(machine code)의 실행가능한 버전이라고 생각하면 됩니다.

2. 인터프리터(interpreter)

인터프리터(interpreter)란 프로그래밍 언어의 원시코드를 바로 실행하는 컴퓨터 프로그램을 말합니다. 앞서 원시코드는 고급 프로그래밍 언어라고 했는데, 인터프리터는 원시코드의 내용을 한번에 한줄씩 읽어들여서 실행합니다.

인터프리터의 장점은 컴파일 단계를 거칠 필요가 없다는 장점이 있지만 컴파일러를 사용한 것보다 느리다는 단점이 있습니다.

3. 컴파일러 vs 인터프리터

컴파일러나 인터프리터 둘다 영어와 같은 인간의 언어로 작성한 코드를 컴퓨터가 이해할 수 있도록 변환시킨다는 점에서는 같습니다. 그러나 둘 사이에는 다음과 같은 차이가 있습니다.

먼저 인터프리터는 소스 코드를 한 줄씩(one statement) 해석하지만, 컴파일러는 전체 프로그램 코드(entire program code)를 스캔하고 코드 전체를 통째로 목적코드로 한번에 변환 시킵니다.

그리고 인터프리터는 소스 코드를 해석하는데는 적은 시간이 걸리지만 실행 시간은 느립니다. 반면 컴파일러는 소스코드를 해석하는데는 많은 시간이 걸리지만 실행 시간은 빠릅니다.

인터프리터 언어의 종류에는 루비, 파이썬 등이 있고 컴파일 언어의 종류에는 C, C++ 등이 있습니다.

태그:

카테고리:

업데이트: