В нашей компании мы готовы все перенести на Python вместо C#, мы консалтинговая компания и обычно пишем небольшие проекты на C#, мы не делаем огромных проектов, и наша работа больше основана на сложных математических моделях, а не на сложных программных структурах. Поэтому мы считаем, что IronPython - хорошая платформа для нас, потому что он предоставляет стандартные функции графического интерфейса для Windows и доступ ко всем библиотекам .Net.
Я знаю, что студия Ironpython не завершена, и на самом деле мне было сложно добавлять свои ссылки, но мне было интересно, может ли кто-нибудь перечислить для нас некоторые из плюсов и минусов этой миграции, учитывая, что код Python легче читается нашими клиентами и мы обычно доставляем прототип прототипа вместо полнофункционального кода, наши клиенты обычно сами реализуют приложение






То, как вы описываете вещи, звучит так, будто ваша компания просто переходит на Python ради Python. Есть ли какая-то конкретная причина, по которой вы хотите использовать Python? Нужен ли более динамичный язык? Поможет ли вам функциональное программирование? Если у вас есть отличный рабочий набор инструментов на C#, зачем вообще переключаться?
Если вы настроены на переключение, вы можете подумать о том, чтобы начать со стандартного Python, если вы специально не привязаны к библиотекам .NET. Вы можете писать кроссплатформенные графические интерфейсы пользователя, используя ряд различных фреймворков, таких как wxPython, pyQt и т. д. Тем не менее, Visual Studio имеет гораздо лучший дизайнер графического интерфейса по сравнению с любыми инструментами для создания оконных макетов Python.
Есть много причин, по которым вы хотите перейти с C# на python, я недавно сделал это сам. После долгих исследований вот причины, по которым я придерживаюсь CPython:
Ironpython - отличная работа, и если бы у меня была специальная библиотека .NET, которую мне пришлось бы использовать, IronPython мог бы быть выбором, но для задач общего назначения люди, кажется, предлагают использовать исходный CPython, если Гвидо не передумает.
Следует отметить, что теперь IronPython 2.0 превзошел CPython во всех тестах производительности. IronPython 1.0 был о совместимости, 2.0 был о производительности. Имейте в виду, что можно использовать JIT, например Psyco, для значительного улучшения производительности Cpython (от 2x до 100x).
Лично я использую и IronPython, и Cpython. Я обычно использую IronPython, когда мне нужен .Net, Cpython, когда мне нужны numpy, scipy или matplotlib. Остальные мои скрипты, как правило, нормально работают и под тем, и с другим. Я использую SciTe в качестве редактора для IronPython и Spyder в качестве среды IDE для CPython. Лично я большой поклонник Spyder, но в настоящее время он не очень хорошо работает с IronPython.
Моя компания Resolver Systems разрабатывает, вероятно, самое крупное приложение, написанное на IronPython. (Он называется Resolver One и представляет собой электронную таблицу Pythonic). Мы также размещаем проект Ironclad (для запуска расширений CPython под IronPython), и он идет хорошо (мы планируем выпустить бета-версию Resolver One & numpy в ближайшее время).
Причиной, по которой мы выбрали IronPython, была интеграция с .NET - нашим клиентам нужна 100% интеграция с Windows, и сейчас самый простой способ сделать это - .NET.
Мы разрабатываем наш графический интерфейс (без поведения) в Visual Studio, компилируем его в DLL и создаем подкласс от IronPython для добавления поведения.
Мы обнаружили, что IronPython в одних случаях работает быстрее, а в других - медленнее. Однако команда IronPython очень отзывчива: всякий раз, когда мы сообщаем о регрессе, они ее исправляют и обычно переносят обратно в выпуск исправления ошибок. Если вы беспокоитесь о производительности, вы всегда можете реализовать критическую часть на C# (нам еще не приходилось этого делать).
Если у вас есть опыт работы с C#, то IronPython будет для вас естественным и проще, чем C#, особенно для прототипов.
Что касается студии IronPython, мы ее не используем. У каждого из нас есть свой выбор редактора (TextPad, Emacs, Vim & Wing), и все работает нормально.
F# тоже неплохо подходит для написания сценариев, не знаю, рассматривали ли вы это как вариант.