Scala対Groovy対Clojure




language-comparisons (4)

スカラ

Scalaは、 Funnelと呼ばれる純粋な関数型言語から進化し、明確な改善が可能な場合や、言語の機能的性質を損なう場合がある場合を除き、ほとんどすべてのJava構文のクリーンルームの実装を表します。 そのような違いには、静的メソッドの代わりにシングルトンオブジェクトや型推論が含まれます。

これの多くは、マーティン・オデスキーのPizza言語の以前の研究に基づいていました。 OO / FPの統合​​は単なる閉鎖をはるかに超えており、言語は事後機能として記述されています。

それにもかかわらず、Javaには多くの点で最も近いものです。 主にOOサポートと静的型付けが組み合わされているだけでなく、Javaと非常に緊密に統合されるべき言語設計の明白な目標のためもあります。

Groovy

Groovyは、Javaの最大の批判の2つに明示的に取り組んでいます

  • 動的に型指定されているため、多くの定型文と
  • 言語にクロージャを追加する。

ClojureとScalaが提供するより豊富な機能的な構成要素の一部を提供するのではなく、特にスクリプト・スタイル・プログラムを書くための明確な進化的改善を提供するJavaと構文的に最も近いでしょう。

Groovyは3つの言語の中で最も強力な商用バックアップを持っています。

Clojure

ClojureはLISPファミリの関数型言語であり、動的に型指定されています。

STMサポートなどの機能は、すぐに使用できる並行処理サポートを提供しますが、Scalaはこれを複製するためにAkkaなどのサードパーティライブラリが必要です。

構文上、典型的なJavaコードからの3つの言語のうち最も遠いものです。

私はまた、私がScalaに最も知っていることを明らかにする必要があります:)

誰かがScala、Groovy、Clojureの主な違いを説明できますか? 私はこれらのコンパイルがJVM上で動作することを知っていますが、私はそれらの単純な比較をしたいと思います。


Groovyはダイナミックに型付けされた言語であり、その構文はJavaに非常に近く、構文の改善により、コードの軽量化と定型化の簡略化が可能になりました。 インタプリタをコンパイルするだけでなく、コンパイルすることもできます。これにより、新しい構文(Javaについて知っていること)を習得することなく、迅速なプロトタイプ作成、スクリプト、および動的言語の学習に適しています。 Groovy 2.0以降、 静的コンパイルのサポートも拡大しています 。 Groovyはクロージャをサポートしていて、やや機能的なスタイルのプログラミングをサポートしていますが、従来の関数型プログラミングの定義からかなり離れています。

Clojureは、 Software Transactional Memoryのようないくつかの高度な機能を備えたLispの方言です。 Lispが好きで、JVMのようなものを使いたいなら、Clojureがあなたのためです。 JVM上で実行される最も機能的な言語 、おそらく最も有名な言語です。 また、他のLisp方言よりもimmutability重視しており、これは関数型言語愛好家の心臓部に近づいています。

Scalaは完全にオブジェクト指向の言語であり、Java以外にも、非研究言語で利用可能な最先端の型システムの 1つと、確かにJVM上の最も進んだ型システムです。 また、オブジェクトの方向性を損なうことなく、関数型言語の多くの概念と機能を組み合わせていますが、関数型言語特性の妥協は、後者のいくつかの熱狂的ファンを放棄します。

Groovyは、Grailsでよく受け入れられているWebフレームワークです。 また、Mavenの一般的な代替手段となっているGradleビルドシステムにも対応しています。 個人的には、特にJythonとJRubyがJVM土地に侵入し始めてから、限られた有用性を持つ言語だと思っています。

Clojureは、非常に面白い機能をいくつか割り引いていても、JVM上のLispの方言であることだけで、魅力的です。 それはその人気を制限するかもしれないが、私はそれが長い間それの周りに忠実なコミュニティを持つことを期待する。

ScalaはJavaと直接競合することができ、ほぼすべての面でお金を稼ぐことができます。 それは当然のことながら人気を保つことはできません。企業の裏付けが強くないことは、企業環境への受け入れを妨げる可能性があります。 言語がどのように進化するかという意味で、Javaよりはるかにダイナミックな言語です。 言語の観点からは、それは良いことです。 数千行のコードが書かれていることを計画しているユーザーの視点からはそうではありません。

最終的な発表として、私はScalaをよく知っていて、他の2人にしか知りません。


明らかに、構文はまったく異なります(GroovyはJavaに最も近い)が、あなたが求めているものではないと思います。

Javaアプリケーションをスクリプトに使用することに興味がある場合、ScalaはJavaから簡単に評価する方法ないため 、おそらく良い選択ではありませんが 、Groovyはその目的に特に適しています。


私はPragmatic Programmersの著書「Groovy Recipes:Javaの輪を磨く」を読んでいます.Scott Davis、Copyright 2008で、同じ年の4月に印刷されました。

ちょっと古いですが、Groovyは文字通りJavaの拡張版です。 私は、Javaとまったく同じように機能し、ファイル* .groovyの名前を変更するJavaコードを書くことができ、正常に動作します。 本書によると、必要なライブラリを含めるとその逆が成り立ちます。 これまでのところ、実験はこれを裏付けているようです。





language-comparisons