본문 바로가기

python

[파이썬(python)] python은 interpreter, Java는 complier

느리디 느린 프로그램 실행속도를 조금이나마 높여보고자 검색을 하다가, MOOC 플랫폼인 edwith에서 KAIST 김문주 교수님의 '파이썬 (Python) 으로 배우는 프로그래밍 기초 (CS101)''프로그램 속도 향상 방법'을 보게 되었습니다. 아래 글은 위 강의를 스스로 정리하기 위해 작성한 것입니다. 혹시 오류가 있다면 지적해주십시오.

 

컴퓨터는 코드를 직접 이해할 수 없어서 이를 컴퓨터 언어로 번역해주는 프로그램이 필요한데, 그 프로그램에는 C, C++, python 등 수없이 많습니다. 컴퓨터에게 코드를 번역해주는 방식에 차이가 있는데, 파이썬은 Interpreter(해석기)의 대표적인 프로그램이고, C, C++, Java는 Compiler에 해당합니다.

 

해석기는 코드를 한 줄 한 줄 컴퓨터 언어로 번역한 후 실행하는 과정을 반복합니다. 따라서 코드 작성자 입장에서 문제점이 어디에서 어떻게 발생하는지를 파악할 수 있는 점이 장점입니다. 하지만 이러한 과정으로 인해 속도가 저하됩니다.

반면 컴파일러는 모든 코드를 한 번에 번역한 후 한 번에 실행합니다. 그래서 속도는 빠르지만, 코드 작성자는 어디서 문제가 발생하는지 한 번에 알아내기 어려우므로 코드를 바꾸기가 불편하다는 단점이 있습니다.

 

강의에서 이를 비유한 예시가 이태리어로 작성된 요리책을 번역하는 방법입니다. 그때그때 필요한 요리를 하기 위해서는 그 요리에 관한 요리법(recipe)만 우리말로 번역하면 됩니다(interpreter). 하지만 요리책을 전부 번역해놓으면, 필요한 음식이 생기면 번역된 요리책을 보고 요리를 빨리 할 수 있습니다(compiler).

 

하지만 파이썬이 속도가 늦다고 해서 프로그램만 탓할 것이 아니라, 정교하고 효율적인 알고리즘을 짜는 것이 프로그램을 선택하는 것보다 훨씬 중요하다고 합니다. 그 예로 본 강의에서는 simple-sort, merge-sort를 드는데, 숫자를 정렬할 때 사용하는 방식에 따라 계산시간이 기하급수적으로 차이가 납니다.