Scalaを使うワケ
【Scalaの特徴】
・Javaをベースとしたオブジェクト指向言語の上に、関数型の機能を表現することで実現しています。
【関数型プログラミング】
Scalaの関数型プログラミングは高性能!!(関数型は初めてですが...)
※以下の高性能な理由は集めて来たもので、わかり次第更新します
・case classによる代数的データ型
・静的に網羅性がチェックされるパターンマッチ
・implicit parameterによる型クラス
・forによるモナド構文
・モナドの型クラスの定義などに不可欠な高カインド型
・Scalaはオブジェクトの不変性(immutability)を意識している言語
・コレクションライブラリもmutableとimmutableでパッケージがわかれています
→ case classもデフォルトではimmutable
※不変性・参照透過性・純粋性は関数型プログラミングにおいて最も重要な概念
【オブジェクト指向プログラミング】
関数型だけでなくオブジェクト指向においても様々な進化を遂げている
・traitによるmixin
・構造的部分型
・型パラメータの変位指定
・self type annotationによる静的な依存性の注入
・implicit class (conversion)による既存クラスの拡張
・private[this]などの、より細かなアクセス制限
・Javaのプリミティブ型がラップされて、全ての値がオブジェクトとして扱える
※Scalaのプログラミングでは特にtraitを使ったmixinによって、プログラムに高いモジュール性と、新しい設計の視点が得られる
【Javaとの互換性】
・Javaのライブラリは普通にScalaから使うことができます。