Scalaは、その名前に含まれている機能であるスケーラブルな言語として請求されます。
Scalaという名前は「スケーラブル」と「言語」のポートマントーであり、ユーザーの要求に応じて成長するように設計されていることを意味します。
Scalaのコンテキストで「スケーラブル」とはどういう意味ですか?何がScalaをJavaよりもスケーラブルにするのですか?
Scalaは、その名前に含まれている機能であるスケーラブルな言語として請求されます。
Scalaという名前は「スケーラブル」と「言語」のポートマントーであり、ユーザーの要求に応じて成長するように設計されていることを意味します。
Scalaのコンテキストで「スケーラブル」とはどういう意味ですか?何がScalaをJavaよりもスケーラブルにするのですか?
回答:
Martin Oderskyがスケーラをスケーラブルな言語の選択肢として語るとき、彼が意味するのは、言語自体が以下に適しているということです。
彼は確かにパフォーマンスの観点からスケーラビリティについて言及していません!
scalaが大規模なエンタープライズ展開の場合と同様にquick'n'dirtyスクリプトに適していると主張できるという事実は、おおよそ次のとおりです。
スクリプティング
Scalaは、型推論と機能的なスタイルにより、コレクションのスライスやダイシングなどに適した簡潔なスクリプトを作成するのに最適です。
用途
Scalaは関数型スタイルと命令型スタイルの両方で機能する優れた機能を備えた静的型チェック言語であるため、アプリケーションの作成に最適です。ScalaはJavaと互換性があるため、ライブラリの膨大なエコシステムを活用できます。
エンタープライズ展開
Scalaは、バイトコードにコンパイルされ、(いわゆる)動的に型付けされた(つまり型付けされていない)言語と比較すると、優れたパフォーマンスを備えた安定したシステムであるJava仮想マシン上で実行されます。繰り返しますが、静的に型付けされているという事実は、大規模なコードベースでリファクタリングがはるかに簡単になることを意味します。
Oderskyは次のように述べています(スライド11、http://www.slideshare.net/rawwell/scalaliftoff2009pdf):
「他の言語が広いところでは、Scalaは深い。」
つまり、スケーラブルとは、柔軟性と表現力の点で意味します。独自の制御構造を作成できます。たとえば、アクターフレームワークはライブラリですが、言語機能を使用しているようです。
これは、Scalaが必要な抽象化に従ってスケールすることを意味し、必ずしも「1秒で1.000.000リクエストに応答する」という点ではありません(ただし、Scalaも強力です)。
実際にJavaのスケーラビリティを制限するのはJVMではなく、正しい並行コードを書くのが難しいことです。Scalaは、関数型プログラミングとアクターモデルのサポートを通じてこれを簡単にします。
Javaは、Webサーバーなど、同時実行が簡単な場合に非常にスケーラブルです(各要求はほぼ完全に独立しています)。しかし、単一の長時間実行タスクを並列化することになると、それを正しく実行するのは非常に困難です。
Scalaはスケーラブル言語の略で、パフォーマンス特性とは関係ありません。ここでより良い説明を見つけることができます:http : //www.artima.com/scalazine/articles/scalable-language.html
どちらの言語も同じバイトコードを生成できると言うので、Javaよりも拡張性の高い言語自体は必要ありません。
しかし、アクターモデルと関数型プログラミングスタイルは、スケーラビリティを向上させることができます(簡単に言えば、正しい同時実行プログラミングを簡素化し、同期の必要性を減らすことにより)。
より良い洞察を得るには、アクターモデルを見て、従来のマルチスレッドJavaアプリケーションと比較してください。
Akkaフレームワークを使用して、Scalaでコーディングせずに拡張性の高いJavaアプリケーションを作成することもできます。