Difference between revisions of "파이썬"

Jump to navigation Jump to search
Line 39: Line 39:


== PyPy ==
== PyPy ==
본격 Python으로 직접 구현되는 Python. 언뜻 보면 CPython보다 느릴 것 같지만 실제로는 더 빠른 실행결과도 보여주는 흠좀무한 녀석이다. 어떠한 외계의 기술이 적용되어서 이것이 가능한지는 [[PyPy]] 문서를 참조하라.
본격 Python으로 직접 구현되는 Python. 언뜻 보면 CPython보다 느릴 것 같지만 실제로는 더 빠른 실행결과도 보여주는 흠좀무한 녀석이다. 어떠한 외계의 기술이 적용되어서 이것이 가능한지는 [[파이파이]]([[PyPy]]) 문서를 참조하라.




2007년에 처음 발표된 [[Python]]의 언어 구현 중 하나로, [[C]]로 짜인 기존의 CPython과 달리 '''Python으로 Python을 만드는 프로젝트'''이다. [[부트스트래핑]]이라고 한다. 여기까지 얘기하면 뭔가 이상한 짓 하는 프로젝트 내지 실험적인 프로젝트처럼 느껴지겠지만, 이 프로젝트의 진짜 놀라운 점은 기존 CPython보다 전혀 느리지 않을 뿐더러, '''오히려 성능면에서 CPython을 능가하고 있다는 거다.''' 나아가 [[http://speed.pypy.org/|이 링크]]에서 보이는 대로, '''계속해서 빨라지고 있다!'''
2007년에 처음 발표된 [[Python]]의 언어 구현 중 하나로, [[C]]로 짜인 기존의 CPython과 달리 '''Python으로 Python을 만드는 프로젝트'''이다. [[부트스트래핑]]이라고 한다. 여기까지 얘기하면 뭔가 이상한 짓 하는 프로젝트 내지 실험적인 프로젝트처럼 느껴지겠지만, 이 프로젝트의 진짜 놀라운 점은 기존 CPython보다 전혀 느리지 않을 뿐더러, '''오히려 성능면에서 CPython을 능가하고 있다는 거다.''' 나아가 http://speed.pypy.org/ 에서 보이는 대로, '''계속해서 빨라지고 있다!'''


표준 구현인 CPython과의 속도비교. http://speed.pypy.org/ PyPy를 개발하면서 지속적으로 업데이트 하고 있다.
표준 구현인 CPython과의 속도비교. http://speed.pypy.org/ PyPy를 개발하면서 지속적으로 업데이트 하고 있다.




이 구현은 애초에 그저 장난질 하려고 시작한 프로젝트가 아니다. [[http://psyco.sourceforge.net/|Psyco]]라고 하는, 기존 파이썬 위에다가 [[JIT|Just-In-Time]] 컴파일을 구현해서 실행성능을 높히는 프로젝트가 있었는데, 이걸 개발하던 [[http://codespeak.net/~arigo/|Armin Rigo]]라는 사람이 아예 JIT 컴파일을 하는 파이썬을 처음부터 다시 구현하기로 생각했다. 그래서 2003년부터 PyPy 개발을 시작하여 [[유럽연합]]의 연구자금 지원을 받아가며 지금도 개발하고 있다.
이 구현은 애초에 그저 장난질 하려고 시작한 프로젝트가 아니다. [[Psyco]]( http://psyco.sourceforge.net/ )라고 하는, 기존 파이썬 위에다가 [[JIT]]([[Just-In-Time]]) [[컴파일]]을 구현해서 실행성능을 높히는 프로젝트가 있었는데, 이걸 개발하던 [[Armin Rigo]]( http://codespeak.net/~arigo/ )라는 사람이 아예 JIT 컴파일을 하는 파이썬을 처음부터 다시 구현하기로 생각했다. 그래서 2003년부터 PyPy 개발을 시작하여 [[유럽연합]]의 연구자금 지원을 받아가며 지금도 개발하고 있다.


2017년 8월 기준으로, PyPy3는 윈도우 바이너리가 없으므로 리눅스 바이너리를 실행시켜야 한다. 윈도우 10이라면 1주년 업데이트에 포함된 리눅스 배시 기능을 쓰거나, 윈도우로 리눅스 어플리케이션을 돌리는 프로그램을 이용할 수도 있다.
2017년 8월 기준으로, PyPy3는 윈도우 바이너리가 없으므로 리눅스 바이너리를 실행시켜야 한다. 윈도우 10이라면 1주년 업데이트에 포함된 리눅스 배시 기능을 쓰거나, 윈도우로 리눅스 어플리케이션을 돌리는 프로그램을 이용할 수도 있다.