Scala の概要
Scala は Scalable Language の略語で、マルチパラダイム プログラミング言語です。
ローザンヌ工科大学 (EPFL) の Martin Odersky は、Funnel の成果に基づいて 2001 年に Scala の設計を開始しました。
Funnel は、関数型プログラミングのアイデアとペトリ ネットを組み合わせたプログラミング言語です。
Odersky の以前の仕事は、汎用 Java と javac (Sun Java コンパイラー) に関するものでした。 Java プラットフォーム用の Scala は、2003 年末から 2004 年初めにリリースされました。 .NET プラットフォーム用の Scala は 2004 年 6 月にリリースされました。この言語の 2 番目のバージョン v2.0 は、2006 年 3 月にリリースされました。
2009年9月現在の最新バージョンはバージョン2.7.6です。 Scala 2.8 で期待される機能には、オーバーライドされた Scala コレクション ライブラリ、メソッド、パッケージ オブジェクト、および Continuation の名前付きパラメータとデフォルト パラメータが含まれます。
2009 年 4 月、Twitter はバックエンド プログラムの大部分を Ruby から Scala に移行し、残りも移行する予定であると発表しました。さらに、Wattzon は、プラットフォーム全体がすでに Scala インフラストラクチャに基づいて記述されていることを公表しました。
Scalaの機能
オブジェクト指向の機能
Scalaは純粋なオブジェクト指向言語であり、すべての値はオブジェクトです。オブジェクトのデータ型と動作は、クラスと特性によって記述されます。
クラス抽象化メカニズムを拡張するには 2 つの方法があります。1 つはサブクラスの継承で、もう 1 つは柔軟な混合メカニズムです。これら 2 つのアプローチにより、多重継承の問題を回避できます。
関数型プログラミング
Scala も関数型言語であり、その関数は値として使用することもできます。 Scala は、匿名関数を定義するための軽量の構文を提供し、高階関数をサポートし、複数レベルの関数のネストを許可し、カリー化をサポートします。 Scala の case クラスとその組み込みパターン マッチングは、関数型プログラミング言語で一般的に使用される代数型と同等です。
さらに、プログラマは Scala のパターン マッチングを使用して、正規表現のようなコードを記述して XML データを処理できます。
静的型付け
Scala には、コンパイル時のチェックを通じてコードの安全性と一貫性を保証する型システムがあります。型システムは特に次の機能をサポートしています:
ジェネリッククラス
共分散と反分散
注釈
型パラメータの上限と下限の制約
カテゴリと抽象の処理オブジェクトとしての型メンバー
複合型
自分自身を参照するときに型を明示的に指定
Views
多態性メソッド
拡張性
Scala は実際には、ドメイン固有のアプリケーションは開発では、多くの場合、そのドメインに固有の言語拡張が必要になります。 Scala は、新しい言語構造をライブラリの形式で簡単かつシームレスに追加できるようにする、独自の言語メカニズムを多数提供します。
任意のメソッドを前置演算子または後置演算子として使用できます
クロージャは、以下に基づいて自動的に構築できます期待されるタイプについて。
同時実行
Scala は同時実行モデルとして Actor を使用し、メールボックスを介してメッセージを送受信するスレッドのようなエンティティです。アクターはスレッドを再利用できるため、プログラムでは数百万のアクターを使用できますが、スレッドは数千のアクターしか作成できません。 2.10 以降のバージョンでは、Akka がデフォルトのアクタ実装として使用されます。
Scala を使う人
2009 年 4 月、Twitter はバックエンド プログラムのほとんどを Ruby から Scala に移行し、残りも移行する予定であると発表しました。
さらに、Wattzon は、プラットフォーム全体がすでに Scala インフラストラクチャに基づいて記述されていることを公表しました。
UBS は一般的な製品に Scala を使用しています。
Coursera はサーバー言語として Scala を使用します。
Scala Web フレームワーク
現在人気のある 2 つの Scala Web アプリケーション フレームワークを以下に示します:
Lift フレームワーク
Play フレームワーク