Что Mirah предлагает по сравнению с JRuby,Groovy и Scala?
Что предлагает язык Mirah по сравнению с JRuby,Groovy и Scala?
5 ответов
Согласно интервью с создателем 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.
В отличие от полнофункциональных языков, которые поставляются со своими собственными библиотеками, Mirrah больше похож на "внешний интерфейс" для библиотек Java.
Код Mirrah не зависит от его собственной среды (кроме компилятора Mirrah во время компиляции).
Это главное преимущество: другой синтаксис для Java.
против Groovy
- Синтаксис более знаком существующим программистам на Ruby/JRuby
- Статически типизированный
против JRuby
- Статически типизированный
против Скала
- Синтаксис более знаком существующим программистам на Ruby/JRuby
ОСНОВНЫМИ преимуществами являются статическая типизация (более высокая производительность на JVM и намного более легкое взаимодействие с существующими библиотеками Java) и знакомый синтаксис (если вы используете Ruby).
Когда рассматриваются зависимости (например, приразработке приложения для Android), вы не должны позволять этому руководству выбирать язык. Использование такого инструмента, как Proguard, выровняет игровое поле.
Если вы пришли из Ruby, тогда Mirah - хороший выбор. Если вы приехали из Эрланга или Хаскелла, тогда вам понадобится Скала. Если вы LISPer, то вам стоит взглянуть на Clojure.
Если ваш единственный опыт работы с Java - позор вам! - и вы, вероятно, должны пойти на Scala - он быстро завоевывает репутацию наследника Java, поддержка инструментов в настоящее время сильнее, и вы будете в большом сообществе других людей, которые сделали такой же переход, поэтому есть много блогов / учебники уже доступны.
а Groovy? Groovy почти никогда не является правильным выбором в наши дни...
Я использую Mirah каждый день в Google AppEngine.
Вот мои причины использовать Mirah:
- нет библиотеки времени выполнения
- очень хороший синтаксис
- так же быстро, как Java
Очень полезно иметь Java под капотом:
- сплошная система типов
- хорошо задокументированы
- известные решения для общих проблем
Я сделал немного Groovy, много JRuby и ни одного из Scala. Если вы знаете это, попробуйте Mirah. Если нет, я бы пошел с JRuby.
Mirah - это просто еще один рубиновый синтаксис для Java. ИМХО совсем не хорошо. Он ничего не знает о дженериках, а также имеет плохие инструменты. Лучше попробуйте Цейлон, Xtend, Scala, Kotlin и т. Д.
Mirah компилируется в классы Java (больше не в исходники). Xtend компилирует в исходники java и поэтому проще выяснить, что он делает под капотом. Цейлон и Скала имеют свои собственные stdlibs (тем не менее, в обоих случаях java-взаимодействие близко к совершенству), не уверен насчет kotlin. Котлин - ребенок JetBrains, и поэтому он связан с IDEA.
JRuby мне тоже не нравится. В Java-взаимодействии слишком много ошибок. И у этого также есть слишком много изобретенных колес. Я имею в виду кодировки (в ней используются не строки Java и регулярные выражения, а пользовательские строки поверх необработанных байтовых буферов), операции ввода-вывода, обработка исключений, потоки и т. Д.
Единственное преимущество джруби в том, что это рубин. Многие рубиновые коды будут работать как есть.
Groovy OTOH не изобретает велосипед, он использует хорошо протестированные Java-библиотеки и просто добавляет к ним синтаксический сахар. Также отлично работает Groovy-Java. Может дженерики. Потоки, исключения, строки, коллекции - это просто классы Java, как и в Java.