拡張JavaまたはJava ++としてのScala

Javaは長い間存在しており、膨大な量のソフトウェアを記述しており、その分野のリーダーです。 ただし、Javaには欠陥がないわけではありません。 言語を設計する際の重要な基準は、言語のシンプルさと学習のしやすさでした。このシンプルさにより、言語の柔軟性の欠如を補うために、デザインパターン、XML構成、AOP、getter-setter、finally構文のキャッチなど、多くの追加コードを書く必要があります。 また、すべてのタスクに対して純粋なOOPアプローチが最適であるとは限らず、一部のタスクは機能スタイルで実行する方がはるかに効率的であることも明らかです。



Groovy、Python、Ruby、JRubyなど、Javaを置き換える可能性のあるさまざまな言語があります。 それでは、なぜScalaなのでしょうか?





次に、JavaにはないScalaの主な機能のリストを示します。



これらの各チップはマイナーな改善であり、これはなしで実行できますが、これらすべてが非常に強力なツールを形成します。 しかし、これはプログラミングプロセスにどのように影響しますか?



ライブラリ開発者向けの何倍も強力なツールキット。 任意の言語での開発の有効性は、既製のライブラリの存在により大きく決定されます。 この言語の使用法は何ですか。必要な場合は、すべてをゼロから開発する必要がありますか? 独自のDSL、暗黙的なパラメーターと変換、高階関数、および強力な型システムを開発する機能により、より使いやすく、より柔軟で強力なライブラリを作成できます。 ただし、必要なライブラリがまだScalaで作成されていない場合でも、Javaのライブラリを使用できます。



コレクションを使用した高レベルの作業。 コレクションを使用したほとんどの操作(フィルター処理、選択、条件のすべての要素のチェック、グループへの分割など)にはクロージャーが存在するため、個別のメソッドがあります。 これにより、既製のライブラリメソッドを95%で使用できますが、Javaでは毎回同じ操作を記述する必要があります。



簡潔な動的プログラミング。 implicit'am、暗黙的な型推論、豊富な構文糖衣のおかげで、コードはまるでGroovyやRubyのような動的言語で書いているかのように簡潔に見え始めます。 同時に、各変数には独自の型があり、コンパイラは何か間違ったことをするかどうかを通知します。



非情報ノイズが少なくなります。 これはまさに、全体像が小さなもので構成されている瞬間です。 Scalaには、いくつかの文字をより少なく書くことができる多くのポイントがあります。 出力は、読みやすさを損なうことなく、Javaの約2-3倍少ないコードです!



多くの構文レベルのデザインパターンのサポート。 シングルトンが必要な場合-「クラス」という単語を「オブジェクト」に変更する場合、ファクトリーが必要な場合-コンストラクターをデフォルト値と名前パラメーターと共に使用する場合、コマンドが必要な場合-クロージャーを渡すなど



より直感的で構造化されたビジネスロジックコード。 すべてを高レベルで説明できるわけではありません。多くのif / else、チェック、条件、および追加の補助メソッドの割り当てを伴うロジックが存在する場合があります。 パターンマッチング、モナド、高階関数、ネストされたメソッドのおかげで、そのようなロジックは何倍も読みやすくなります。 JavaでScalaで多くのif / else / switchチェックを行う必要がある場合、マッチングパターンを使用できます。Javaでインターフェイスを実装し、構成にクラスを追加する必要がある場合、Scalaでは、Javaがnullおよびエラー処理をチェックするときにクロージャを渡す必要がありますモナドは、JavaがUtilsクラス、ファクトリー、グローバル変数とのインターフェースを作成するときに使用され、ScalaのSignaltonはコンパニオンオブジェクトを作成します。



おわりに



Javaは絶対的な悪であると私は主張しません。 それどころか、それは素晴らしい言語であり、その時代は大きな前進でしたが、時間がたつにつれて、すべてが変化し、新しい技術が現れ、古い技術は時代遅れになります。 そして、プログラマーは前進し、より高度な新しいツールを学ぶ必要があります。 また、Scalaはこの役割に最適であり、Javaの欠点のほとんどがなく、プログラマーが自分の考えをより良く表現し、生産性を大幅に向上できる多くの新機能を備えています。



All Articles