Ironpython что это за программа

Ironpython что это за программа

Одним из ключевых достоинств среды DLR является поддержка таких динамических языков как IronPython и IronRuby . Казалось бы, зачем нам нужны еще языки, тем более которые применяются в рамках другого языка C#?

На самом деле динамические языки, возможно, не часто используются, однако есть сферы, где их применение является целесообразным. Например, написание клиентских сценариев. Возможно, пользователь нашей программы захочет внести какое-то дополнительное поведение в программу и для этого может использоваться IronPython. Можно даже сказать, что создание клиентских сценариев широко распространено в наши дни, многие программы и даже игры поддерживают добавление клиентских сценариев, написанных на различных языках.

Кроме того, возможно, есть библиотеки на Python, функциональность которых может отсутствовать в .NET. И в этом случае опять же нам может помочь IronPython.

Рассмотрим на примере применение IronPython. Но для начала необходимо добавить в проект несколько пакетов через пакетный менеджер NuGet. Для того нажмем в окне проекта на узел Dependencies правой кнопкой мыши и выберем в появившемся списке пункт Manage NuGet Packages. (Управление NuGet-пакетами):

Пакетный менеджер NuGet в Visual Studio

И перед нами откроется окно пакетного менеджера. Чтобы найти нужный пакет, введем в поле поиска «DLR», и менеджер отобразит ряд результатов, из которых первый — пакет DynamicLanguageRuntime необходимо установить.

Пакет DynamicLanguageRuntime в NuGet

После этого в проект в узел Dependencies добавляется библиотека Microsoft.Scripting .

Теперь также нам надо добавить пакет IronPython . Для этого введем в поле поиска «IronPython» и после этого установим одноименный пакет:

Пакет IronPython в NuGet

После установки пакета в узле Dependencies добавляется библиотека IronPython.

Теперь напишем примитивную программу:

using IronPython.Hosting; using Microsoft.Scripting.Hosting; ScriptEngine engine = Python.CreateEngine(); engine.Execute(«print(‘hello, world’)»);
hello, world

Здесь используется выражение print(‘hello, world’) языка Python, которое выводит на консоль строку. Для создания движка, выполняющего скрипт, применяется класс ScriptEngine . А его метод Execute() выполняет скрипт.

Мы также могли бы определить файл hello.py , то есть обычный текстовый файл с кодом на языке Python, со следующим содержимым:

print («hello, metanit.com»)

И запустить его в программе:

using IronPython.Hosting; using Microsoft.Scripting.Hosting; ScriptEngine engine = Python.CreateEngine(); engine.ExecuteFile(«hello.py»);

В данном случае предполагается, что скрипт находится в проекте:

файл с кодом Python в проекте на C#

Также можно использовать абсолютные пути, например, если скрипт располагается по пути «D://hello.py»:

ScriptEngine engine = Python.CreateEngine(); engine.ExecuteFile(«D://hello.py»);

ScriptScope

Объект ScriptScope позволяет взаимодействовать со скриптом, получая или устанавливая его переменные, получая ссылки на функции. Например, напишем простейший скрипт hello2.py , который использует переменные:

x = 10 z = x + y print(z)

Теперь напишем программу, которая будет взаимодействовать со скриптом:

using IronPython.Hosting; using Microsoft.Scripting.Hosting; int y = 22; ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); scope.SetVariable(«y», y); engine.ExecuteFile(«hello.py», scope); dynamic x = scope.GetVariable(«x»); dynamic z = scope.GetVariable(«z»); Console.WriteLine($» + = «);

Объект ScriptScope с помощью метода SetVariable позволяет установить переменные в скрипте, а с помощью метода GetVariable() — получить их.

32 10 + 22 = 32

Вызов функций из IronPython

Определим в файле hello.py функцию для вычисления квадрата числа:

def square(n): return n * n

Теперь обратимся к этой функции в коде C#:

using IronPython.Hosting; using Microsoft.Scripting.Hosting; int number = 5; ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); engine.ExecuteFile(«hello.py», scope); dynamic square = scope.GetVariable(«square»); // вызываем функцию и получаем результат dynamic result = square(number); Console.WriteLine(result); // 25

Получить объект функции можно также, как и переменную: scope.GetVariable(«square»); . Затем с этим объектом работаем также, как и с любым другим методом. В итоге при передаче в метод/функцию square числа 5 его результатом будет 25.

Источник: metanit.com

IronPython: что это за программа? Установка, настройка и описание

Lorem ipsum dolor

IronPython — это своего рода реплика языка программирования Python, а точнее , его реализация, которая тесно связана с .NET Framework. IronPython использует библиотеки .NET Framework и библиотеки Python. В целом это отличное дополнение к .NET, позволяющее веб-разработчикам «Питона» пользоваться возможностями .NET Framework.

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

Реализация IronPython происходит прямо поверх библиотек Dynamic Language Runtime (DLR), работающих поверх Common Language Infrastructure, которая , в свою очередь , отвечает за обеспеч ение динамической типизации, а также за отправку необходимых методов для используемого динамического языка.

DLR — это существенная часть .NET Framework 4.0 и Mono. Это стало возможным , уже начиная с релиза 2.4 2009 года. DLR также часто используется в качестве библиотек в наиболее « древних » реализациях CLI.

Характеристика IronPython по сравнению с CPython

Точные характеристики производительности IronPython, если сравнивать с CPython (это эталонная реализация языка программирования Python), будут зависеть от конкретного использования конкретного синтаксиса. В целом IronPython по производительности чуть хуже, чем CPython. Это доказано большим количеством тестов, сделанных с использованием скрипта PyStone.

Читайте также:
G service gigabyte что это за программа

IronPython в принципе может повысить свою производительность в программах на языке Python, которые используют потоки в несколько ядер , п отому что он сам использует JIT и не имеет Global Interpreter Lock (GIL) механизма. Этот механизм в основном используется в некоторых интерпретаторах программного языка, чтобы синхронизировать выполнение потоков. Интерпретатор, который использует GIL, всегда может выполнить только один поток за раз, даже если поток данных выполняется на многоядерном процессоре. Н екоторые популярные интерпретаторы с GIL — это CPython и Ruby MRI.

Установка Iron P ython

В целом установка Iron P ython — дело не хитрое. Будут небольшие различия в зависимости от того, какую операционную систему вы используете.

Установка Iron P ython в Linux

  1. Нужно добавить репозиторий Mono в вашу систему; для этого посетите сайт mono-project.com и выберете версию сво ей операционной системы.
  2. Установите Mono; это можно сделать в магазине приложений или в терминале , набрав: «$ sudo apt install mono-devel»;
  3. Установите Numerics; это также можно сделать через терминал: «$ sudo apt install libmono-system-numerics4.0-cil»;
  4. Наслаждайтесь работой, если все сделали правильно.

Установка Iron P ython MacOS

  1. Перейдите на сайт mono-project.com и загрузите и установите последнюю версию Mono;
  2. Загрузите последнюю версию IronPython. Найдите ее через поиск, но , как правило , загрузка происходит из github.com;
  3. Откройте терминал и введите команду «$ which ipy»;
  4. Пользуйтесь и наслаждайтесь работой.

Установка IronPython в Windows

  1. Найдите и установите через поиск IronPython; как правило , скачать его можно с сайта github.com;
  2. Пользуйтесь и наслаждайтесь программированием .

Так что это за программа IronPython, для чего использовать?

Программа IronPython — это динамический язык. А как известно , динамические языки очень удобны, если необходимо, к примеру, быстро разработать приложение. Быстрая разработка — это , соответственно , быстрый результат , п оэтому современные разработчики все больше и больше отдают предпочтение именно динамическим языкам, так как они избавляют от старых методик и рутины, а значит , позволяют сосредоточит ь ся на творческой составляющей своего проекта.

Использовать или нет IronPyt h on — зависит только от вашего желания и необходимости конкретно в этом языке.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник: codernet.ru

IronPython — что за зверь?

Наткнулся на довольно интересную IDE — SharpDevelop, и обнаружил там возможность разработки на неком IronPython. Насколько я понимаю, это тот же Python, но только для .net. Кто что знает о нем? Какие есть реальные примеры применения этой штуки? Сильно ли он отличается от «нормального» Python?
И, еще. Собираюсь пытаться учить Python, целесообразно ли для изучения использовать этот вот IronPython? Очень привлекает возможность делать сразу gui, да и сам SharpDevelop как то глянулся.

  • Вопрос задан более трёх лет назад
  • 14744 просмотра
Читайте также:
Logi analytics client unicode что это за программа

Комментировать
Решения вопроса 0
Ответы на вопрос 4

dimonchik2013

non progredi est regredi

www.jython.org и ironpython.net созданы для дружбы с экосистемами Java и .NET, это ни в коем случае не замена Java и .NET

я не великий гуру, но евангелисты не советуют злоупотреблять, и уж тем более учить с нуля

освойтесь в cPython, а эти проекты будут приятным довеском
GUI в Питоне тоже есть сразу

Ответ написан более трёх лет назад
Нравится 3 1 комментарий

Если быть более точным, то и тот, и другой представляют собой в первую очередь компиляторы Python в байт-код виртуальной машины Java (JVM) и Common Language Runtime соответственно.

Reverse-Engineer, Software Developer, Architect

Спрашивается: зачем Python, если есть .NET, который, будем откровенны, гораздо мощнее и стройнее как фреймворк?
Под винду надо .NET, а под .NET надо C#, а не мутанта какого-то, по которому исходников вообще нету и придется все время юзать конвертер.
И IDE надо нормальную (т.е. VS), а не устаревшую кривую SharpDevelop, которая в развитии остановилась где-то на уровне VS 2003-2005 и не имеет, скажем, достаточно развитого аналога IntelliSense.

IronPython — не единственный такой мутант. Еще есть IronRuby, был J#, JScript.NET, есть C++.NET. Да и VB.NET, по сути, туда же можно отнести.
Естественно, всё это хрень. Пожалуй, единственное применение подобным мутантам (как и большинству прочих «альтернативных» средств разработки) — это в качестве «моста», позволяющего кое-как соединить чьи-то уже готовые наработки на одном ЯП — с кодом на другом ЯП.
Делать на них упор в изучении — не стоит. Если вы станете программистом (именно программистом, а не тупо кодером), то вы просто сможете брать тот инструмент, который вам нужен для данной задачи — и писать на нем то, что надо написать (хотя иной раз и не без приступов рвоты)

Ну а настоящий Python, который без мутаций, — это аналог C#, но для линукса и линуксоидов (в смысле любителей терминала, вроде сисадминов).

Так что пусть C# будет отдельно, а Python — отдельно; ну а что из этого нужно вам — решайте сами.

Ответ написан более трёх лет назад

Аналог C# — это Java (грубо говоря). Точнее .NET (выпущенный позже) — это аналог JVM. На сегодня они оба кроссплатформенные, но в продакшн .NET используется только на Windows.

Я не пойму какое отношение к этим статическим языкам имеет Python (который, кстати, полностью кроссплатформенный).

зачем Python, если есть .NET, который, будем откровенны, гораздо мощнее и стройнее как фреймворк?

Это сравнение, скажем так, несколько странное, учитывая, что Python — это язык программирования, а не фреймворк.

nirvimel: > Аналог C# — это Java (грубо говоря).
Едва ли. Далековато ей до C#. Если бы надо было писать под десктопный линукс, то скорее уж я бы питон выбрал. Особенно если GUI не требуется или почти не требуется. Java ближе к C/C++.
Под андроидом Java — это вообще прямой аналог C/C++ под WinAPI. Ну уж никак не аналог C#, который на винде-то выше уровнем, чем нативное API винды.

> .NET (выпущенный позже) — это аналог JVM
Сильно усовершенствованный аналог. Что по синтаксису, что по библиотекам, что по IDE.

> На сегодня они оба кроссплатформенные,
C# от MS ни разу не кроссплатформенный. А C# не от MS — это совсем не тот C#. Подобные реализации — это еще одна разновидность «мутантов».

> Я не пойму какое отношение к этим статическим языкам имеет Python
Что значит «статический язык»? И что, это такая важная характеристика, чтобы по ней делить языки на разные группы?

Читайте также:
Программа атк что это

> Python (который, кстати, полностью кроссплатформенный).
Как «полностью». 0_o
Вы хотите сказать, что на Python можно писать под ВСЕ платформы, какие есть на свете? Или я не так понял?
Python — кроссплатформенный на десктопе, но по направлению «десктоп-мобил» он еще хуже джавы. Не говоря уж о более редких платформах с их спецификой.

Источник: qna.habr.com

IronPython

Сегодня поговорим об интересном проекте IronPython. Описание звучит так: «IronPython — это реализация языка программирования Python с открытым исходным кодом, которая тесно интегрирована с .NET Framework. IronPython может использовать библиотеки .NET Framework и Python, а другие языки .NET могут также легко использовать код Python».

Для начала установим все необходимое. Для работы с данным проектом нам понадобиться Visual Studio(я использую 2019, .Net Framework необходим не ниже 4.5, .Net Core 2.0 или 2.1). Установить можно через менеджер Nuget Install-Package IronPython Install-Package IronPython.StdLib. Текущая, на момент написания статьи, версия – 2.7.10.

Для начала создадим приложение Windows Forms и добавим туда все, что требуется:

using Microsoft.Scripting.Hosting; using Microsoft.Scripting; using IronPython.Hosting;

В этот раз не будем пытаться решать сложных проблем, придумаем что-нибудь простое и одновременно показывающее взаимодействие Python и C#. Пусть нам необходимо сложить 2 числа (и мы по каким-то причинам не хотим делать эту операцию обыкновенным способом «в столбик» или с помощью калькулятора). Для этого добавим на нашу форму 3 TextBox-а, пару Label-ов и один Button. Должно получиться примерно так:

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

Определим две переменные:

static public ScriptEngine engine; static public ScriptScope scope;

Стоит отметить, что все, что будет взаимодействовать с IronPython, должно быть “public”.

Существует несколько методов для работы со скриптами в Ironpython:

Мне больше всего нравится способ ExecuteFile(), его и будем использовать. Для этого в метод инициализации формы добавим следующее:

engine = IronPython.Hosting.Python.CreateEngine(); scope = engine.CreateScope(); scope.SetVariable(«Main», this);

Для того, чтобы выполнить какой-нибудь скрипт, добавим в код метода обработки кнопки следующий код:

В указанном выше коде выполняется построчно следующее:

  1. Исполняется файл по указанному адресу, в котором определена функция
  2. Функция из Python определяется в C#
  3. Вычисляется значение функции с учетом введенных значений
  4. В текстовое поле, предполагавшееся для ответа, записывается результат арифметической операциилибо ошибка, которая возникла при выполнении.

Ну и сам Python-файл с функцией содержит код:

def test_func(var1,var2): return var1+var2

Проверим, как работает наш «вычислитель»:

Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?! Лично для себя я вижу неплохую возможность в изучении с использованием уже знакомых мне инструментов.

С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:

namespace IronPython.Example < class Program < static void Main(string[] args) < string blurb = String.Format(«», «Hello World! The current date and time is «, DateTime.Now); Console.WriteLine(blurb); > > >

Будет эквивалентен следующему коду на IronPython:

from System import DateTime, String blurb = String.Format(» «, «Hello World! The current date and time is «, DateTime.Now) print blurb

Есть некоторое сходство, верно?!

Если в течение какого-то продолжительного времени вы писали .Net приложения традиционным способом (запись, компиляция, тестирование, исправление, перекомпиляция, повторное тестирование, все сначала) и по каким-то причинам столкнулись с необходимостью работы со скриптами (даже необязательно для анализа данных), то IronPython может стать своеобразным «мостом» для перехода к написанию скриптов Python и подарит возможность взглянуть на некоторые вещи под иным углом.

Источник: newtechaudit.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru