Что Mirah предлагает по сравнению с JRuby, Groovy и Scala? - PullRequest
12 голосов
/ 23 ноября 2010

Что язык Mirah предлагает для JRuby, Groovy и Scala?

Ответы [ 5 ]

12 голосов
/ 23 ноября 2010

В отличие от полнофункциональных языков, которые поставляются с собственными библиотеками, Mirrah больше похож на «внешний интерфейс» библиотек Java.

Код Mirrah не зависит от его собственной среды (кроме компилятора Mirrah во время компиляции).

Это главное преимущество: другой синтаксис для Java.

9 голосов
/ 23 ноября 2010

Согласно интервью с создателем Mirah смысл Mirah (что в переводе с яванского означает "рубиновый") заключается в создании высокопроизводительного варианта Ruby.Достаточно Ruby-подобного синтаксиса, чтобы было удобно работать с ним, но он все же достаточно близок к семантике Java и JVM, чтобы он мог работать без больших затрат времени выполнения поверх JVM.

Цитата выбора:

Преимущество Mirah над аналогичными языками сводится к тому, что он настолько легкий.В Groovy, Scala, JRuby, Clojure или Jython, когда вы пишете «Hello, world», вы заковываете себя в библиотеку времени выполнения.В Mirah слово «Hello, world» так же лаконично, как и в JRuby, но имеет дополнительное преимущество: он не навязывает вам никаких зависимостей;исходный файл входит, файл класса выходит, и все.Я полагаю, что JVM нужен новый язык без зависимостей, и Mirah - моя попытка его реализовать.

Хотя производительность JRuby соперничает или превосходит другие интерпретаторы Ruby, самый быстрый код JRuby все еще отстает от чистой производительности Java на порядоквеличина.В то время как вы можете ожидать улучшения производительности JRuby с выпуском 1.6, Mirah - это попытка преодолеть потолок производительности и предоставить возможность программистам, ищущим скорости выполнения наравне с кодом Java.

8 голосов
/ 27 ноября 2010

против. Groovy

  • Синтаксис, более знакомый существующим программистам на Ruby / JRuby
  • Статически набрано

против. JRuby

  • Статически набрано

против. Scala

  • Синтаксис, более знакомый существующим программистам на Ruby / JRuby

ОСНОВНЫМИ преимуществами являются статическая типизация ( более высокая производительность на JVM и гораздо более простое взаимодействие с существующими библиотеками Java ) и знакомый синтаксис (, если вы используете Ruby ).

Когда рассматриваются зависимости ( разработка приложения для Android, например ), тогда вы не должны позволять этому руководству выбирать язык. Использование такого инструмента, как Proguard, выровняет игровое поле.

Если вы приехали из Руби, тогда Мира - хороший выбор. Если вы приехали из Эрланга или Хаскелла, тогда вам понадобится Скала. Если вы LISPer, то вам стоит взглянуть на Clojure.

Если ваш единственный опыт работы с Java - позор вам! - и вы, вероятно, должны пойти на Scala - он быстро завоевывает репутацию наследника Java, поддержка инструментов в настоящее время сильнее, и вы будете в большом сообществе других людей, которые сделали такой же переход, поэтому есть много блогов / учебники уже доступны.

а Groovy? Groovy в наши дни почти никогда не является правильным выбором ...

5 голосов
/ 14 декабря 2010

Я использую Mirah каждый день в Google AppEngine.

Вот мои причины использовать Mirah:

  • нет библиотеки времени выполнения
  • очень хороший синтаксис
  • так же быстро, как Java

Очень полезно иметь Java под капотом:

  • твердая система типов
  • хорошо документировано
  • известные решения для общих проблем

Я сделал немного Groovy, много JRuby и ни одного Scala. Если вы знаете это, попробуйте Mirah. Если нет, я бы пошел с JRuby.

0 голосов
/ 04 августа 2015

Mirah - это просто еще один рубиновый синтаксис для Java.ИМХО совсем не хорошо.Он ничего не знает о дженериках, а также имеет плохие инструменты.Лучше попробуйте Цейлон, Xtend, Scala, Kotlin и т. Д.
Mirah компилируется в классы Java (больше не исходники).Xtend компилирует в исходники java и поэтому проще выяснить, что он делает под капотом.Цейлон и Скала имеют свои собственные stdlibs (тем не менее, в обоих случаях java-взаимодействие близко к совершенству), не уверен насчет kotlin.Котлин - ребенок JetBrains, и поэтому он связан с IDEA.
JRuby, мне тоже не нравится.В Java-взаимодействии слишком много ошибок.И у этого также есть слишком много изобретенных колес.Я имею в виду кодировки (в ней используются не Java-строки и регулярные выражения, а пользовательские строки поверх необработанных байтовых буферов), операции ввода-вывода, обработки исключений, потоков и т. Д.
Единственное преимущество jruby заключается в том, что он является ruby.Многие ruby-коды будут просто работать как есть.
Groovy OTOH не изобретает колесо, оно использует хорошо протестированные библиотеки java и просто добавляет к ним синтаксический сахар.Также отлично работает Groovy-Java.Может дженерики.Потоки, исключения, строки, коллекции - это просто классы Java, как и в Java.

...