Я действительно понимаю, что эта тема была затронута в некотором роде в StackOverflow, но я все еще не могу выяснить точный ответ: я могу рассматривать IronPython как замену Pythonic к C#?
Я использую CPython каждый день, я люблю Дзэн :) но моей текущей задачей является приложение только для Windows со сложным GUI и некоторыми другими опциями, которые я хотел бы реализовать использование.NET.
IronPython НЕ эквивалентен " другие языки, работающие на .NET », поскольку этот язык поддерживает значительно меньшее количество функций среды выполнения CLR.
Классы IronPython не являются «настоящими» классами .NET, и DLR API-интерфейсы необходимо использовать при вызове кода IronPython из традиционных языков на основе CLR; это означает, что если вам нужна действительно простая функциональная совместимость, вам придется писать клей, чтобы «спрятать» DLR.
Boo - гораздо более полный язык, основанный на Python и ориентированный на CLR. Его (динамически выводимая) статическая типизация (которую можно заменить утиной типизацией для каждой переменной) также позволяет библиотекам, написанным на Boo, изначально использоваться из C # и других языков на основе CLR, без необходимости делать какие-либо поправки на используемый язык.
Это зависит от того, что именно в C# вам нужно, и что нужно заменить.
Если причина использования C# в том, что вам нужен достаточно высокопроизводительный статически типизированный язык, то нет, IronPython, скорее всего, не станет заменой.
Если причина, по которой вы его используете, просто "мне нужно что-то, что работает на .NET и может обращаться к библиотекам .NET", то да, любой язык, работающий на .NET, может быть использован для его замены.
Если вы используете C#, потому что работаете с командой программистов, которые знают только C-подобные языки, то C# также может быть трудно заменить IronPython.
Это зависит от того, какие именно характеристики C# вас волнуют и для чего вам нужно найти замену.
Одна вещь, которую следует учитывать - и я понятия не имею, как IronPython ведет себя в этом отношении - это соответствие Common Language Subsystem (CLS) для сборок. Соответствие CLS гарантирует, что любой язык .Net может получить доступ к скомпилированной DLL вашего кода. Это означает, что, например, в C# у вас не может быть публичного или защищенного метода или параметра, который является беззнаковым целым числом. Я понятия не имею, насколько легко добиться CLS-совместимого кода в IronPython, интересная запись в блоге, которую я нашел, датируется 2008 годом.
Вопрос «Могу ли я рассматривать IronPython как замену Python C #?» получил довольно хороший ответ от jalf. Если бы вопрос был таким: «Является ли IronPython языком Pythonic .NET?» хотя тогда ответ будет абсолютно положительным. Принципы дзен - особенно. наименьшее удивление - абсолютно применимо и к интеграции IronPython с CLR.
Я думаю, если бы вы сделали это, {{1} } в .NET 4.0 было бы проще.
Я думаю, вы можете использовать недавно выпущенный IronPython 2.6.1 для .NET 4.0,
Уже легко использовать C # в IronPython.
Как вы можете видеть здесь , вы можете легко сделать это наоборот (используя IronPython из C #) с .NET 4.0.
Я думаю, что это возможно, но я согласен, что Бу - более безопасный путь.
«Сложный» пользовательский интерфейс обычно влечет за собой не «написание» его, а его создание в Visual Studio с помощью «укажи и щелкни». Все обратные вызовы и код событий вставляются сами по себе. На стороне питона почти ничего подобного нет. Я бы сказал, сразу переходите на C #.
Но есть одна неприятная вещь. Если вы настоящий Pythonista, статическая типизация дойдет до вас очень и очень быстро, и вы захотите начать бросать тяжелые предметы в случайных людей.
Если это произойдет, подумайте о создании пользовательского интерфейса с помощью C # и о внедрении IronPython в качестве механизма сценариев для реализации вашей бизнес-логики. Это могло быть приемлемой золотой серединой.