Хороший динамический язык программирования для рекомендации.net

Что ж, после долгого времени написания.net программ на C# я начал злиться и расстраиваться из-за всего этого синтаксического мусора, который идет со статически типизированными языками. Теперь я хочу перейти на языки с динамической типизацией, которые используют преимущества CLI. Поэтому я немного искал вокруг, и мне не понравилось то, что я увидел. Сначала я искал IronPython. Но проект кажется дезорганизованным, он просто не выглядел хорошо. Потом я услышал о Бу. Мне понравились бу, идеал и все такое, но вроде как проект остановлен. Тогда я услышал о IronRuby, но проект все еще находится на стадии бета-тестирования, и поэтому я решил подождать, пока он не станет более зрелым.

Так как я не смог найти хороший CLR-совместимый динамический язык, я спрашиваю вас, ребята, что вы (вы) используете?

Так как люди начали спрашивать, в чем причина не выбирать IronPython. Ну, причина, как я уже говорил ранее, кажется дезорганизованной. Зачем?

1- Домашняя страница указывает на другую страницу в codeplex, домашняя страница должна быть чистой и просто указывать на преимущества IronPython, возьмем страницу IronRuby в качестве примера http://www.ironruby.net/ которая скрывает языковые материалы от пользователь (даже если пользователь должен получить доступ к svn IronRuby перед его использованием). Какие проблемы IPython пытался решить, когда создавался. Есть ли страница с такой информацией? Ну, страница есть, но она скрыта на "странице дополнительной информации" среди множества бессмысленных ссылок на статьи. На странице Бу его ясно видно как Манифест http://boo.codehaus.org/BooManifesto.pdf.

Это больше, но у меня есть ощущение, что IPython - просто домашний переводчик, несмотря на качество, которое он может иметь на самом деле. Я чувствовал, что безопаснее скачать Boo и использовать IronPython (но не волнуйтесь, Microsoft, я также скачал IPython).

Что касается Duck-Typing и статической типизации Boo, мне кажется, что они оба работают нормально.

8 ответов

Решение

Я бы все еще использовал Бу. Я не уверен, почему вы считаете, что Бу был остановлен. Разработка иногда кажется медленной, но в настоящее время над исправлениями ошибок работают несколько человек, о чем свидетельствует этот список недавно исправленных проблем (ошибок).

Для тех, кто не знаком с Boo, он очень похож на Python, но включает в себя вещи, которых нет в Python (например, интерполяция строк и синтаксические макросы). Вы можете скомпилировать программы Boo или использовать Boo с помощью Booish"Boo Interactive Shell".

Кстати, мне не понравился IronPython, когда я смотрел на него пару лет назад. Для меня это выглядело как прямой порт Python для CLI, но, насколько я могу судить, он не включал в себя новые функции, которые требуются для разработки.NET.

РЕДАКТИРОВАТЬ: IronPython, кажется, прогрессировал, так как я впервые посмотрел на него (спасибо за Курт указал на это). Однако я не удосужился снова взглянуть на IronPython, так как нашел Boo.

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

Почему люди предлагают Бу? Это статически типизированный язык, который не тот, о котором просит этот вопрос. Да, я знаю, что он имеет опциональную типизацию утки, но на самом деле, если информация, относящаяся к Boo, приемлема для автора вопроса, тогда вопрос должен быть отредактирован, чтобы прояснить это.

Что касается IronPython, вы сказали, что он вам не понравился, но на самом деле я не могу дать никакого ответа на столь смутные критические комментарии:)

В качестве альтернативы, я бы посоветовал вам взглянуть на cPython. Пара баллов:

  • Вы можете создавать файлы.exe с py2exe и другими инструментами.
  • Гораздо больший доступ к сторонним библиотекам и фреймворкам Python
  • Доступ к API Windows через pywin32
  • Расширение Python, написанное на C, можно использовать (в отличие от IronPython, хотя предпринимаются усилия по улучшению этой ситуации)

Вы обнаружите, что вам действительно не нужен.NET для большинства вещей. Конечно, все зависит от вашего приложения. Тогда для интеграции с существующим кодом.NET, очевидно, вы должны использовать IronPython.

Вы говорите, что хотите "динамический", но если мотивация состоит только в том, чтобы избежать "всего этого синтаксического мусора", вы должны взглянуть на F#. Он статически типизирован, но обладает легким синтаксическим ощущением динамического языка, а также интерактивным режимом (цикл REPL).

Вы также можете взглянуть на язык фанатов. Это не просто динамика, это смесь статики и динамики. И, как и большинство новых языков, это чистый ОО со смесью функционала. Он также работает на платформе JVM и CLR.

По синтаксису он ближе к C# с большим количеством синтаксиса сахара, так что он выглядит как C#, сочетающийся с Ruby/Python.

Так как язык новый, всего 3 года, его производительность еще не звездная.

Обновление 21 февраля 2014: фан сменил название на Fantom

Я шел по тому же пути. Проверено Boo, dotLISP, IronPython и т. Д.

Я рекомендую IronPython. НО, если у вас еще нет опыта работы с Python, вы, вероятно, быстрее освоите ядро ​​Python, загрузив CPython и используя его для примеров и уроков.

Как только вы поймете CPython, IronPython станет намного проще для понимания. Конечно, вам все еще нужно понимать C# и иметь доступ к документации.Net SDK. Без этого с IronPython чрезвычайно сложно получить полезные вещи.

Я согласен с вашим мнением о том, что IronPython кажется дезорганизованным, но я использовал его для (небольших) проектов, и до сих пор был очень доволен этим.

Если вы еще этого не видели, вы должны проверить IronPython Studio.

... синтаксический мусор, который поставляется со статически типизированными языками...

Если вас беспокоит синтаксическая корзина, вы можете также проверить статически типизированные языки с выводом типа, особенно F#.

Посмотрите на Clojure. Версия CLR все еще находится на ранней стадии, но вы, вероятно, могли бы заставить работать версию Java в.Net через IKVM

Другие вопросы по тегам