PyPy: О чем весь шум? [закрытый]

Примечание: Заголовок является сознательно провокационным (чтобы заставить Вас нажать на него, и хотят к голосованию завершения вопрос), и я не хочу выглядеть озабоченным.

Я читал и слышал все больше о PyPy. Это похоже на линейный график.

  • Почему PyPy является настолько особенным? Насколько я знаю, что реализации динамических языков, записанных на языках самостоятельно, не являются такой редкой вещью, или разве я не получаю что-то?

  • Некоторые люди даже называют PyPy "будущим" [Python] или видят своего рода глубокий потенциал в этой реализации. Каково точно значение этого?

42
задан mXed 18 February 2012 в 17:39
поделиться

4 ответа

Поскольку большинство из нас согласны с тем, что писать Python проще, чем C, интерпретатор Python, написанный на Python (ну, технически RPython), должен быть изменен намного проще и с меньшим количеством ошибок, чем CPython.

4
ответ дан 26 November 2019 в 23:39
поделиться

Не говоря уже о том, что совсем недавно они превзошли скорость CPython в некоторых бенчмарках. См. их блог, я думаю. Я не могу добраться до него отсюда:

http://morepypy.blogspot.com/

5
ответ дан 26 November 2019 в 23:39
поделиться

Самое интересное в PyPy (помимо того, что он быстрый и написан на RPython (подмножество языка Python), поэтому в основном загружается), это то, что он может предоставлять автоматически созданный JIT (своевременный компилятор) для любой программы, которую вы пишете на PyPy: это делает его идеальным для быстрой реализации вашего собственного языка и при этом он будет довольно быстрым.

Подробнее здесь

10
ответ дан 26 November 2019 в 23:39
поделиться

Хорошая вещь, которую следует знать, говоря о проекте PyPy, это то, что он нацелен на предоставление двух результатов: первый - это генератор JIT-компиляторов. Да, генератор, что означает, что они создают основу для написания реализаций высокодинамичных языков программирования, таких как Python. Второй - это собственно тест этого фреймворка, и это реализация интерпретатора Python PyPy.

Сейчас есть несколько ответов, почему PyPy такой особенный: разработка проекта ведется с 2004 года, начата как исследовательский проект, а не как компания, переизобретает Python на Python, реализует JIT-компилятор на Python и может переводить RPython (код на Python с некоторыми ограничениями, чтобы фреймворк мог перевести этот код на C) в скомпилированные двоичные файлы.

Текущая версия PyPy на 99% совместима с CPython версии 2.5, и может запускать Django, Twisted и многие другие программы на Python. Раньше существовало ограничение, связанное с невозможностью запуска существующих расширений CPython C, но это также решается с помощью модуля cpyext в PyPy. Совместимость с C API возможна и в некоторой степени уже реализована. JIT также вполне реален, см. это сравнение с pystone.

С CPython:

Python 2.5.5 (r255:77872, Apr 21 2010, 08:44:16) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 12.28
This machine benchmarks at 81433.2 pystones/second

С PyPy:

Python 2.5.2 (75632, Jun 28 2010, 14:03:25)
[PyPy 1.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``A radioactive cat has 18
half-lives.''
>>>> from test import pystone
>>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 1.50009
This machine benchmarks at 666625 pystones/second

Таким образом, вы можете получить почти 10-кратное ускорение, просто используя PyPy для некоторых вычислений!

Итак, поскольку проект PyPy постепенно созревает и предлагает некоторые преимущества, он вызывает все больший интерес у людей, пытающихся решить проблемы скорости в своем коде. Альтернативой PyPy является unladden swallow (проект Google), цель которого - ускорить реализацию CPython, используя возможности LLVM по JIT, но прогресс в работе над unladden swallow был замедлен, потому что разработчику нужно было разобраться с ошибками в LLVM.

Итак, подводя итог, я полагаю, что PyPy считается будущим Python, потому что он отделяет спецификацию языка от реализации VM. Функции, введенные в, например, stackless Python, могут быть реализованы в PyPy с очень небольшими дополнительными усилиями, потому что это просто изменение спецификации языка, а общий код остается прежним. Меньше кода, меньше ошибок, меньше слияний, меньше усилий.

А написав, например, новую реализацию оболочки bash в RPython, вы можете бесплатно получить JIT-компилятор и ускорить многие скрипты оболочки linux, не изучая никаких тяжелых знаний о JIT.

47
ответ дан 26 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: