F#はマイクロソフト社が提供するオープンソースのマルチパラダイム言語です。C#やVB(VisualBasic)などと同様にVisual Studioの標準開発言語であり「.NET Framework」上で動きます。この記事ではF#を理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説していきます。
F#とはマイクロソフト社のドン・サイム氏によって2002年に開発されたオープンソースのマルチパラダイム言語です。F#がマルチパラダイムと言われる由縁は関数型プログラム、手続き型プログラム、オブジェクト指向プログラムと様々なパラダイムをサポートしていることにあります。そのため同社が開発・提供するC#やVB(VisualBasic)などの.NET言語を置き換える形でF#を使用することもできます。また同社が提供するVisual Studio 2010より標準開発言語として追加されております。F#の特徴として「①マルチパラダイム」「②.NETFrameworh上で動く」「③クロスプラットフォーム」などが挙げられます。2019年時点で最新バージョンは『F# 4.6』がリリースされております。
F#の読み方は『エフシャープ』が一般的となっております。。名前の由来は『Functional programming language(関数型プログラミング言語)』からきております。また型付きラムダ計算のプログラミング言語としられるSystem Fも由来していると言われております。
F#はマイクロソフト社のドン・サイム氏によって2002年に開発が始められました。起源を辿るとその歴史は長く1970年代まで遡ります。というのもF#は関数型プログラミング言語であり、LISPの伝統に基づいて開発されております。F#がマイクロソフト社によって正式にリリース発表されたのは2005年のことです。2010年には同社の提供する『Visual Studio 2010』より標準開発言語として追加され、『F#2.0』のリリースが発表されました。それかから度重なるアップデートを重ねて2019年時点で『F#4.6』が最新バージョンとなっております。
好きなプログラミング言語ランキング「Stack Overflow Developer Survey 2019」
の調査によると第15位を記録しております。ちなみに同メディアが発表する嫌いなプログラミング言語ランキングにおいては13位を記録しておりました。良し悪しはあるもののいずれにせよ注目度を着実に挙げている言語であることは間違いありません。
歴史 | 出来事 |
2002年 | F#開発開始 (マイクロソフト社のドン・サイム氏) |
2005年 | F#初版正式リリース |
2010年 | 『Visual Studio 2010』より標準開発言語として追加 『F#2.0』のリリースを発表 |
2012年 | 『F#3.0』のリリースを発表 ・三重クォート文字列リテラルが導入 |
2015年 | 『F#4.0』のリリースを発表 ・[nth]が非推奨になり、[item]が追加 |
2018年 | 『F#4.5』のリリースを発表 ・プリミティブ型のSpan ・新しいキーワードMatch! |
2019年 | 『F#4.6』のリリースを発表 ・匿名レコード型の導入 |
F#は関数型プログラミング言語という関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、関数は引数の適用から先行式の評価を後続式の適用につなげて終端の評価を導き出す式のツリー構造として定義されます。代表的な関数型プログラミング言語としてR言語、Scara、Pythonなどが挙げられます。
関数型プログライミング言語の種類や特徴を解説している記事はこちら>>
F#はコンパイラ言語でありインタプリタ言語でもあります。
F#の特徴を見ていきましょう。
F#はマルチパラダイム言語です。マルチパラダイムとは関数型プログラム、手続き型プログラム、オブジェクト指向プログラムと様々なパラダイムをマルチにサポートとしていることを意味します。F#の他に代表的なマルチパラダイム言語としてC++(手続き型言語、オブジェクト指向プログラミング)、JavaScript(手続き型言語、関数型言語、オブジェクト指向プログラミング)などが挙げられます。
F#は.NETFramework上で動作します。同じマイクロソフト系言語である「C#」や「VB(Visual Basic)」と相互運用性があります。C#やVBで作ったライブラリを相互に呼び出し、利用し合うことができます。
F#はクロスプラットフォームに対応しております。Linux、Mac OS X、Android、iOS、Windows、GPU、およびブラウザで実行が可能です。
F#はマイクロソフト社が開発した言語ということもあり同社の手掛ける.NET FrameworkやVisual Studioといった様々なツールとの相性が抜群に良いことからWIndowsアプリケーションの開発に最高の相性といったメリットがあります。また.NET Frameworkと共に誕生した
C#とも相互運用性があることから対応範囲は非常に広いです。WIndowsアプリケーションの開発を行う際にはオールWindows製品の検討もせずにはいられないでしょう。
F#とC#は同じ会社に開発されたもので相互運用性も高いことからそれぞれの違いを明確に発表されている情報はそう多くありません。その理由としてやはり相互運用性が高いことから上手く用途に応じて必要部分を呼び出し合うためこの議論に至らないのでしょう。当然ですが標準ライブラリや実装に使われている型などは違いがあります。C#の方が歴史も長いことがあり情報量・需要共に優勢です。一方でF#の方が安全性・シンプルさにおいて評価されております。他にも様々な観点で比較した内容は以下の表をご覧ください。
F# | C# | |
学習コスト | ○ | ◎ |
安全性 | ◎ | ○ |
シンプルさ(短い記述) | ◎ | ○ |
情報量 | △ | ◎ |
将来性 | △ | ○ |
F#の基本的な文法を見ていきましょう。
F#ではデータ型で使用される基本的な種類は以下の通りです。
データ型の種類 | 概要 |
Int16 | -32768 から32767までの値 |
Int32 | -2147483648 から2147483647までの値 |
Int64 | -9223372036854775808 ~ 9223372036854775807 の値 |
UInt16 | 0 ~ 65535 の値 |
UInt32 | 0 ~ 4294967295 の値 |
UInt64 | 0 ~ 18446744073709551615 の値 |
Byte | 0 ~ 255 の値 |
SByte | -128 から127までの値 |
Intptr | 符号付き整数としてのネイティブポインター |
UIntPtr | 符号なし整数としてのネイティブポインター |
Single | 32ビットの浮動小数点型 |
Double | 64ビットの浮動小数点型 |
Char | Unicode 文字の値 |
String | Unicode テキスト |
Decimal | 有効桁数が28以上の浮動小数点データ型 |
Boolean | 設定可能な値は true および false |
F#では演算子で使用される基本的な種類は以下の通りです。
演算子の種類 | 概要 |
算術演算子 | 足し算や引き算を実行する |
プール演算子(論理演算子) | 理論を判定する際に用いる |
ビット演算子 | 中置記法も利用できる関数 |
Null 許容の演算子 | 一方または両方で null 許容型の算術演算を使用する二項演算または比較演算子 |
パイプライン演算子 | 関数の適用順序を制御したり、関数を合成するのに使う |
オブジェクト変換演算子 | 様々な変換を行う演算子 |
制御文では『if文』『switch文』『while…do文』を覚えておく必要があります。
制御文の種類 | 概要 |
if文(条件分岐) | if文は複数の式を実行し条件にあった文のみを実行 |
for文(反復処理) | for文は反復の制御構文であり、繰り返し行う処理を実行 |
while…do文 | 指定されたテスト条件が”true”の間、反復実行 (ループ) を実行するために使用 |
F#の代表的なフレームワークを見ていきましょう。
.NET Framework(ドットネットフレームワーク)とはC#に活用されるマイクロソフト社によって開発されたアプリケーション開発・実行環境用フレームワークです。.NET Frameworkは業界において度々『.NET(ドットネット)』と略称して呼ばれることがあります。.NET Frameworkは『共通言語ランタイム』『基本クラスライブラリ』『フレームワーク』の3つで構成されております。
.NET Frameworkの公式サイトはこちら>>
.NET Frameworkの特徴・機能などを解説している記事はこちら>>
F#を理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説させていただきました。F#を一言で表すと『マイクロソフト社が提供するオープンソースのマルチパラダイム言語』です。特徴として「①マルチパラダイム」「②.NETFrameworh上で動く」「③クロスプラットフォーム」の3点があることは覚えておくと良いです。他にもF#についてこの記事に記載されている最低限の内容は理解しておくようにしましょう。