Что такое ironpython windows console

Поговорим про 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 и добавим туда все, что требуется:

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

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

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

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

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

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

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

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

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

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

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

Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?!Это неплохая возможность в изучении с использованием уже знакомых инструментов. С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:

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

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

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

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 и добавим туда все, что требуется:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что такое ironpython windows console

Rohoss
Дата 17.6.2011, 18:20 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.12.2007

Репутация: нет
Всего: нет

если тебе нужно писать на .net учи c#
удобней VisualStudio для разработки под .net ничего нет, хотя любители mono не согласятся

ironpython просто способ работать с библиотеками .net под python

leshiy_AlisA
Дата 17.6.2011, 19:36 (ссылка) | (нет голосов) Загрузка .
Rohoss
Дата 17.6.2011, 20:24 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

Цитата(leshiy_AlisA @ 17.6.2011, 19:36 )
если тебе нужно писать на .net учи c#

ну с# я как бе знаю

Цитата(leshiy_AlisA @ 17.6.2011, 19:36 )
ironpython просто способ работать с библиотеками .net под python
Stolzen
Дата 18.6.2011, 02:03 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48

Код на питоне лаконичнее, быстрее в написании и т.п. (Язык ведь скриптовый)
Поэтому смысл использования IronPython в том, что в нем есть возможность быстро писать на python, используя библиотеки .net и свой код, написанный на других языках платформы. Вроде бы это очевидно?

Добавлено через 59 секунд

Цитата(Rohoss @ 17.6.2011, 21:24 )
я думал может он предоставит мне некоторые возможности, которые трудно реализовывать в c#.
Rohoss
Дата 18.6.2011, 02:42 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

Цитата(Stolzen @ 18.6.2011, 02:03 )
Поэтому смысл использования IronPython в том, что в нем есть возможность быстро писать на python, используя библиотеки .net и свой код, написанный на других языках платформы. Вроде бы это очевидно?

Нет, не очевидно. Я думал что кроме радости от того что я пишу на питоне должны быть ещё какие-то преимущества.

Цитата(Stolzen @ 18.6.2011, 02:03 )
Предоставит. Динамическая типизация, list comprehension, и прочие приятности.
Stolzen
Дата 18.6.2011, 13:13 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48

Rohoss, В принципе, я сходу не могу придумать пример, в котором python сильно выигрывает у C#, да и + реализация IronPython на .net может быть медленнее, чем C# (не знаю, как с IronPython, но вот с jython под jvm дела обстоят именно так — jython до 10 раз медленнее, чем java)

А почему вы задумались об использовании IronPython?

Rohoss
Дата 18.6.2011, 14:03 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

Цитата(Stolzen @ 18.6.2011, 13:13 )
не знаю, как с IronPython, но вот с jython под jvm дела обстоят именно так — jython до 10 раз медленнее, чем java)

Это конечно жёстко.

Цитата(Stolzen @ 18.6.2011, 13:13 )
А почему вы задумались об использовании IronPython?
afiskon
Дата 18.6.2011, 14:44 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: нет
Всего: 4

Daevaorn
Дата 19.6.2011, 01:08 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70

Цитата(afiskon @ 18.6.2011, 15:44 )
Как минимум, за счет того, что код не интерпретируется, а компилируется/оптимизируется в байткод.
Skynin
Дата 19.6.2011, 19:00 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10

Цитата
Для каких задач может понадобится IronPython? . чем мне это поможет в разработке ПО на .нет?

Хорош для прототипирования
Когда удобно снабдить программу собственным скриптовым языком
В задачах где требуется гибкое конфигурирование программы
Для однорозавых задач

Цитата
Можно пример задачи, которую будет сложно решить на c# и где всё это понадобится?

Все задачи можно решать на ассемблере.

С C# и IronPython вопрос на самом деле звучит так:
Можно пример задачи, которую будет сложно решить на ЯП с статической типизацией и где вся эта динамическая типизация может понадобится?

И что такое «сложно», «трудно»?
Если ты опытен, то сложно — не будет и на ассемблере. А вот дооооолго, до полной потери мотивации писать — да.
То есть вопрос личной психологии — как долго можете писать программу не получая результата?
И — сколько времени выделено, и какое количество человек?

И программы обычно — эволюционируют. Как долго будет изменять/добавлять новый функционал в работающую программу?

Насчет скорости выполнения, не смущает что Web это обычно PHP и JavaScript?

А вот для EverNote и C# оказался медленным, и переписан был на С++.

И:
Если бы скорость выполнения программ была главным критерием, никаких языков на свете не было бы кроме ассемблера.
Хотя. может бы на С все развитие языков программирования остановилось бы.
Однако уже в конце 50ых появились LISP, Cobol и Algol. Хотя тогда компьютеры были совсем не быстрыми.

Читайте также:  Удалить облако с windows 10
bilbobagginz
Дата 19.6.2011, 21:20 (ссылка) | (нет голосов) Загрузка .

Naughtius Maximus

Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317

Цитата(Rohoss @ 18.6.2011, 01:42 )
Можно пример задачи, которую будет сложно решить на c# и где всё это понадобится?
Цитата(Rohoss @ 18.6.2011, 13:03 )
Думал, может его использование чем-то упростит реализации задач какого-то типа.

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

создаешь интерфейс (типа плагина) на сишарпе, просто какой-то абстрактный интерфейс.

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

если тебе это ничего не говорит, то . увы, не срослось.

Rohoss
Дата 19.6.2011, 21:28 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

bilbobagginz, не совсем понял.
То есть делаешь расширяемое приложение? Но с такой задачей справляется скажем MEF, Unity и другие. В конце концов, если нужно именно делать плагины то в .нете есть для этого своя инфраструктура. Или я не совсем понял что ты имел ввиду.

Добавлено через 2 минуты и 57 секунд

Цитата(bilbobagginz @ 19.6.2011, 21:20 )
теперь к этому интерфейсу можно подключаться на питоне:
в результате (если ограничения виртуального питона тебе не страшны), получаешь старый экзешник, и подключаешься к нему из питона, т.е. динамически расширяешь приложение, прозрачно для приложения.
Skynin
Дата 20.6.2011, 13:38 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10

Цитата
В конце концов, если нужно именно делать плагины то в .нете есть для этого своя инфраструктура.
.
Подключаешься к интерфейсу на питоне, реализовываешь какую то логику отдельной либой и используешь эту либу в своём .ехе? Ну это же легко можно делать на C#

Мелкий оффтоп — когда появился С++ Сишники говорили так же — а зачем вот «это», когда легко можно сделать и на Си. Потом С++сники так говорили о Java еще и добавляя об убожестве ее возможностей.

Вернемся к Python’у. Зачем бодаться с инфраструктурой для плагинов если можно — не бодаться с ней?
Скажем в C# есть метаклассы? Нет. А благодаря их наличию в Python куча ОО паттернов, требующий парочку интерфейсов и парочку классов — преобразуются в простой код.
Можно динамически, во время выполнения изменять наследование реализации в C#? Нет, если заранее не понаписать инфраструктурного кода. И т.д.

это же легко можно — а если это же еще легче на Python’е? Опять же потому что не надо городить инфраструктуры.

На C#, кучу вещей нужно проектировать заранее. Закладывать возможности будущего функционала. А на Python’е хитрый функционал можно добавлять малым количеством кода в работающее ПО и без перекомпиляции зависящего кода.

Вообще, стоит на ночь прочесть книгу по Python’у. От Лутца или Саммерфилда. Тогда, если знаете C# многие вопросы — «это же легко сделать на C#» отпадут.
А возникнут — «а почему же тогда столько кода пишут на Java/C#»

Цитата
Тут тоже не совсем понял.
Читайте также:  Linux как терминальный клиент
Rohoss
Дата 20.6.2011, 16:27 (ссылка) | (нет голосов) Загрузка .

Начальник интернета

Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18

Цитата(Skynin @ 20.6.2011, 13:38 )
Мелкий оффтоп — когда появился С++ Сишники говорили так же — а зачем вот «это», когда легко можно сделать и на Си. Потом С++сники так говорили о Java еще и добавляя об убожестве ее возможностей.

Это не из той оперы

Цитата(Skynin @ 20.6.2011, 13:38 )
это же легко можно — а если это же еще легче на Python’е? Опять же потому что не надо городить инфраструктуры.

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

Цитата(Skynin @ 20.6.2011, 13:38 )
Начните изучать Python — поймете. Просто для саморазвития будет полезно знать, сколько лишнего кода приходится писать и самое главное — сопровождать на Java/C#
Цитата(Stolzen @ 18.6.2011, 02:03 )
Поэтому смысл использования IronPython в том, что в нем есть возможность быстро писать на python, используя библиотеки .net и свой код, написанный на других языках платформы. Вроде бы это очевидно?

Добавлено через 3 минуты и 28 секунд
Всё же есть много вещей, которых я не знаю и которые нужны, и которым можно будет выделить когда-то время для повышения своего проф. уровня. Вот мне и интересно, стоит ли того айронпайтон? И если стоит, то какой ему выделить приоритет?

Skynin
Дата 20.6.2011, 19:30 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10

Цитата
Вот был бы очень признателен, если бы мне продемонстрировали где айронпайтон удобней

На любую демонстрацию можно сказать: так я и на C# такое напишу.
Или — смысл фичи не очень очевиден.
За года в программировании убедился что такой настрой — ничем не перешибить.

Где удобно применять, уже сказал.

Писать код на C# и аналогичный на Python не вижу смысла. Можно посмотреть Computer Language Benchmarks Game: Python 3 — C# Mono
(а если вдруг взволнует эффективность выполнения то сразу сюда: C GNU gcc — C# Mono и сразу бросите этот C# и перейдете на Си )

Так же примеры-сравнения встречаются в книжках, и конечно — Гугле.

Цитата
А по поводу динамического изменения наследника

Понимаете. наличие такой фичи в языке говорит о существовании кучи других, менее ярких.
Если вам это и наличие метаклассов ни о чем не говорит, то большой вопрос — а вы знаете что такое объектно-ориентированная парадигма вообще, а не ее реализация в С#?

Цитата
в большом проекте проблем не оберешься.

Вы ПМ большого проекта? Или самостоятельно пишете большое приложение? Чем вызвано беспокойство, почему вас заботят не личные знания и навыки программиста, а сложности больших проектов?

Цитата
Вот мне и интересно, стоит ли того айронпайтон?

Не стоит, не изучайте. Отдохните, пива попейте.

Понимаете в чем заковыка — если человеку интересно, он берет и изучает. И никого не просит убедить его, что вот это интересно, это полезно, это нужно и т.д.
Хотя бы на хабре типа Заметки об объектной системе языка Python почитает.
А если встал в позу — на единственном языке что знаю это могу написать, то и правда — ему ничего не нужно изучать.

Вопрос не в том что можно написать — а еще раз — за какое время? Вы явно не понимаете о чем речь. Не понимаете что такое — время
Вот когда вы лично начнете писать в разы быстрее, используя IronPython, то абы ПМ не стал запрещать в силу непрограммиских требований к проекту.

Мое же глубокое ИМХО, профессиональный программист должен знать 4 ре языка разного типа (один из которых обычно будет его основным):
Низкоуровневый: ассемблер или Си
Императивно-ООПшный: С++, Java, C#
Функциональный: Lisp — Scheme, что-нить из MLсемейства(можно и F#), Erlang
С динамической типизацией: Smalltalk, Python, Ruby, Perl, . JavaScript, . (1C в конце концов )

Ваше нежелание узнать новое — это же ваши проблемы, верно?

Это сообщение отредактировал(а) Skynin — 20.6.2011, 19:37

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »

[ Время генерации скрипта: 0.1524 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Оцените статью