Готовы ли "железные" языки к прайм-тайму?

Можно ли начать использовать Iron Ruby и Iron Python в производственных системах? Кроме того, существуют ли какие-либо дополнительные требования для их размещения?

И для бонусных очков, учитывая, что F # является языком функционального программирования таким же образом, что и Python, есть ли какое-то преимущество в использовании одного из них в рамках .NET Framework?

Ответ 1

Можно ли начать использовать Iron Ruby и Iron Python в производственных системах?

Да. Я отвечаю за программную систему, которая работает 24/7/365. Не Критика Жизни или Смерти критическая, но очень важная. И он использует IronPython, хотя и не очень много - в основном небольшие скрипты для вещей, которые легче делать на динамическом языке. Это означает: он работает, он не разбивает ваш процесс или не потребляет безумных объемов памяти без уважительной причины. Но база пользователей и "языковое сообщество" намного меньше, чем, например, С#, поэтому может оказаться сложнее найти помощь в Интернете.

Добавить: о "MS ушел из железа" - новости: мне действительно было бы не все в порядке. Существует много хороших языков, которые Microsoft не активно разрабатывает. Пока есть активная разработка, если она делает то, что вы хотите, и пока вы можете найти поддержку, если не можете понять, что происходит, вы должны быть в порядке. Но это, вероятно, скорее вопрос вкуса, чем технический момент.

Также есть ли какие-либо дополнительные требования для их размещения?

Для IronPython 1.0 (который по-прежнему используется) вам нужны только две сборки. Для 2.0 вам также нужны сборки DLR, но ни один из них не очень большой или имеет какие-либо внешние зависимости (что я знаю).

И для бонусных очков, учитывая, что F # является языком функционального программирования таким же образом, что и Python, есть ли какое-то преимущество в использовании одного из них в рамках .NET Framework?

Как сказал Делнан, F # - функциональный язык, Python - нет. Python - это многостраничный язык, который поддерживает некоторые функциональные концепции программирования, такие как лямбда-выражения или списки, но также и С#. F # и Python - действительно очень разные звери.

Основные отличия:

  • F # компилируется в IL компилятором F # (это не динамический язык), IronPython может быть скомпилирован или интерпретирован во время выполнения
  • F # статически типизируется с типом вывода, Python динамически типизируется (проверка типа выполняется во время выполнения)
  • F # - функциональный язык: он поддерживает такие функции, как сопоставление образцов, функции более высокого порядка и типы, метапрограммирование. Это действительно здорово, если вам нужно реализовать очень сложный алгоритм, который может быть проще реализован на функциональном языке, и вы хотите взаимодействовать с кодом С#. (Последняя часть - мое личное мнение.)
  • Python - это, прежде всего, ООП/императивный язык. Это действительно отлично подходит для добавления скриптов в существующее приложение С#. (Последняя часть - мое личное мнение.)

Если вы расскажете нам больше о том, что вы хотите сделать, возможно, мы сможем дать вам более конкретный ввод или предложить другие альтернативы.

Ответ 2

Мы используем IronPython для создания приложений B2B в Silverlight. Мы никогда не сталкивались с проблемами, связанными с производительностью или стабильностью.

Итак, у нас было два приложения (каждая около 20 000 строк кода python в интерфейсе - бэкэнды построены с использованием инфраструктуры Django или Catalyst) и создают следующее еще большее приложение.

С динамическим языком, таким как IronPython, можно изменить f.e. функцию в классе и перезагрузить ее через HTTPRequest. Не нужно перекомпилировать, перезагрузить приложение silverlight в браузере и перейти к точке, в которой изменения кода вступают в силу.

Недавно код IronPython был помещен в руки сообщества, и такие люди, как Майкл Фоорд, очень хорошо справляются с сохранением этой версии Python up2date.

Ответ 3

F # хорош для научных и финансовых приложений. Его можно использовать там, где Scala используется в мире JVM. Другими языками, реализующими эти парадигмы, являются Caml, OCaml, Erlang.