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

StackOverflow https://stackoverflow.com/questions/172793

  •  05-07-2019
  •  | 
  •  

Вопрос

Что ж, после долгого времени написания .net-программ на C # я начал злиться и расстраиваться из-за всего этого синтаксического мусора, который поставляется со статически типизированными языками.Теперь я хочу перейти на динамически типизированные языки, которые используют преимущества CLI.Поэтому я немного поискал вокруг, и мне не понравилось то, что я увидел.Сначала я искал IronPython.Но проект кажется неорганизованным, он просто выглядел не очень хорошо.Потом я услышал о Бу.Мне понравился boo's, идеал и все такое, но такое ощущение, что проект остановлен.Потом я услышал о 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).

Что касается утиного набора текста и статического набора текста Boo, то мне кажется, что они оба работают нормально.

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

Если вы еще этого не видели, ознакомьтесь с IronPython Studio .

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

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

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

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

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

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

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

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

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top