Что предлагает Mirah по сравнению с JRuby, Groovy и Scala?

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


person Chiron    schedule 23.11.2010    source источник
comment
@pst: Вы думаете, что языки, являющиеся динамическими или статическими, настолько важны, что ничто другое не может сравниться с ними?   -  person JUST MY correct OPINION    schedule 23.11.2010
comment
@pst: Некогда учить четыре языка :), не говоря уже о том, что я сомневаюсь, что смогу почувствовать истинный аромат каждого языка, быстро понюхав его.   -  person Chiron    schedule 23.11.2010
comment
@El Gusto Я говорю «пробуй», а не учись (досконально) :-) По моему опыту, всего несколько дней в небольшом вводном проекте, позволяет мне узнать, хочу ли я следовать этому языку (например, я присваиваю ему заслуги) или нет . Это не означает, что нюансы известны или код идиоматичен, но этого достаточно, чтобы в целом увидеть общую картину.   -  person    schedule 23.11.2010
comment
@ ТОЛЬКО МОЕ ПРАВИЛЬНОЕ МНЕНИЕ (классное имя, кстати) - таких вопросов возникает довольно часто. Яблоки и апельсины. Неважно, Red Delicious (ick!) Или Blood Navel.   -  person    schedule 23.11.2010
comment
@ 3lijandro: Чего не хватает в данных ответах? Я бы предложил либо упомянуть то, что в настоящее время все еще отсутствует в IYHO, либо принять ответ, что было бы неплохо.   -  person soc    schedule 28.11.2010


Ответы (5)


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

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

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

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

person Thilo    schedule 23.11.2010
comment
Спасибо, но все еще непонятно. - person Chiron; 23.11.2010
comment
Краткое содержание: что предлагает язык Mirah по сравнению с JRuby, Groovy и Scala? По их словам, перформанс. - person Thilo; 23.11.2010
comment
Scala имеет статическую типизацию. Ruby / Groovy / Clojure увеличивает производительность, чего не делает Scala. Почему он в этом списке? - person pedrofurla; 23.11.2010
comment
@pedrofurla. Я согласен с вами в том, что я не согласен с тем, чтобы Scala была в списке. В Scala есть библиотека времени выполнения, но она, вероятно, не добавляет значительных накладных расходов с точки зрения производительности. - person Thilo; 23.11.2010
comment
@El Gusto: Ну, когда вы пишете Hello World в Scala, вы получаете 6.496.110 scala-library.jar (Scala 2.8.1), плюс собственные библиотеки Java (которые, конечно, позорят этот файл). То, что Mirah не предлагает никаких новых библиотек, действительно интересно. - person Daniel C. Sobral; 23.11.2010
comment
@pedrofurla На самом деле я ничего не читал о производительности на их сайте. Они говорят: Ни один из текущих языков JVM не отвечает эстетическим целям Mirah без введения библиотеки времени выполнения, часто непомерно большого размера. Если только Thilo не придерживается странного определения производительности. - person Daniel C. Sobral; 23.11.2010
comment
@Daniel: Эй, я просто цитирую команду Mirah здесь. Как часто я должен говорить в соответствии с ними, прежде чем это перестанет становиться моим странным определением производительности? ;-) Добавляем очередную цитату из интервью. - person Thilo; 23.11.2010
comment
@Thilo Хорошо, возможно, это было неуместно, но эта цитата относится только к JRuby. Я не видел никаких заявлений о производительности для других языков JVM, включая Scala. Увы, любые такие утверждения были бы неверными, поскольку Scala генерирует тот же байт-код, что и Java. Тем не менее, он поставляется с библиотекой, что справедливо, как и в цитированном мною тексте. - person Daniel C. Sobral; 23.11.2010
comment
С точки зрения производительности, благодаря поддержке специализации, доступной, начиная с Scala 2.8, Scala может создавать более работающий код, чем Java, в ряде сценариев - за счет исключения некоторой упаковки и распаковки примитивов. Цена этого - увеличение размера скомпилированного байт-кода. - person Kevin Wright; 21.12.2010
comment
@pedrofurla Ну, потому что это мой вопрос. Я не упомянул Clojure, так почему он в вашем списке? - person Chiron; 10.09.2014
comment
Не помню, прошло уже почти четыре года :) - person pedrofurla; 10.09.2014

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

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

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

person soc    schedule 23.11.2010

vs. Отличный

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

vs. JRuby

  • Статически типизированный

vs. Scala

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

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

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

Если вы пришли из Ruby, то Mirah - хороший выбор. Если вы переходите с Erlang или Haskell, вам понадобится Scala. Если вы LISPer, вам стоит взглянуть на Clojure.

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

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

person Kevin Wright    schedule 27.11.2010
comment
@seymour - Джеймс Страчан (создатель Groovy) красиво резюмирует это в своем блоге: macstrac.blogspot.com/2009/04/ - person Kevin Wright; 27.03.2011

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

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

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

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

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

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

person hakunin    schedule 14.12.2010
comment
Спасибо, что поделились производственной историей. - person Chiron; 14.12.2010
comment
Не уверен, что понимаю эту логику: используйте JRuby, если вы еще не работали с Groovy или JRuby. Если вы это сделали, то идите с Мира. Я бы бросил вызов этому! Во всяком случае, есть веские аргументы в пользу выбора Scala, если у вас нет особых потребностей в синтаксисе Ruby или отказе от зависимостей без использования proguard. - person Kevin Wright; 21.12.2010
comment
Я могу порекомендовать Ruby / JRuby любому, потому что это легко понять и весело. - person hakunin; 28.12.2010
comment
@hakunin, почему бы не пойти со Scala? Считаю недостатком отсутствие библиотеки std. Потому что у вас хороший синтаксис, но вы все равно должны использовать уродливый API библиотеки Java. Например. сравнить Collections.sort (l) {| a, b | a.c.compareTo (b.c)} на l.sort_by (&: c) - person Alexey; 15.08.2011
comment
любой учебник, как это сделать? ^^ (мирах с GAE) - person Kokizzu; 18.11.2012
comment
Вы можете начать здесь: code.google.com/p/mirah-on-gae (Отказ от ответственности: я переключился на Pythong для GAE, не знаю, в каком состоянии находится Mirah) - person hakunin; 18.11.2012

Mirah - это просто еще один рубиновый синтаксис для java. ИМХО совсем не хорошо. Он ничего не знает о дженериках, а также имеет плохой инструментарий. Лучше попробуйте ceylon, xtend, scala, kotlin и т. Д.
Mirah компилируется в классы java (больше не в исходники). Xtend компилируется в исходные коды java, и так проще узнать, что он делает под капотом. У Ceylon и scala есть свои собственные библиотеки stdlib (тем не менее, в них обоих java interop почти идеален), насчет kotlin я не уверен. Kotlin - дитя JetBrains, поэтому он привязан к IDEA.
JRuby Мне тоже не нравится. Слишком много ошибок в взаимодействии с Java. И еще слишком много изобретенных колес. Я имею в виду кодировки (он не использует строки java и регулярные выражения, а настраиваемые строки поверх необработанных байтовых буферов), операции ввода-вывода, обработку исключений, потоки и т. Д.
Единственное преимущество jruby - это то, что он рубиновый. Многие Ruby-коды будут работать как есть.
Groovy OTOH не изобретает велосипед, он использует хорошо протестированные библиотеки java и просто добавляет к ним синтаксический сахар. Также отличное взаимодействие с Groovy-java. Это могут дженерики. Потоки, исключения, строки, коллекции - это просто классы java, как они есть в java.

person guai    schedule 04.08.2015