Подтвердить что ты не робот

Можно ли рассматривать IronPython как замену Pythonic на С#?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

Вопрос "Можно ли рассматривать IronPython как замену Pythonic для С#?" ответил довольно хорошо на jalf. Если вопрос: "Является ли IronPython Pythonic.NET Language?" хотя, тогда ответ был бы абсолютно "да". Принципы Zen - esp. наименее неожиданным - абсолютно применимы к интеграции IronPython с CLR.

Ответ 5

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

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

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

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

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

Ответ 6

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

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

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