ミラはジュルビー、グルーヴィー、スカラに何を提供していますか?
-
27-09-2019 - |
質問
何をしますか ミラー言語 Jruby、Groovy、Scalaに提供しますか?
解決
によると ミラの作成者とのインタビュー ミラのポイント(これはジャワの「ルビー」を意味する)は、ルビーの高性能バリアントを作成することです。操作に快適にするのに十分なルビーのような構文ですが、JVMの上に大きなランタイムレイヤーのオーバーヘッドなしで実行できるように、JavaおよびJVMセマンティクスに十分に近いです。
選択の引用:
同様の言語に対するミラの利益の多くは、とても軽量であることにかかっています。 Groovy、Scala、Jruby、Clojure、またはJythonで、「Hello、World」と書く瞬間に、ランタイムライブラリに縛り付けました。ミラでは、「こんにちは、世界」はJrubyと同じように簡潔ですが、あなたに依存関係を押し付けないという追加の利点があります。ソースファイルが入り、クラスファイルが表示されます、それだけです。 JVMには新しい依存関係のない言語が必要であり、ミラはそれを提供しようとする私の試みです。
Jrubyのパフォーマンスは他のRuby通訳者に匹敵するかそれを超えていますが、最速のJrubyコードは依然として純粋なJavaのパフォーマンスを桁違いに遅らせています。 Jrubyのパフォーマンスが1.6リリースで改善することを期待できますが、Mirahはパフォーマンスの上限を突破し、Javaコードと同等の実行速度を探しているプログラマーにオプションを提供しようとします。
他のヒント
独自のライブラリが付属するフル機能の言語とは異なり、MirrahはJavaライブラリとは異なる「フロントエンド」に似ています。
Mirrah Codeは、それ自体の環境に依存しません(コンパイル時のMirrahコンパイラを除く)。
それが主な利点です。Javaの別の構文です。
vs.グルーヴィー
- 既存のRuby/Jrubyプログラマーにより馴染みのある構文
- 静的に入力されました
vs. jruby
- 静的に入力されました
vs. Scala
- 既存のRuby/Jrubyプログラマーにより馴染みのある構文
主な利点は静的タイピングです(JVMでのパフォーマンスの高速化と、既存のJavaライブラリとのはるかに簡単な相互作用)そしておなじみの構文(ルビーから来たら).
依存関係が考慮事項である場合(たとえば、Androidアプリの開発)そうすれば、これがあなたの言語の選択を導くべきではありません。 Proguardのようなツールを使用すると、競技場が平準化されます。
あなたがルビーから来ているなら、ミラは良い選択です。 ErlangまたはHaskellから来ている場合は、Scalaが必要です。あなたがリスパーなら、Clojureを見てみたいと思うでしょう。
あなたの唯一の以前の経験がJavaであるなら、あなたを恥じてください! - そして、おそらくScalaに行くべきです - Javaの相続人としての評判を急速に獲得しています。ツールサポートは現在強く、同じ移行を行った他の人の大規模なコミュニティにいるので、たくさんのブログ/があります/すでに利用可能なチュートリアル。
そしてグルーヴィー? Groovyは最近ではほとんど正しい選択ではありません...
Google Appengineで毎日Mirahを使用しています。
ミラを使用する私の理由は次のとおりです。
- ランタイムライブラリはありません
- とても素敵な構文
- Javaと同じくらい速い
ボンネットの下にJavaを持つことも非常に役立ちます:
- ソリッドタイプシステム
- よく文書化されています
- 一般的な問題の既知のソリューション
私はいくつかのグルーヴィー、たくさんのJruby、そしてScalaを何もしませんでした。これらを知っているなら、ミラを試してみてください。そうでない場合は、Jrubyと一緒に行きます。
ミラは、Javaのもう1つのRubyish構文です。私見はまったく良くありません。ジェネリックについては何も知らず、ツールが不十分です。 Ceylon、Xtend、Scala、Kotlinなどを試してみてください。
ミラーはJavaクラスにコンパイルします(ソースではなく)。 XtendはJavaソースにコンパイルされているので、フードの下で何をするかを見つけるのは非常に簡単です。 CeylonとScalaには独自のStdlibsがあります(それでもJava Interopは両方とも完璧に近いです)、Kotlinについてはわかりません。 KotlinはJetbrainsの子供であり、したがってアイデアに結びついています。
jruby私も好きではありません。 Java Interopのバグが多すぎます。また、再発明されたホイールが多すぎます。私はエンコーディング(Java文字列や正規表現ではなく、生のバイトバッファーの上にカスタム文字列を使用するのではなく)、iOS、例外処理、スレッドなどを意味します。
Jrubyの唯一の利点は、Rubyであることです。多くのRubyコードはそのまま機能します。
Groovy Otohはホイールを再発明せず、よくテストされたJavaライブラリを使用し、構文砂糖も追加します。また、Groovy-javaのインターロップも素晴らしいです。ジェネリックができます。スレッド、例外、文字列、コレクション - は、JavaのようにJavaクラスです。