Поговорим про 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(), его и будем использовать. Для этого в метод инициализации формы добавим следующее:
Для того, чтобы выполнить какой-нибудь скрипт, добавим в код метода обработки кнопки следующий код:
В указанном выше коде выполняется построчно следующее:
- Исполняется файл по указанному адресу, в котором определена функция
- Функция из Python определяется в C#
- Вычисляется значение функции с учетом введенных значений
- В текстовое поле, предполагавшееся для ответа, записывается результат арифметической операциилибо ошибка, которая возникла при выполнении.
Ну и сам Python-файл с функцией содержит код:
Проверим, как работает наш «вычислитель»:
Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?! Лично для себя я вижу неплохую возможность в изучении с использованием уже знакомых мне инструментов. С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:
Будет эквивалентен следующему коду на IronPython:
Есть некоторое сходство, верно?!
Если в течение какого-то продолжительного времени вы писали .Net приложения традиционным способом (запись, компиляция, тестирование, исправление, перекомпиляция, повторное тестирование, все сначала) и по каким-то причинам столкнулись с необходимостью работы со скриптами (даже необязательно для анализа данных), то IronPython может стать своеобразным «мостом» для перехода к написанию скриптов Python и подарит возможность взглянуть на некоторые вещи под иным углом.
Что такое ironpython windows console
Rohoss |
| ||
Начальник интернета Профиль Репутация: нет | |||
|
leshiy_AlisA |
| ||
|
Rohoss |
| |||
Начальник интернета Профиль Репутация: нет
ну с# я как бе знаю
| ||||
|
Stolzen |
| ||
Эксперт Профиль Репутация: 1 Код на питоне лаконичнее, быстрее в написании и т.п. (Язык ведь скриптовый) Добавлено через 59 секунд
| |||
|
Rohoss |
| |||
Начальник интернета Профиль Репутация: нет
Нет, не очевидно. Я думал что кроме радости от того что я пишу на питоне должны быть ещё какие-то преимущества.
| ||||
|
Stolzen |
| ||
Эксперт Профиль Репутация: 1 Rohoss, В принципе, я сходу не могу придумать пример, в котором python сильно выигрывает у C#, да и + реализация IronPython на .net может быть медленнее, чем C# (не знаю, как с IronPython, но вот с jython под jvm дела обстоят именно так — jython до 10 раз медленнее, чем java) А почему вы задумались об использовании IronPython? | |||
|
Rohoss |
| |||
Начальник интернета Профиль Репутация: нет
Это конечно жёстко.
| ||||
|
afiskon |
| ||
Опытный Профиль Репутация: нет | |||
|
Daevaorn |
| ||
Эксперт Профиль Репутация: 9
| |||
|
Skynin |
| |||
Опытный Профиль Репутация: нет
Хорош для прототипирования
Все задачи можно решать на ассемблере. С C# и IronPython вопрос на самом деле звучит так: И что такое «сложно», «трудно»? И программы обычно — эволюционируют. Как долго будет изменять/добавлять новый функционал в работающую программу? Насчет скорости выполнения, не смущает что Web это обычно PHP и JavaScript? А вот для EverNote и C# оказался медленным, и переписан был на С++. И: | ||||
|
bilbobagginz |
| |||
Naughtius Maximus Профиль Репутация: 6
очень просто (Актуально и для жабы): у тебя есть какой-то толстый мега проект создаешь интерфейс (типа плагина) на сишарпе, просто какой-то абстрактный интерфейс. теперь к этому интерфейсу можно подключаться на питоне: если тебе это ничего не говорит, то . увы, не срослось. | ||||
|
Rohoss |
| ||
Начальник интернета Профиль Репутация: нет bilbobagginz, не совсем понял. Добавлено через 2 минуты и 57 секунд
| |||
|
Skynin |
| |||
Опытный Профиль Репутация: нет
Мелкий оффтоп — когда появился С++ Сишники говорили так же — а зачем вот «это», когда легко можно сделать и на Си. Потом С++сники так говорили о Java еще и добавляя об убожестве ее возможностей. Вернемся к Python’у. Зачем бодаться с инфраструктурой для плагинов если можно — не бодаться с ней? это же легко можно — а если это же еще легче на Python’е? Опять же потому что не надо городить инфраструктуры. На C#, кучу вещей нужно проектировать заранее. Закладывать возможности будущего функционала. А на Python’е хитрый функционал можно добавлять малым количеством кода в работающее ПО и без перекомпиляции зависящего кода. Вообще, стоит на ночь прочесть книгу по Python’у. От Лутца или Саммерфилда. Тогда, если знаете C# многие вопросы — «это же легко сделать на C#» отпадут.
| ||||
|
Rohoss |
| |||||||
Начальник интернета Профиль Репутация: нет
Это не из той оперы
Вот был бы очень признателен, если бы мне продемонстрировали где айронпайтон удобней, а то просто флуд получается То есть, просто начинается утверждение что он хорош, а где и как не понятно. А по поводу динамического изменения наследника, то его смысл не очень очевиден. Насколько я понимаю, динамическая типизация, это как рефлекшен, вещь хорошая и мощная, но не дай бог её использовать без надобности, в большом проекте проблем не оберешься.
Добавлено через 3 минуты и 28 секунд | ||||||||
|
Skynin |
| |||||||||||||||
Опытный Профиль Репутация: нет
На любую демонстрацию можно сказать: так я и на C# такое напишу. Где удобно применять, уже сказал. Писать код на C# и аналогичный на Python не вижу смысла. Можно посмотреть Computer Language Benchmarks Game: Python 3 — C# Mono Так же примеры-сравнения встречаются в книжках, и конечно — Гугле.
Понимаете. наличие такой фичи в языке говорит о существовании кучи других, менее ярких.
Вы ПМ большого проекта? Или самостоятельно пишете большое приложение? Чем вызвано беспокойство, почему вас заботят не личные знания и навыки программиста, а сложности больших проектов?
Не стоит, не изучайте. Отдохните, пива попейте. Понимаете в чем заковыка — если человеку интересно, он берет и изучает. И никого не просит убедить его, что вот это интересно, это полезно, это нужно и т.д. Вопрос не в том что можно написать — а еще раз — за какое время? Вы явно не понимаете о чем речь. Не понимаете что такое — время Мое же глубокое ИМХО, профессиональный программист должен знать 4 ре языка разного типа (один из которых обычно будет его основным): Ваше нежелание узнать новое — это же ваши проблемы, верно? Это сообщение отредактировал(а) Skynin — 20.6.2011, 19:37
[ Время генерации скрипта: 0.1524 ] [ Использовано запросов: 21 ] [ GZIP включён ] |