ScalaScalaのロゴ
パラダイムオブジェクト指向言語、関数型言語
登場時期2003年 (2003)
設計者Martin Odersky
開発者LAMP/EPFL, Scala Center
最新リリース3.4.0 / 2024年2月29日[1]
型付け強い静的型付け
主な処理系Scala
影響を受けた言語Java, Haskell, Standard ML, OCaml, Smalltalk, Erlang
影響を与えた言語Java, Chisel, F#, Kotlin, Flix
Scala(スカラ、SKAH-lah[3])はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである。 主にJavaプラットフォーム(Java仮想マシン)上で動作し、既存のJavaのプログラムと容易に連携させることができる。 対応プラットフォーム また、過去には下記のプラットフォームもサポートしていたが、現在は開発が中断している。 Scalaは2001年にスイス・ローザンヌにあるスイス連邦工科大学 (EPFL) 教授のマーティン・オーダスキー
プラットフォーム
Scala - Javaプラットフォーム
Scala.js[4] - Scala から JavaScript へとトランスパイルする。
Scala Native[5] - LLVM を使用し、マシンネイティブの実行ファイルを出力
.NET Framework[6]
Java Platform, Micro Edition CLDC
歴史
Scalaは2003年の暮れに内部で公開された後、2004年の始めにJavaのプラットフォームにリリースされ、2004年の6月に.NETのプラットフォームに公開された。Ver2.0は2006年3月にリリースされたが、.NETのサポートは2012年に中止になった。
2021年5月12日、コードネームdottyと呼ばれていたコンパイラを抜本的に再設計して作られたScala 3がリリースされ、多くの機能が追加された。[7]
また、現在も活発に開発が続けられている。 主に以下のような特徴がある。
特徴
開発生産性を高める簡潔な表記が可能である。
Javaの豊富なライブラリが使える(Scala.jsの場合、JavaScriptのライブラリが使える)。
全てがオブジェクトとして扱われるオブジェクト指向言語である。
静的型付けを行う関数型言語である。静的型付けのため、コンパイル時点でのエラー(特に型関連の)検出が得意である。
型(クラス)をJavaなどと比べてより容易に作ることができ、また、型を使った条件分岐をはじめとして、型に関する機能が豊富なため、メソッドやフィールドを束ねるだけのクラスではなく、型に積極的な意味を持たせてのプログラミングが可能である。
型推論をサポートし、多くの場面で型を自動的に補ってくれる。
純粋関数型言語的な、val(定数)と不変List, Set, Mapという組み合わせでもプログラミングできるし、より手続き型的なvar(変数)と可変List, Set, Mapという組み合わせでもプログラミングができる。
関数もオブジェクトとして利用可能であり、カリー化が可能。