Iron Python: что хорошего использования для Iron Python

У меня есть сродство к python, но я работаю в среде .NET, поэтому я изучал Iron Python и задавался вопросом, для чего он будет использоваться.

Не могли бы вы написать приложение? или это для добавления языка сценариев в ваше приложение?

Как вы его используете?

Ответы

Ответ 1

Либо или оба:)

Я бы не стал признавать специфическую "цель" для IronPython, но он, безусловно, может быть использован для написания приложений и может использоваться для сценариев в более крупном .NET-приложении.

Помимо всего прочего, это удобный способ мягкого ослабления разработчиков Python в мире .NET. (Почему бы не научиться С# в то же самое время? Входите, вода прекрасна...)

Ответ 2

IronPython с WPF - это самый эффективный способ разработки GUI, о котором я знаю. Почти все приложение, представленное ниже, написано в IronPython. По соображениям производительности в С# или С++/CLI выполняются только очень мелкие части.

Конечно, вам не хватает некоторой интеграции WPF/С#, но вы получаете гораздо больше на стороне производительности.

alt text

IronPython также намного проще расширять, чем CPython. Вы берете свой код на С++ и просто добавляете на него небольшую оболочку С++/CLI. CPython не имеет ничего такого, что легко. Это причина, по которой я начал использовать IronPython, потому что мне надоело писать обертки для моего кода на С++ в CPython. Boost.Python, SWIG и т.д. Не работали для меня.

Ответ 3

Самое большое преимущество IronPython в том, что он очень близко сочетает миры Python и .NET.

Если у вас есть библиотеки (сборки), написанные на С#, вы можете импортировать их непосредственно в IronPython и использовать их, например:

import clr
clr.AddReferenceToFileAndPath('MyAssembly.dll')

import MyNamespace

c = MyNamespace.MyClass()

c.MyFunction()

Это очень хорошо для повторного использования exisiting.NET-кода при использовании сценариев или даже интерактивного использования с интерпретатором IronPython.

Обычный CPython требует Python.NET для выполнения тех же или подобных действий. По моему опыту, Python.NET работает большую часть времени, но не всегда, и IronPython обеспечивает гораздо более отлаженный опыт в доступе к .NET из Python.

IronPython, вероятно, всегда будет отставать от ссылочной реализации CPython с точки зрения стандартной поддержки библиотек и т.д., но в целом разработка не так уж далека от того, что было бы трудно работать с выходом из фона CPython.

Наконец, существует несколько существенных differences между CPython и IronPython, на которые следует обратить внимание. Пример - сборка мусора (немного меня на днях...).

Ответ 4

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

Наши полевые инженеры теперь используют встроенный язык для проверки вещей "на лету", наши специалисты по обеспечению качества используют его для создания небольших скриптов для тестирования всех функций оборудования и т.д.

Надеюсь, что это поможет.

Ответ 5

  • IronPython - это еще одна реализация Python. Вы можете использовать его в любом месте, где вы бы использовали любую другую реализацию Python. (Конечно, ограничения платформы Modulo, конечно, нельзя использовать IronPython на устройстве только для Java.)
  • IronPython - это еще один компилятор .NET. Вы можете использовать его в любом месте, где бы вы ни использовали другой язык .NET.
  • IronPython - это больше, чем просто реализация Python. Это реализация Python, которая дает вам полный доступ к любой библиотеке .NET.
  • IronPython - это больше, чем еще один компилятор .NET. Это компилятор .NET, который дает вам полный доступ к любой библиотеке Python.
  • IronPython - встраиваемый скриптовый движок для любого приложения, библиотеки и фреймворка .NET.

Ответ 6

Я думаю, что семейство языков Iron предназначено, прежде всего, для добавления дополнительных возможностей в платформу, позволяя вам войти в .NET с использованием языка, с которым вы знакомы. Это значительно снижает планку для получения новых людей с разным фоном в .NET.

Несмотря на то, что синтаксис Python, реализация по-прежнему построена поверх CLR, и конечный продукт не будет сильно отличаться, если вы решите пойти на проект IronPython, а не на С#.

У меня был некоторый опыт работы с IronPython и мне было приятно работать (это помогает, конечно, мне очень нравится этот язык). IronPython теперь считается гражданином первого класса Microsoft, и это тоже впечатление, которое вы получаете при его использовании. Один недостаток его использования заключается в том, что он не так широко принят, как два основных языка, что вызывает некоторые проблемы, связанные с совместной работой и поддержкой базы кода с течением времени.

Я нашел это особенно полезным при выполнении .NET-порта алгоритма поиска, который был впервые реализован в Python.

Что касается добавления возможностей скриптинга к вашему приложению, это, вероятно, не оригинальное намерение с IronPython, но это было сделано. CMS Umbraco имеет (или, по крайней мере,) возможность создавать виджеты с использованием Python в качестве динамического языка сценариев на своей платформе. Довольно опрятная функция.

Вы должны пойти и попробовать. Всегда хорошо иметь больше инструментов в поясе:)

Ответ 7

Вы используете его для написания кода Python, который выполняется на платформе .NET. Это хорошо для всего, что подходит Python.

Язык Python - это язык Python, независимо от того, что. IronPython - это реализация среды выполнения для этого языка - код поддержки, который компилирует ваш источник, создает виртуальную машину для выполнения байт-кода в результирующем файле .pyc, общается с ОС, чтобы поместить команду line аргументы в sys.argv, и все это другое забавное. (Ну, хорошо, сама платформа .NET тоже делает много работы:):)

Ответ 8

Вы можете написать приложение в нем, вы можете использовать его в качестве языка сценариев в своем приложении.

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

Ответ 9

Мой опыт IronPython заключается в использовании его как части двигателя, который можно изменить после установки базового приложения .Net. С помощью Python мы описали действительно большой набор бизнес-правил, которые можно изменить с двух системных установок. Частично IronPython использовался как язык плагина.

Отличие от языка script - после компиляции IronPython выполняется как код CLR.

Ответ 10

Я думаю, что Resolver Systems построили свои продукты с помощью IronPython. Таким образом, существует определенная возможность использования IronPython в реальном мире.

Enthought также объявлено, что они будут переносить NumPy на IronPython и .Net. Это, безусловно, расширит привлекательность IronPython.

Ответ 11

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

Одним из самых больших преимуществ IronPython является то, что он имеет (эффективно) no GIL - это означает, что если вы оба пишете код Python и это многопоточность - вы часто можете получить производительность, которая лучше, чем CPython, без необходимости создавать множество процессов и рассортировать объекты через границы. Он не решает проблему concurrency, но .NET предоставляет гораздо более надежные конструкции для работы с ним. Я думаю, что это честная честность, но это, безусловно, есть.

Страница wiki python.org для IronPython содержит список ключевых дифференциаторов:

Ответ 12

Вы можете использовать его для интересных вещей, таких как наличие встроенного веб-сервера в вашем приложении, которое может быть разработано с помощью одной из доступных веб-фреймворков Python. Это намного проще и плавнее, чем для хостинга веб-сервера ASP.NET в вашем приложении. Например, CherryPy поставляется со встроенным веб-сервером, который должен отлично работать с IronPython с небольшими изменениями.