English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala 介绍

ScalaはScalable Languageの略で、多様なパターンを持つプログラミング言語です。

スイス連邦工科大学ローザン(EPFL)のMartin Oderskyは2001年からFunnelの仕事を基にScalaの設計が始まりました。

Funnelは、関数式プログラミングの考え方とPetriネットを組み合わせたプログラミング言語です。

Oderskyの前の仕事はGeneric 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クラスライブラリのリライト(Scala collections library)、メソッドの名前付きパラメータとデフォルトパラメータ、パッケージオブジェクト(package object)、およびContinuationが含まれます。

2009年4その月、Twitterは、彼らの大部分のバックエンドプログラムをRubyからScalaに移行したことを発表し、残りの部分も移行する予定であることを発表しました。さらに、Wattzonは、彼らのプラットフォーム全体がScalaインフラストラクチャに基づいて書かれていることを公表しました。

Scala 特徴

オブジェクト指向特性

Scalaは純粋なオブジェクト指向言語であり、すべての値はオブジェクトです。オブジェクトのデータ型および動作は、クラスと特質によって記述されます。

クラス抽象メカニズムの拡張には、2つの方法があります:1つはサブクラスの継承、もう1つは柔軟なミックスインメカニズムです。これら2つの方法は、多重継承の多くの問題を避けることができます。

関数式プログラミング

Scalaはまた、関数式言語であり、その関数は値として使用できます。Scalaは、匿名関数を定義するための軽量な構文を提供し、高階関数をサポートし、関数を複層にネストして使用できるようにし、カリー化をサポートしています。Scalaのcase classと組み込みのパターンマッチングは、関数式プログラミング言語でよく使用される代数型に相当します。

さらに、プログラマーはScalaのパターンマッチングを使用して、正規表現に似たコードでXMLデータを処理することができます。

静的型

Scalaは静的型システムを持ち、コンパイル時にチェックを行ってコードの安全性と一貫性を保証します。型システムは以下の特性をサポートしています:

  • 汎型クラス

  • 協変と逆变

  • アノテーション

  • 型引数の下限と上限の制約

  • クラスと抽象型をオブジェクトメンバーとして使用します。

  • 複合型

  • 自分自身を参照する場合、明示的にタイプを指定します。

  • ビュー

  • 多態メソッド

拡張性

Scalaの設計は、実際の開発では特定の分野のアプリケーション開発がその分野固有の言語拡張を必要とすることを前提としています。Scalaは、新しい言語構造を簡単に無缝に追加できる多くの独自の言語メカニズムを提供しており、これらはライブラリとして簡単に追加できます:

  • どのメソッドも前置や後置演算子として使用できます。

  • 予期されるタイプに基づいて自動的に閉包を構築できます。

並行性

ScalaはActorを使用して並行モデルを実現しており、Actorはスレッドに似たエンティティで、メールボックスを通じてメッセージを送受信します。Actorはスレッドを再利用できるため、プログラム内で数百万のActorを使用することができますが、スレッドは数千しか作成できません。2.10の後のバージョンでは、Akkaを使用してデフォルトのActor実装として提供します。

Scalaを使用しているのは誰ですか

  • 2009年4月、Twitterは、ほとんどのバックエンドプログラムをRubyからScalaに移行したことを発表し、残りも移行する予定です。

  • また、Wattzonは、そのプラットフォーム全体がScalaのインフラストラクチャに基づいて書かれていることを公式に発表しました。

  • UBSグループはScalaを一般的な製品に使用しています。

  • CourseraはScalaをサーバー言語として使用しています。

Scala Web フレームワーク

以下に示します3現在、ScalaのWebアプリケーションフレームワークが非常に人気があります: