2008-10-05 4 views
9

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

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

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

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

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

О старинном наборе Дак-Типинга и о том, что они оба работают отлично для меня.

+0

Домашняя страница IronPython * - это сайт Codeplex: http://www.codeplex.com/IronPython – 2008-10-06 01:42:25

ответ

7

Я все еще использую Boo. Я не уверен, почему вы считаете, что Бу остановлен. Разработка иногда кажется медленной, но в настоящее время несколько человек работают над исправлениями ошибок, как показано this list of recently fixed issues (bugs).

Для тех, кто не знаком с Boo, он очень похож на Python, но включает в себя вещи, которые Python не делает (например, string interpolation и syntatic macros). Вы можете скомпилировать программы Boo или использовать Boo через «Boo Interactive Shell» booish.

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

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

+0

Хм, я считаю, что вы правы. Думаю, я искал не то место, но о его удобстве использования, как вы думаете, его можно использовать в приложениях среднего размера? – Diones 2008-10-05 23:24:19

+0

А какая IDE вы используете для программирования Boo? – Diones 2008-10-05 23:25:48

+0

Помимо LINQ (который немного затрудняет переход на Python без внесения изменений в основной язык - реплики «обнимания и расширения»), какие «новые функции .NET», по вашему мнению, отсутствуют? Очевидно, я полностью поддерживаю IronPython! – 2008-10-05 23:32:36

1

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

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

7

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

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

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

Кроме того, я хотел бы предложить, что вы посмотрите на cPython. Пара баллов:

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

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

5

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

1

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

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

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

Update 21-февраля-2014: Fan изменила свое название на Fantom

1

Я был вниз подобный путь. Проверено Boo, dotLISP, IronPython и т. Д.

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

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

0

Посмотрите на Clojure. Версия CLR все еще находится на ранней стадии, но вы, вероятно, можете получить версию java.Инет через IKVM

0

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

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

Смежные вопросы