В дополнение к тому, что сказал Nick, можно узнать больше в Переданные потоком Строки: Переходящие Шаблоны для Параллельной Разработки программного обеспечения
В этом рисунке main
являются соединительной линией, rel1-maint
ответвление, и 1.0
тег.
И то, и другое:)
Я бы не сказал, что знаю конкретную «цель» для IronPython, но он, безусловно, может использоваться для написания приложений, а он может использоваться для создания сценариев в больших приложениях .NET.
Помимо всего прочего, это удобный способ осторожного перехода разработчиков Python в мир .NET. (Почему бы не изучать C # одновременно? Заходите, вода прекрасна ...)
IronPython с WPF - самый продуктивный способ создания графического интерфейса, который я знаю. Почти все приложение, изображенное ниже, написано на IronPython. Из соображений производительности в C # или C ++ / CLI выполняются только очень маленькие детали.
Конечно, вам не хватает интеграции с WPF / C #, но вы получаете гораздо больше в плане производительности.
IronPython также намного легче расширить, чем CPython. Вы берете свой код C ++ и просто добавляете небольшую оболочку C ++ / CLI поверх него. В CPython нет ничего более простого. По этой причине я начал использовать IronPython, потому что устал от написания оболочек для своего кода C ++ на CPython. Boost.Python, SWIG и тому подобное у меня не сработали.
Я думаю, что семейство языков Iron в первую очередь предназначено для добавления в платформу большего количества разновидностей, что позволяет вам войти в .NET с помощью языка, с которым вы знакомы. Это значительно снижает планку для привлечения новых людей с разным опытом в .NET
Несмотря на то, что синтаксис - Python, реализация по-прежнему строится на основе CLR, и конечный продукт не будет сильно отличаться, если решили пойти на проект IronPython вместо C #.
У меня был некоторый опыт работы с IronPython, и мне было приятно с ним работать (это, конечно, помогает, мне действительно нравится язык). IronPython теперь считается первоклассным гражданином Microsoft, и это также впечатление, которое вы получаете при его использовании. Однако его недостатком является то, что он не так широко используется, как два основных языка, что вызывает некоторые проблемы, когда речь идет о совместной работе и поддержании базы кода с течением времени.
Я нашел это особенно полезным при создании порта .NET алгоритма поиска, который впервые был реализован в Python.
Что касается добавления возможностей скриптинга в ваше приложение, это, вероятно, не оригинальное намерение с IronPython, но это было сделано. Umbraco CMS имеет (или, по крайней мере, имеет) возможность создавать виджеты, используя Python в качестве динамического языка сценариев на своей платформе. Довольно приятная особенность, чтобы иметь.
Вы должны пойти дальше и попробовать это. Всегда хорошо иметь больше инструментов в поясе:)
Вы используете его для написания кода Python, который работает на платформе .NET. Это хорошо для всего, для чего хорош Python.
Язык Python - это язык Python, несмотря ни на что. IronPython - это реализация среды выполнения для этого языка - код поддержки, который компилирует ваш источник, создает виртуальную машину для выполнения байт-кода в результирующем файле .pyc, связывается с ОС для помещения командной строки аргументы в sys.argv
, и все эти другие забавные вещи. (Хорошо, хорошо, сама платформа .NET также выполняет большую часть работы. :))
Во-первых: IronPython на самом деле скорее компилятор, чем интерпретатор - он будет использоваться для генерации сборок .NET из ваших исходных файлов на python. Так что да, вы можете писать приложения и почти все, что может сделать .NET Framework.
Одним из самых больших преимуществ IronPython является то, что он (фактически) не имеет GIL - это означает, что если вы оба пишете код Python и он многопоточный - вы часто можете получить производительность, которая лучше чем CPython без необходимости порождать несколько процессов и перебирать объекты через границы. Это не решает проблему параллелизма, но .NET предоставляет гораздо более надежные конструкции для работы с ним. Честно говоря, я думаю, что это довольно ниша, но она, безусловно, есть.
Вики-страница python.org для IronPython также содержит список ключевых отличий:
Я думаю, что Resolver Systems создавали свои продукты с IronPython. Так что определенно есть реальное использование IronPython.
Также объявили , что они будут портировать NumPy на IronPython и .Net. Это, безусловно, расширит привлекательность IronPython.