728x90
반응형
Compile Language
런타임 이전에 기계어 (혹은 Java의 경우 바이트코드) 로 변환되는 언어
- 어셈블리어는 CPU에 의존적이기 때문에, 컴파일된 코드들은 여러종류의 프로세서를 자유롭게 옮겨다니며 사용될 수 없다. (.exe, .dmg)
- 컴파일 이전의 소스코드도 운영체제별 특징이 있어 각각의 라이브러리를 요구한다.
- ex) C, C++, Java
- 자바는 런타임 전에 기계어가 아닌 바이트코드로 컴파일 되며, 런타임중에 기계어로 바뀐다. 하지만 컴파일 시점이 런타임 이전이기 때문에 컴파일언어에 속한다.
Interpreter Language
런타임중에 프로그램 한줄한줄을 해석하며 실행
- 파이썬의 경우 런타임중의 컴파일 과정에 렉서(lexer), 파서(parser) 를 거쳐서 바이트 코드를 만들어낸다
- 바이트코드는 가상머신(virtual machine) 위에서 돌아가기 때문에 어떤 CPU 위에서도 돌아갈 수 있다.
- Java, python 모두 바이트코드를 사용하기 때문에 vm(virtual machine)이 필요하다.
차이점
실행 단계의 차이
- 컴파일 언어는 ‘컴파일러’ 단계가 필요하고 인터프리터 언어는 별도의 ‘컴파일러’ 과정이 필요없음
생산 속도의 차이
- 컴파일 언어의 경우 ‘컴파일러’ 과정이 들어가기 때문에 인터프리터 언어보다 생산 속도가 느림
- 인터프리터 언어는 과정이 단순하기 때문에 생산 속도가 빠름
소스 코드 작성 제약사항
- 컴파일형 언어에는 소스 코드 작성을 위한 제약사항이 스크립트형 언어보다 더 많음
- 컴파일 언어는 사용해야 하는 변수의 자료 및 각종 문법에 따른 제약 사항들을 인지해야 함
디버깅
- 인터프린터 언어의 경우 소스 코드가 실행되기 전까지는 소스 코드의 버그를 인지하는 것이 어려움
실행 속도
- 실행 속도는 컴파일 언어가 훨씬 더 빠름
- 컴파일을 한 뒤에 생성된 파일에 의해 프로그램이 실행되기 때문에 번역기에 의해 번역이 되고 실행되는 인터프리터 언어에 비해 훨씬 빠름
- 실행 속도는 C언어, C++ -> Java -> Python 순으로 느려짐
- 연산 속도나 실행 속도에 민감한 프로그램은 인터프리터 언어로 개발하지 않음
728x90
반응형
'IT 기초 > General' 카테고리의 다른 글
MQTT vs CoAP (0) | 2021.12.29 |
---|