Python - дилемма IronPython
Я начинаю изучать Python, и сейчас мне это очень нравится. Но, если бы вы могли просто ответить на несколько вопросов для меня, которые беспокоили меня, и я не могу найти для них определенных ответов:
-
Какова связь между реализацией Python C (основная версия с python.org) и IronPython с точки зрения совместимости с языком? Это один и тот же язык, и я, изучая его, сможет плавно перейти к другому, или это Java для JavaScript?
-
Каков текущий статус для библиотек IronPython? Насколько он отстает от библиотек CPython? Меня больше всего интересуют numpy/scipy и f2py. Доступны ли они для IronPython?
-
Каким будет лучший способ получить доступ к VB с Python и наоборот? (например, подключение некоторых библиотек python к Excel VBA)?
Ответы
Ответ 1
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 Primary Interop Assemblies и можно напрямую автоматизировать его с использованием тех же библиотек, что и С# и VB.NET.
Ответ 2
Какова связь между Реализация Python C (основная версия от 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
, & c). scipy
является огромным и растягивается и заполняется C-кодированными и фортранс-кодированными расширениями: у меня нет непосредственного опыта, но я подозреваю, что менее половины даже будут работать, а тем более бегать безупречно, при любой реализации, кроме CPython.
Каким будет лучший способ доступа VB от Python и наоборот (подключение некоторых библиотек python к Excel VBA, если быть точным)?
IronPython должен упростить использование .NET-подходов, но CPython не так уж далек от реализации COM в win32all.
И последнее, но не менее важное: обязательно прочитайте книгу IronPython в действии - как я говорю каждый раз, когда рекомендую, m пристрастный (будучи техническим рецензентом для него и дружбой с одним автором), но я считаю это объективным лучшим введением разработчиков Python для .NET и в то же время лучшим вступлением .NET для Pythonistas.
Если вам нужен все scipy
(WOW, но этот кто-то "ученый-исследователь Renaissance Man!!), CPython на самом деле является единственным реальным вариантом сегодня. Я уверен, что другие большие расширения (PyQt, скажем, или Mayavi) находятся в аналогичном состоянии. Однако для глубокой интеграции в Windows сегодня, я думаю, у IronPython может быть преимущество. Для использования общего назначения CPython может быть лучше (особенно благодаря многим новым функциям в версии 2.6), , если, вы действительно хотите использовать многие ядра для рукояти в рамках одного процесса, в котором case IronPython (который является GIL-less) может оказаться полезным снова.
Так или иначе (или даже на JVM через Jython или в особых средах через PyPy) Python - это, безусловно, удивительный язык, независимо от того, какие реализации вы выбрали для данного приложения! -) Обратите внимание: необходимо придерживаться ОДНОЙ реализации (хотя вы, вероятно, должны выбрать одну версию VERSION - 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т.д.; 2.6, если вам не нужны какие-либо варианты развертывания, кроме "CPython на машине под моим собственный или виртуальный контроль"; -).
Ответ 3
- IronPython версии 2.0.2, текущая версия, поддерживает синтаксис Python 2.5. В следующем выпуске 2.6, который ожидается где-то в течение следующего месяца или около того (хотя я не уверен, что команда установила твердую дату выпуска, здесь beta), они будут поддерживать синтаксис Python 2.6. Таким образом, меньше Java для JavaScript и больше Java для J #: -)
- Все библиотеки, которые сами пишутся на Python, работают отлично. Те, которые написаны на С, более проблематичны; существует проект с открытым исходным кодом под названием Ironclad (полное раскрытие: разработка и поддержка моей компанией), в настоящее время в версии 0.8.5, которая поддерживает numpy довольно хорошо, но не охватывает все scipy. Я не думаю, что мы протестировали его с помощью f2py. (Версия Ironclad, упомянутая ниже Alex Martelli, старше года, пожалуйста, избегайте этого!)
- Вызов обычного VB.NET из IronPython довольно прост - вы можете очень легко создавать классы .NET и методы вызова (статические или экземпляры). Вызов существующего кода VBA может оказаться более сложным; есть проекты с открытым исходным кодом, называемые Pyinex и XLW, на которые вы, возможно, захотите взглянуть. В качестве альтернативы, если вам нужна электронная таблица, которую вы можете закодировать на Python, тогда всегда Resolver One (еще одна из моей компании...:-)
Ответ 4
1) Язык, реализованный CPython и IronPython, является одним и тем же, или не более чем на одну или две версии. Это не что-то похожее на ситуацию с Java и Javascript, которые представляют собой два совершенно разных языка с похожими именами с помощью какого-то костяного маркетингового решения.
2) Сторонние библиотеки, реализованные на C (например, numpy), должны быть тщательно проанализированы. У IronPython есть возможность выполнять расширения C (я забыл имя), но есть много ошибок, поэтому вам нужно проверить с каждым поддерживающим библиотеку
3) Я понятия не имею.
Ответ 5
- CPython реализуется C для соответствующей платформы, такой как Windows, Linux или Unix; IronPython реализуется С# и Windows.Net Framework, поэтому он может работать только на платформе Windows с .NET Framework.
Для грамматики оба они одинаковы. Но мы не можем сказать, что они одни и те же. IronPython может использовать .Net Framework при разработке на платформе Windows.
- До сих пор, 21 июля 2009 года, был выпущен IronPython 2.0.2, наш последний стабильный выпуск IronPython. вы можете обратиться к http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython.
- Вы можете получить доступ к VB с помощью функции .Net Framework от IronPython. Итак, если вы хотите овладеть IronPython, вам лучше узнать больше .Net Framework.