Могу ли я рассматривать IronPython как замену Pythonic C #? - PullRequest
12 голосов
/ 11 апреля 2010

Я понимаю, что эта тема была каким-то образом освещена в StackOverflow, но я все еще не могу найти точный ответ: Могу ли я рассматривать IronPython как замену Pythonic C # ?

Я использую CPython каждый день, мне нравится Zen :), но моя текущая задача - это приложение только для Windows со сложным графическим интерфейсом и некоторыми другими функциями, которые я хотел бы реализовать с помощью .NET.

Ответы [ 6 ]

13 голосов
/ 11 апреля 2010

IronPython НЕ эквивалентен «другим языкам, работающим в .NET», поскольку язык поддерживает значительно меньше функций среды CLR.

Классы IronPython не являются "настоящими" .NET-классами, и API DLR необходимо использовать при вызове кода IronPython из традиционных языков на основе CLR; это означает, что если вы хотите по-настоящему легкую совместимость, вы застряли, написав клей, чтобы «спрятать» DLR.

Boo - это гораздо более полный язык, вдохновленный Python, предназначенный для CLR. Его (динамически выводимая) статическая типизация (которая может быть заменена утиной типизацией на основе переменной за переменной) также позволяет библиотекам, написанным на Boo, быть естественным образом использованы в C # и других языках на основе CLR, без необходимости делать какие-либо допуски используемый язык.

10 голосов
/ 11 апреля 2010

Это зависит от того, что вам нужно в C # и что нужно заменить.

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

Если причина, по которой вы используете это просто «Мне нужно что-то, что работает в .NET и может получить доступ к библиотекам .NET», то да, любой язык, который работаетв .NET можно использовать для его замены.

Если вы используете C #, потому что работаете с командой программистов, знающих только C-подобные языки, C # также может быть сложно заменить на IronPython.

Это зависит от того, какие характеристики в C # вам важны, и вам нужно найти замену.

2 голосов
/ 11 апреля 2010

Следует учитывать одну вещь - и я понятия не имею, как IronPython ведет себя в этом отношении - это Common Language Subsystem (CLS) соответствие для сборок. Соответствие CLS гарантирует, что любой язык .Net может получить доступ к скомпилированной DLL вашего кода. Это означает, например, в C # у вас не может быть никакого открытого или защищенного метода или параметра, который является целым числом без знака. Я понятия не имею, насколько легко добиться CLS-совместимого кода в IronPython, интересной записи в блоге , которую я нашел, начиная с 2008 года.

1 голос
/ 11 апреля 2010

Вопрос "Могу ли я рассматривать IronPython как замену Pythonic для C #?" очень хорошо ответил Джальф. Если бы вопрос был "Является ли IronPython Python для .NET Language?" хотя, тогда ответ будет абсолютно да. Принципы дзен - особенно Наименьший сюрприз - абсолютно применимо и к интеграции IronPython с CLR.

0 голосов
/ 15 июня 2010

«Сложный» пользовательский интерфейс обычно подразумевает не «написание», а построение его в Visual Studio с указанием и щелчком.Все обратные вызовы и код события вставляются отдельно.На стороне питона почти ничего подобного нет.Я бы сказал, прямо на C #.

Хотя есть одна неприятная вещь.Если вы настоящий Pythonista, статическая типизация очень быстро вам откроется, и вам захочется бросать тяжелые предметы случайным людям.

Если придет время, подумайте о создании пользовательского интерфейса на C # и внедрении IronPythonв качестве скриптового движка для реализации вашей бизнес-логики.Это могло бы быть терпимым промежуточным положением.

0 голосов
/ 13 апреля 2010

Я думаю, если бы ты это сделал, было бы проще в .NET 4.0.

Я думаю, что вы можете использовать недавно выпущенный IronPython 2.6.1 для .NET 4.0,

В IronPython уже легко использовать C #.

Как видите здесь , вы можете легко сделать это наоборот (используя IronPython из C #) с .NET 4.0.

Я думаю, что это возможно, но я согласен, что Бу - более безопасный путь.

...