본문 바로가기

공부

인터프리터 언어(JavaScripts) vs 컴파일 언어(Java)

컴파일 언어
개발자가 작성한 코드를 컴퓨터가 사용하는 기계어로 번역하고 이 코드를 한번에 실행한다. 번역은 컴파일러가 수행한다. 대표적인 언어로 C, C++. java, Go 등이 있다. 런타임 상황에서 이미 기계어로 모든 내용이 번역되어 있기 때문에 인터프리터 언어에 비해 실행 속도가 빠르다. 컴파일 과정에서 오류 검사가 이루어져 오류가 있으면 실행도 되지않기 때문에 안정적이고 효율적인 프로그램을 만들 수 있다. 규모가 큰 프로그램은 컴파일이 완료되기까지의 시간이 오래 걸릴 수 있으며, 이 때문에 인터프리터 언어에 비해 개발 속도가 느릴 수 있다. 하지만 컴파일이 완료된 이후에는 빠르게 실행할 수 있다. 기계어로 번역된 코드를 배포하므로 보안상 안전한다.

 

인터프리터 언어
코드를 한줄씩 읽어가며 실행하므로 별도 빌드 시간이 없다. 문법적 오류가 있어도 실행은 되기 때문에 프로그램을 실행하기 전에 오류를 발견하기 어렵다. 하지만 오류가 생긴 부분 부터 실행되지 않는 점은 코드 수정에 유리해 개발 속도가 컴파일 언어에 비해 상대적으로 빠르다. 컴파일 언어보다 유연해 배우고 코딩하기 쉽다.  대표적인 언으로 R, Python, Ruby, JavaScript가 있다. 인터프리터 언어는 실행 시 마다 소스 코드를 해석해야하므로 실행 속력이 느리나 최근에는 하드웨어 성능이 좋아지며 실행이 빨라지고 있다. 또한 컴파일 언어보다 문법이 쉽고 해당 플랫폼 위에서 구동되기 때문에 보안에 취약하다는 약점이 있어 따로 보안을 위한 작업이 필요하다. 바이트 코드

 
 

컴파일 언어와 인터프리터 언어 '상대적인' 비교
컴파일 언어인터프리터 언어
소스 코드 전체를 한번에 기계어로 번역 후 실행코드를 한 줄 씩 읽으며 실행
실행 파일 생성 x실행 파일 생성 o
빌드시간은 길지만 코드 컴파일 후 실행 시간 짧음빌드시간 없지만 실행할 때 마다 코드 해석해야해 느림
C, C++. java, GoR, Python, Ruby, JavaScript
컴파일러로 인해 문법오류 있으면 처음부터 실행 x문법오류 있어도 일단 실행, 오류 발생 시 실행 멈춤
개발 기간 오래 걸림개발 기간 짦음
보안에 강함보안에 약함
배우기 어려움배우기 쉬움