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.

6 comments:

Stepan Koltsov said...

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

lrrr said...

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

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

lrrr said...

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

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

lrrr said...

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

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

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

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

Alexander Solovyov said...

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

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

lrrr said...

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