일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 프론트엔드
- 연결리스트
- RT scheduling
- pytorch
- 이진탐색
- RxJS
- 컨테이너
- 코딩테스트
- 해시테이블
- 큐
- C
- 타입스크립트
- 릿코드
- 웹팩
- APOLLO
- 프로세스
- 브라우저
- vue3
- 스택
- 포인터
- 연결 리스트
- 자료구조
- 배열
- 자바스크립트
- cors
- alexnet
- 알고리즘
- GraphQL
- Machine Learning
- Today
- Total
프린세스 다이어리
인터프리터 언어(Interpreter Language) vs 컴파일 언어(Compiled Language) 본문
인터프리터 언어
소스코드를 한 줄 한 줄 읽어가며 명령을 바로 처리하는 프로그램(언어). 번역과 실행이 동시에 이루어진다.
- 인터프리터(interpreter)란, 우리말로 '통역사'라는 뜻임. 우리가 컴퓨터에 명령을 내리면 한 줄씩 즉시 통역사가 컴퓨터 언어로 바꿔주는 거라고 생각하면 됨.
- 규모가 큰 소스의 경우, 컴파일 언어는 프로그램 실행 전 먼저 기계어로 컴파일하는 데 시간이 오래 걸릴 수 있는데 인터프리터 언어는 코드를 한 번에 한 줄씩 읽어 들이면서 바로 실행이 가능함.
- 즉, 한 줄 씩 명령을 내리다 보니, 그 명령 자체의 속도는 컴파일러 언어에 비해 느림.
- 그래도 인터프리터 언어는 고급 프로그램을 즉시 실행시킬 수 있어 프로그램 수정이 간단함.
예시: 자바스크립트, 파이썬, 루비, sql,...
컴파일 언어
소스코드를 한꺼번에 다른 목적 코드로 번역한 후, 한 번에 실행하는 프로그램(언어).
- 컴퓨터 하드웨어(cpu)가 알아들을 수 있는 로우 레벨 언어(예, 어셈블리 언어, object 코드, machine code)로 번역됨. 이후 컴파일하게 되면 실행 가능한(바이너리) 파일(프로그램)이 생성됨. 즉 번역과 실행이 따로 이루어짐.
- 한 줄씩 명령을 내리는 게 아니라, 명령들을 다 모아놓고 한 번에 실행하는 방식임. 코드를 다 적고 나서 한꺼번에 검사하는 형태라고 보면 됨.
- 규모가 큰 소스의 경우, 컴파일된 프로그램의 경우 일반적으로 인터프리터를 이용해 실행시키는 것보다 훨씬 빠르게 동작 하나, 컴파일 과정에서는 시간이 상당히 많이 소요되고 메모리도 많이 차지함.
- 소스코드를 기계어로 번역하는 과정이 빌드 과정. 고급언어 ---(변환)--> 로우 레벨 언어(기계어) 이런 빌드 과정을 거쳐서 실행파일을 생성함
예시: C, C++, C#, Go,...
*프로그래밍 언어도 또 다른 프로그램이다.
*컴파일러: compiler, 특정 프로그래밍 언어를 다른 프로그래밍 언어로 옮기는 프로그램
*자바 같은 경우에는 자바 컴파일러와 자바 인터프리터가 있음. 자바 컴파일러는 .java라고 쓰인 소스 파일을 .class 파일로 변환해줌. 자바 인터프리터는 바이트코드로 작성된 클래스 파일을 특정 환경의 기계에서 실행될 수 있도록 기계어로 변환해줌. 그래서 자바는 컴파일 언어라고만 볼 수 없음
'개발' 카테고리의 다른 글
깃헙에 반영되지 않은 예전 커밋 잔디심는 방법 (0) | 2021.11.12 |
---|---|
vscode에서 건드리지 않은 파일이 깃의 changes에 올라올 때 해결법 - cache 삭제 (0) | 2021.10.22 |
프록시(프락시) 서버 뜻, 프록시의 종류 및 URI 확장에 대해 정리 (0) | 2021.10.09 |
반복문에서 변수명으로 i, j, k, ... n을 사용하는 이유 (0) | 2021.09.23 |
동적 타입 언어(statically typed languages) vs 정적 타입 언어(dynamically typed languages) (1) | 2021.09.07 |