関数型プログラミング言語は関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語におけるパラダイムの一種です。歴史を辿ると1930年代にもルーツがあり、最初に誕生した言語はLIPSと言われております。現在ではR言語、Scala、Pythonなどにこのパラダイムが採用されております。この記事では関数型プログラミング言語の歴史、基礎知識、代表的な種類などを簡単に解説させていただきます。
関数型プログラミング言語とは関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、関数は引数の適用から先行式の評価を後続式の適用につなげて終端の評価を導き出す式のツリー構造として定義されます。代表的な関数型プログラミング言語としてR言語、ScaLa、Pythonなどが挙げられます。
関数型プログラミング言語の歴史を見ていきましょう。
年代 | 出来事 |
1930年代 | 数学者アロンゾ・チャーチによって関数型プログラミングの基底となる”ラムダ計算”が発明される |
1950年代 | マサチューセッツ工科大学の計算機科学者ジョン・マッカーシーによって初の関数型プログラミグ言語『LISP』開発される |
1960年代 | 商業分野と産業分野に積極導入 『LIPS』の発展が著しい |
1970年代 | 計算機科学者ロビン・ミルナーによって『ML』は代数的データ型、パラメトリック多相、型推論が開発される |
1980年代 | 『ML』を標準化する目的の下でHindley–Milner型体系を導入した「Standard ML」が発表される |
1990年代 | 純粋関数型言語『Haskell』が発表される 統計解析言語『R言語』が発表される |
2000年代 | Java仮想マシン動作でオブジェクト指向と関数型を融合した「Scala」誕生 |
代表的な手続き型プログラミング言語を見ていきましょう。
R言語とはニュージーランドにあるオークランド大学のロス・イハカ氏とロバートクリフォード氏によって1995年に開発された統計解析向けのプログラミング言語です。S言語というプログラミング言語を元にC言語やFORTRANを用いて開発されました。種別はPHPやRuby、javaScriptと同じインタープリタ言語です。R言語の大きな特徴はJavaやC言語などの代表的なオープン系開発言語とは違い『データ解析・統計解析』の専門言語ということが挙げられます。
そのためデータ解析・統計解析においてはその他のプログラミング言語と比べても非常にパフォーマンスが高いと評価されております。R言語は専門分野が分野なだけあり、元々研究や学術において活用されておりましたが、近年は企業においても様々なシーンで活用されております。近年大きな注目を集めている機械学習やビッグデータの分野で活用できることが人気を集める理由と言えます。
Scalaとはスイス連邦工科大学のマーティン・オーダスキー氏によって2001年に設計されたJavaに影響を受けたオブジェクト指向と関数型言語の特徴を統合したプログラミング言語です。世に公開がされたのは2004年始めの頃でJavaプラットフォームにリリースされました。ScalaはJVM上で動作するため、Javaのライブラリを不自由なく使えるという特徴があります。他にも.NET Framework上でも動作するため、同様に.NETライブラリも使用することが出来ます。(※.NETサポートは2012年に中止)2003年に誕生した比較的新しいプログラミング言語ですが、2019年に『GitHubPullRequest』によって発表されたプログラミング言語使用率ランキングによると第12位を記録するほどの人気度が伺えました。日本国内でも様々な有名サービスがScalaを用いた開発を行っており、代表的なものとして『SmartNews』『Chatwork』などが挙げられます。
Pythonとはグイド・ヴァンロッサム氏によって1991年に開発された汎用的に使用されるプログラミング言語です。サーバサイド言語としてWebアプリケーションやデスクトップアプリケーションの開発に使われるだけでなく、組み込み開発、自動処理、統計・解析、機械学習など幅広い領域に対応出来るプログラミング言語として親しまれております。Pythonはプログラミング言語の中でも高い人気を集めており、GitHubの2019年調べによるとJavaを抜き2番目に人気のある言語となっております。特徴として『コードがシンプルで覚えやすい』『少ない記述で多くの処理が可能』などが挙げられます。Pythonは人工知能(AI)やビッグデータなどトレンドの分野にて重宝されております。このように幅広い分野にて扱われる汎用的なプログラミング言語として高い人気を集めております。
F#とはマイクロソフト社のドン・サイム氏によって2005年に開発されたオープンソースのマルチパラダイム言語です。F#がマルチパラダイムと言われる由縁は関数型プログラム、手続き型プログラム、オブジェクト指向プログラムと様々なパラダイムをサポートしていることにあります。そのため同社が開発・提供するC#やVB(VisualBasic)などの.NET言語を置き換える形でF#を使用することもできます。また同社が提供するVisual Studio 2010より標準開発言語として追加されております。
LISP | 1958年 関数型プログラミング言語の先駆者 |
ISWIM | 1966年 静的型付け、先行評価 |
ML | 1973年 静的型付け、先行評価 |
Scheme | 1975年 LISP方言、動的型付け、先行評価 |
FP | 1977年 関数水準言語、動的型付け、先行評価 |
Standard ML | 1983年 ML派生、静的型付け、先行評価 |
Miranda | 1985年 純粋関数型、静的型付け、遅延評価 |
Haskell | 1990年 純粋関数型、静的型付け、遅延評価 |
Dylan | 1993年 LISP方言、動的型付け、先行評価 |
OCaml | 1996年 ML派生、静的型付け、先行評価、オブジェクト指向 |
Clojure | 2007年 LISP方言、動的型付け、先行評価 |
Rust | 2010年 静的型付け、先行評価 |
関数型プログラミング言語を理解するために初心者でもわかる歴史、基礎知識、代表的な種類などを簡単に解説させて頂きました。関数型プログラミング言語を一言で表すと『関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語の種類』です。歴史を辿ると古くから誕生した概念として知られておりますが、プログラミング言語の中でも比較的新しい部類に入るR言語やF#などでも採用されております。関数型プログラミング言語についてこちらの記事に記載されている最低限の内容は理解をしておくようにしましょう。