Python или IronPython - PullRequest
       26

Python или IronPython

31 голосов
/ 26 февраля 2009

Как IronPython складывается с реализацией Python для Windows по умолчанию из python.org? Если я изучаю Python, буду ли я учить немного другой язык с IronPython и без каких библиотек я буду обходиться?

Есть ли альтернативы IronPython (не включая скомпилированные классы .NET IL), которые сделали бы его более привлекательным вариантом?

Ответы [ 8 ]

30 голосов
/ 26 февраля 2009

Есть ряд важных отличий:

  1. Взаимодействие с другими языками .NET. Вы можете использовать другие библиотеки .NET из приложения IronPython или использовать IronPython из приложения C #, например. Эта функциональная совместимость возрастает с ростом поддержки динамических типов в .NET 4.0. Подробнее об этом см. эти две презентации на PDC 2008.
  2. Лучшая поддержка параллелизма / многоядерности из-за отсутствия GIL. (Обратите внимание, что GIL не запрещает многопоточность на одноядерном компьютере - он ограничивает производительность только на многоядерном компьютере.)
  3. Ограниченная возможность использования расширений Python C. Проект Ironclad делает значительные шаги в направлении улучшения этого - они уже почти Numpy работают!
  4. Меньше кроссплатформенной поддержки; в основном, у вас есть CLR и Mono . Mono впечатляет и работает на многих платформах - и у них есть реализация Silverlight, называемая Moonlight .
  5. Отчеты об улучшении производительности, хотя я не рассматривал это внимательно.
  6. Отставание возможностей: поскольку CPython является эталонной реализацией Python, он обладает «самыми последними и лучшими» возможностями Python, тогда как IronPython обязательно отстает. Многие люди не считают это проблемой.
13 голосов
/ 26 февраля 2009

Существуют некоторые тонкие различия в том, как вы пишете свой код, но самое большое различие заключается в доступных библиотеках.

С IronPython у вас есть все библиотеки .Net, но за счет некоторых «обычных» библиотек python, которые не были перенесены на .Net VM, я думаю.

По сути, вы должны ожидать, что синтаксис и идиомы будут одинаковыми, но скрипт, написанный для IronPython, не запустится, если вы попытаетесь передать его «обычному» интерпретатору Python. Скорее, наоборот, но и там вы найдете различия, я думаю.

6 голосов
/ 26 февраля 2009

Ну, как правило, быстрее.

Не может использовать модули и имеет только подмножество библиотеки.

Вот список отличий.

3 голосов
/ 26 февраля 2009

Смотрите сообщение в блоге IronPython - это односторонние ворота . В нем кратко изложены некоторые вещи, которые я узнал о IronPython, задавая вопросы о StackOverflow.

2 голосов
/ 26 февраля 2009

Pro: вы можете запустить IronPython в браузере , если установлен SilverLight.

2 голосов
/ 26 февраля 2009

Одним из плюсов IronPython является то, что, в отличие от CPython, IronPython не использует глобальную блокировку интерпретатора, что повышает эффективность потоков.

В стандартной реализации Python потоки получают GIL при каждом доступе к объекту. Это ограничивает параллельное выполнение, что особенно важно, если вы ожидаете полностью использовать несколько процессоров.

2 голосов
/ 26 февраля 2009

Python - это Python, единственное отличие состоит в том, что IronPython был разработан для работы на CLR (.NET Framework) и поэтому может взаимодействовать и использовать сборки .NET, написанные на других языках .NET. Так что, если ваша платформа - Windows, и вы также используете .NET или ваша компания, то следует рассмотреть IronPython.

0 голосов
/ 26 февраля 2009

Это также зависит от того, хотите ли вы, чтобы ваш код работал в Linux. Не знаю, будет ли IronPython работать на любых платформах под Windows.

...