web-dev-qa-db-ja.com

Scalaが他の言語よりスケーラブルなのはなぜですか?

Scalaはスケーラブル言語として請求され、その機能は 名前にも含まれています

名前Scalaは、「スケーラブル」と「言語」の組み合わせであり、ユーザーの要求に応じて成長するように設計されていることを示しています。

Scalaのコンテキストで「スケーラブル」とはどういう意味ですか? ScalaがJavaなどよりもスケーラブルになる理由は何ですか?

12
prasonscala

Martin Oderskyがscalaをスケーラブルな言語の選択として]と語っているとき)彼が意味することは、言語自体が以下に適しているということです。

  • スクリプトのもの
  • アプリケーションの作成
  • モンスター "エンタープライズ"(より良いWordが必要な場合)アプリケーションの作成

彼は確かにパフォーマンスの観点からスケーラビリティについて言及していません!

scalaは、大規模なエンタープライズ展開の場合と同じように、クイックアンドダーティースクリプトに適していると主張できるという事実は、おおよそ次のとおりです。

スクリプト

Scalaは、型推論と機能的なスタイルによって簡潔になり、コレクションのスライスやダイシングなどに最適であるため、スクリプト作成に最適です。

アプリケーション

Scalaは、関数型スタイルと命令型スタイルの両方で機能する優れた機能を備えた静的型チェック言語であるため、アプリケーションの記述に最適です。 ScalaはJavaと互換性があるため、ライブラリの膨大なエコシステムを活用できます。

エンタープライズ展開

Scalaはバイトコードにコンパイルされ、Java Virtual Machineで実行されます。これは、(いわゆる)動的に型付けされた(つまり型付けされていない)言語と比較すると、優れたパフォーマンスを備えた安定したシステムです。ここでも、静的に型付けされるということは、大規模なコードベースでリファクタリングがはるかに簡単になることを意味します。

14
oxbow_lakes

Oderskyの発言は次のとおりです(スライド11 http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):

「スカラは他の言語が広いところで深い。」

つまり、スケーラブルとは、柔軟性と表現力の観点で意味されます。独自の制御構造を作成できます。例えば。アクターフレームワークはライブラリですが、言語機能を使用しているようです。

これは、Scalaは、「1秒あたり1.000.000リクエストに応答する」という意味ではなく、必要な抽象化に従ってスケーリングすることを意味します(ただし、Scalaはここにあります強いも)。

21
michael.kebe

実際にJavaのスケーラビリティを制限するのはJVMではなく、正しい並行コードを作成するのが難しいことです。 Scalaは、関数型プログラミングとアクターモデルのサポートにより、これを容易にします。

Javaは、Webサーバーなどで同時実行が簡単な場合に非常にスケーラブルです(各要求はほぼ完全に独立しています)。しかし、実行時間の長い単一のタスクを並列化することになると、正しく実行するのは非常に困難です。

11

Scalaはスケーラブルlanguageの略で、パフォーマンス特性とは関係ありません。あなたはここでより良い説明を見つけることができます: http://www.artima.com/scalazine/articles/scalable-language.html

9
llemieng

両方の言語が同じバイトコードを生成できると言うように、Javaよりもスケーラブルな言語自体は必要ありません。

しかし、Actorモデルと関数型プログラミングスタイルは、スケーラビリティを向上させることができます(一言で言えば、正しい同時実行プログラミングを単純化し、同期の必要性を減らします)。

より良い洞察を得るために、アクターモデルを見て、それを従来のマルチスレッドJavaアプリケーションと比較してください:

Akkaフレームワークを使用して、Scalaでコーディングすることなく、拡張性の高いJavaアプリケーションを作成することもできます。

6
Alois Cochard