인터프리터: 두 판 사이의 차이

(새 문서: 프로그래밍 언어로 된 코드를 입력받아, 자기가 그 코드에 적힌 프로그램의 내용을 수행하는 컴퓨터 프로그램. 마치 해당 프로그래...)
 
편집 요약 없음
2번째 줄: 2번째 줄:


지금은 상상하기 힘든 일이지만, [[컴파일러]] 기술이 발달하기 전에는 컴파일 결과로 나온 프로그램의 실행 속도보다 그 프로그램을 그냥 인터프리터로 돌리는 게 빨랐던 때도 있었다. [[BASIC]]과 같은 언어들이 그런 시절의 산실이라 할 수 있다. 물론 [https://twitter.com/sanxiyn/status/587174539987038209 현 세대의 컴파일러 기술은 더 이상 인간이 손으로 어셈블리 코드를 짜서는 따라잡을 수 없는 수준으로 발전]했기에, 지금의 인터프리터들은 컴파일된 실행 파일 수준으로 성능을 끌어올리기엔 많은 어려움이 있다.
지금은 상상하기 힘든 일이지만, [[컴파일러]] 기술이 발달하기 전에는 컴파일 결과로 나온 프로그램의 실행 속도보다 그 프로그램을 그냥 인터프리터로 돌리는 게 빨랐던 때도 있었다. [[BASIC]]과 같은 언어들이 그런 시절의 산실이라 할 수 있다. 물론 [https://twitter.com/sanxiyn/status/587174539987038209 현 세대의 컴파일러 기술은 더 이상 인간이 손으로 어셈블리 코드를 짜서는 따라잡을 수 없는 수준으로 발전]했기에, 지금의 인터프리터들은 컴파일된 실행 파일 수준으로 성능을 끌어올리기엔 많은 어려움이 있다.
정말로 매번 코드를 파싱해서 실행하는 식으로 동작하던 인터프리터도 많았지만, 실행 성능을 올리기 위해서 요즘은 [[Python]]이나 [[Ruby]] 같은 웬만한 [[스크립트 언어]]들도 [[바이트코드]] 컴파일 정도는 하고 있다. 좀 더 본격적으로는 [[Just-in-time 컴파일]]을 구현하는 경우도 있으며, [[JavaScript]]의 [[V8 엔진]], [[Python]]의 [[PyPy]], [[Lua]]의 [[LuaJIT]] 등이 좋은 예시이다.

2015년 4월 17일 (금) 06:10 판

프로그래밍 언어로 된 코드를 입력받아, 자기가 그 코드에 적힌 프로그램의 내용을 수행하는 컴퓨터 프로그램. 마치 해당 프로그래밍 언어가 기계어인 또 다른 컴퓨터처럼 동작한다는 점에서 가상 머신과 궤를 같이 한다고 볼 수도 있다.

지금은 상상하기 힘든 일이지만, 컴파일러 기술이 발달하기 전에는 컴파일 결과로 나온 프로그램의 실행 속도보다 그 프로그램을 그냥 인터프리터로 돌리는 게 빨랐던 때도 있었다. BASIC과 같은 언어들이 그런 시절의 산실이라 할 수 있다. 물론 현 세대의 컴파일러 기술은 더 이상 인간이 손으로 어셈블리 코드를 짜서는 따라잡을 수 없는 수준으로 발전했기에, 지금의 인터프리터들은 컴파일된 실행 파일 수준으로 성능을 끌어올리기엔 많은 어려움이 있다.

정말로 매번 코드를 파싱해서 실행하는 식으로 동작하던 인터프리터도 많았지만, 실행 성능을 올리기 위해서 요즘은 Python이나 Ruby 같은 웬만한 스크립트 언어들도 바이트코드 컴파일 정도는 하고 있다. 좀 더 본격적으로는 Just-in-time 컴파일을 구현하는 경우도 있으며, JavaScriptV8 엔진, PythonPyPy, LuaLuaJIT 등이 좋은 예시이다.