Monday, July 23, 2007

Динамические языки под .net продолжают размножаться

Прошло всего-то два месяца после выхода библиотеки Microsoft DLR, а реализации разных динамических языков растут буйным цветом. Основные все уже на подходе:

  • Python — ну IronPython не в счет, потому как из него DLR собственно и вырос
  • Nua - проект интерпретатора lua под .net было загнулся, но теперь авторы его активно реанимируют и переносят на рельсы DLR.
  • И, наконец, Ruby - исходники IronRuby сегодня выложены в открытый доступ, под Microsoft Permissive License. Говорят, по синтетическим тестам уже эта версия кое-где обгоняет Ruby 1.8.6.

Ожидается также в скором времени реализация "самого недооцененного" языка — ECMAScript, он же javascript.

Все это довольно радужно, интегрировать какой-нибудь скриптовый движок в свое десктопное приложение получается совершенно раз плюнуть. Не нужен ни громоздкий windows scripting host, все получается даже проще чем подход в boost::python/lua и SWIG.

Веб-приложения тоже выигрывают, можно, скажем, иметь IronPython / IronRuby как фронтенд для интерфейса и всяких несложных операций, и C#/F# как бэкенд. Правда, насколько я понимаю, связь тут обычно все равно через RPC идет, но общая платформа (.net) это дело должна все равно упростить.

Усиленно надеюсь на ответный удар от Sun — хорошо работающий и отлаженный набор Java/Scala + JRuby/JPython.

9 comments:

Stepan said...

Ну, Scala работает хорошо, только она не динамический язык.

lrrr said...

Нет, я, может, неудачно выразился, -- скала, конечно, не динамический, и работает над ней толпа умных людей, но хотелось бы иметь к ней хорошую отлаженную реализацию JRuby или JPython.

То есть под дотнет есть F# и C#, и к ним, если нужен и динамический язык -- вполне рабочий IronPython. Еще IronRuby вот появился, и у меня почти нету сомнений что это будет доведено до отлаженного состояния. А в JVM пока с Python и Ruby туго.

dulanov said...

Во-первых, Scala работает и под JVM и под .NET. А, во-вторых, я не рассматриваю JPython и JRuby в роли серьёзных динамических языков для JVM. Groovy и Rhino достаточно.

Лично для себя выбрал следующую связку: сам язык Java как middle ware, Scala для компонентного программирования и Groovy для скриптования. Какой-то острой необходимости в других языках не испытываю. Единственное, жалко что Nemerle создано для .NET а не для JVM.

lrrr said...

Ну вот да, разве что на Groovy переходить. Но мне питон и руби предпочтительнее потому что там и библиотечек много, и коммьюнити огромное.

Про ветку scala под .net я в курсе, но вроде она загнулась потихоньку, разве нет? На сайте вот лежит старый компилятор scala 1.4 под .net, а под JVM тем временем уже версия 2.5 вышла..

dulanov said...

Наверное ты прав, загнулась под .NET, даже странно как-то.

Что же касается библиотек, то для самой джабы их больше чем для python и ruby вместе взятых, поэтому я и не вижу большого резона в их использовании. Для .NET с библиотеками хуже ситуация.

dulanov said...

Но по хорошему буквально неделю назад JRuby зарелизился под первой версией и народ его активно пытается использовать. Сам язык очень симпатичный и выразительный одновременно. Но ощущение чуреродности меня пока не покидает, более того остались не решены некоторые проблемы с поризводительностью, приложения RoR частельно работают быстрее на самом Ruby нежели на JVM. Поэтому я и остановил пока свой выбор в пользу Groovy, тем более от Ruby он многое перенял, а как я уже сказал выше большой надобности в библиотеках Ruby нет. C JPython ситуация хуже, но мне python сам по себе меньше нравится, несколько лет назад после появления ruby я вообще перестал смотреть в его сторону ;)

lrrr said...

Ну не знаю, для питона тоже столько всяких приятностей.. И ориентированных именно на использование в динамическом питоне..

Вообще моя тоска по нормальному JPython — это очень субъективное ;) Дело все в том, что у меня давно есть желание нормально освоить JVM как платформу и, возможно, переползать туда. Если бы там был питон или, скажем, ocaml — я чувствовал себя бы более комфортно.

Руби vs Python тоже дело вкуса. Мне тоже руби нравится, он весь такой жутко объектно-ориентированный, RoR опять же. Но как-то не пошло у меня, плюс некоторые неровности с производительностью и уникодом там отпугивают. А питон вот он как-то сразу родным стал, отчасти как раз потому что он простой, как барабан.

В общем, я надеюсь что у sun и на jpython денег теперь немного найдется.

piranha said...

> можно, скажем, иметь IronPython / IronRuby как фронтенд для интерфейса и всяких несложных операций, и C#/F# как бэкенд.

Непонятно только разнесение это, по фичам-то питон на голову выше C# того же. ;)

lrrr said...

piranha> Таки, скажем, что-то высокопроизводительное или сильно ответственное (например, связанное с деньгами) -- я б на статически типизированном языке писал. В идеале лучше всего F#/Scala в этом качестве, конечно.