Python - дилемма IronPython - PullRequest
       13

Python - дилемма IronPython

15 голосов
/ 10 сентября 2009

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

  1. Какова связь между реализацией Python C (основная версия из python.org) и IronPython, с точки зрения совместимости языка? Это тот же язык, и я, изучая один, смогу плавно переходить на другой, или это Java на JavaScript?

  2. Что такое текущий статус для библиотек IronPython? Насколько он отстает от библиотек CPython? В основном меня интересуют numpy / scipy и f2py. Они доступны для IronPython?

  3. Каков наилучший способ доступа к VB из Python и наоборот (если точнее подключить некоторые библиотеки python к VBA в Excel)?

Ответы [ 5 ]

18 голосов
/ 10 сентября 2009

1) IronPython и CPython имеют почти идентичный синтаксис языка. Между ними очень мало различий. Переход должен быть тривиальным.

2) Библиотеки в IronPython сильно отличаются от CPython. Библиотеки Python немного отстают - многие из доступных на CPython библиотек не будут (в настоящее время) работать под IronPython. Однако IronPython имеет чистый прямой доступ ко всей .NET Framework, что означает, что он обладает одной из самых обширных библиотек, изначально доступных для него, поэтому во многих отношениях он намного опережает CPython. Некоторые из библиотек numpy / scipy не работают в IronPython, но из-за реализации .NET некоторые функциональные возможности не являются необходимыми, начиная с версии perf. характеристики разные.

3) Доступ к Excel VBA будет проще с использованием IronPython, если вы делаете это из VBA. Если вы пытаетесь автоматизировать Excel, IronPython по-прежнему проще, поскольку у вас есть доступ к основным сборкам взаимодействия Execl, и вы можете напрямую автоматизировать его, используя те же библиотеки, что и C # и VB.NET.

11 голосов
/ 10 сентября 2009

Какая связь между Реализация C на Python (основная версия от python.org) и IronPython, с точки зрения языка совместимость? Это то же самое язык, и я, изучая один, сможет плавно перейти к другой, или это Java для JavaScript?

Тот же язык (на уровне 2.5 сейчас - IronPython еще не 2.6, пока AFAIK).

Каков текущий статус Библиотеки IronPython? Сколько стоит это отстает от библиотек CPython? я в основном заинтересованы в Numpy / Scipy и f2py. Они доступны для IronPython

Стандартные библиотеки находятся в отличном состоянии в современном IronPython, огромные сторонние расширения, подобные тем, которые вы упомянули, далеки от него. numpy начинает получать осуществимо благодаря ironclad , но не на уровне производства, поскольку numpy от IronPython (о чем свидетельствует номер версии 0.5 для ironclad, & с). scipy огромен и растянут и полон C-кодированных и Fortran-кодированных расширений: у меня нет опыта из первых рук, но я подозреваю, что менее половины будет работать, а тем более безупречно, при любой реализации, кроме CPython.

Какой самый лучший способ получить доступ VB из Python и наоборот (подключение некоторых библиотек Python к Excel VBA, если быть точным)?

IronPython должен облегчить использование подходов .NET, но CPython не так уж далек благодаря реализации COM в win32all .

И последнее, но не менее важное: непременно ознакомьтесь с книгой IronPython в действии - как я говорю каждый раз, когда рекомендую его, я предвзят (поскольку я был техническим обозревателем И дружба с одним автором) но я думаю, что это объективно лучшее введение в Python для разработчиков .NET и в то же время лучшее введение в .NET для Pythonistas.

Если вам нужны все scipy (ВАУ, но это какой-то вычислительный ученый "Ренессанс Мэн"! -), CPython действительно является единственным реальным вариантом сегодня. Я уверен, что другие большие расширения (скажем, PyQt или Mayavi) находятся в аналогичном состоянии. Однако для глубокой интеграции с современной Windows, я думаю, у IronPython может быть преимущество. Для универсального использования CPython может быть лучше (особенно благодаря множеству новых функций в 2.6), , если вы действительно не хотите использовать много ядер в одном процессе, и в этом случае IronPython (без GIL) может снова оказаться выгодным.

Так или иначе (или даже в JVM через Jython или в особых средах через PyPy) Python, безусловно, является отличным языком, какие бы реализации вы ни выбрали для данного приложения! -) Обратите внимание, что вы этого не делаете нужно придерживаться ОДНОЙ реализации (хотя вам, вероятно, следует выбрать одну ВЕРСИЮ - 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т. д .; 2.6, если вам не нужны какие-либо варианты развертывания, кроме «CPython» на машине под моим собственный или виртуальный контроль "; -).

2 голосов
/ 11 сентября 2009
  1. IronPython версии 2.0.2, текущий выпуск, поддерживает синтаксис Python 2.5. В следующем выпуске 2.6, который ожидается где-то в течение следующего месяца или около того (хотя я не уверен, что команда установила точную дату выпуска; вот beta ), они будут поддерживать синтаксис Python 2.6 , Итак, меньше Java на JavaScript и больше Java на J #: -)
  2. Все библиотеки, написанные на Python, работают почти идеально. Те, которые написаны на C, более проблематичны; есть проект с открытым исходным кодом под названием Ironclad (полное раскрытие: разработан и поддерживается моей компанией), в настоящее время версия 0.8.5, которая довольно неплохо поддерживает numpy, но не охватывает всего scipy Я не думаю, что мы проверили это с f2py. (Версия Ironclad, упомянутая ниже Алексом Мартелли, старше года, пожалуйста, избегайте ее!)
  3. Вызов обычного VB.NET из IronPython довольно прост - вы можете создавать экземпляры классов .NET и вызывать методы (статические или экземпляры) очень легко. Вызов существующего кода VBA может быть сложнее; Есть проекты с открытым исходным кодом, называемые Pyinex и XLW , на которые вы, возможно, захотите взглянуть. В качестве альтернативы, если вам нужна электронная таблица, которую вы можете кодировать на Python, всегда есть Resolver One (еще один от моей компании ...: -)
1 голос
/ 10 сентября 2009

1) Язык, реализованный в CPython и IronPython, одинаковый или, самое большее, версия или два отдельно. Это совсем не похоже на ситуацию с Java и Javascript, которые являются двумя совершенно разными языками с одинаковыми именами из-за какого-то маркетингового решения.

2) Сторонние библиотеки, реализованные на C (например, numpy), должны быть тщательно оценены. В IronPython есть средство для выполнения расширений C (я забыл название), но есть много подводных камней, поэтому вам нужно обратиться к сопровождающему каждой библиотеки

3) Понятия не имею.

0 голосов
/ 10 сентября 2009
  1. CPython реализован на C для соответствующей платформы, такой как Windows, Linux или Unix; IronPython реализован на C # и Windows .Net Framework, поэтому он может работать только на платформе Windows с .Net Framework. Для грамматики оба одинаковы. Но мы не можем сказать, что это один и тот же язык. IronPython может использовать .Net Framework, когда вы разрабатываете на платформе Windows.
  2. 21 июля 2009 года - выпущен наш последний стабильный выпуск IronPython IronPython 2.0.2. Вы можете сослаться на http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython.
  3. Вы можете получить доступ к VB с помощью функции .Net Framework от IronPython. Итак, если вы хотите освоить IronPython, вам лучше узнать больше .Net Framework.
...