사람이 작성한 코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 것
코드 작성을 완료한 시점에서 컴퓨터가 이해할 수 있는 기계어로 바꾸는 방식이다.
x = 10 + 2
y = x + 4
위 코드를 컴파일하면 아래와 같아진다.
001001 11101 11101 1111111111111000
001000 00001 00000 0000000000001010
001000 00001 00001 0000000000000010
101011 11101 00001 0000000000000000
001000 00010 00001 0000000000000100
101011 11101 00010 0000000000000100
001001 11101 11101 0000000000001000
컴파일을 실행하는 도구
- C
- C++
- Go
- Rust
인터프리터로 실행되는 언어
코드를 한줄씩 읽어내려가며 실행하는 프로그램
코드를 사용하는 시점에서 한줄씩 컴퓨터가 이해할 수 있는 기계어로 변환한다.
- JavaScript
- SQL
- Python (스크립트 언어 겸 하이브리드 언어)
컴파일 + 인터프리트
코드 -> 바이트코드 -> 기계어
코드를 작성 완료한 시점에 중간 언어(바이트코드)로 변경하고,
코드를 사용하는 시점에서 중간 언어를 한줄씩 기계어로 변역한다.
- C#
- Java
컴파일 언어 | 스크립트 언어 | |
---|---|---|
속도 | 빠르다 | 느리다 |
기계어 변환시점 | 코드 작성 완료 시 | 코드 실행 시 |
멀티플랫폼 | 불가능(윈도우, 맥, 리눅스 각각 개발) | 가능(한번 개발로 여러 플랫폼에서 작동) |
보안 | 뚫기 어렵다 (배포 시점에서 기계어로 번역되기 때문) | 비교적 뚫기 쉽다(난독화 필요) |
개발 편의성 | 컴파일 해야 오류를 알 수 있어서 불편하다 | 코드를 바로 수정할 수 있다 |
하이브리드 언어는 스크립트 언어의 멀티플랫폼 장점과, 컴파일 언어의 속도를 동시에 가져가려는 언어이다.
위키백과
https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC_%EC%96%B8%EC%96%B4
https://medium.com/swlh/a-performance-comparison-between-c-java-and-python-df3890545f6d