マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】F#

【OSS情報アーカイブ】F#

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「F#」とは

基本情報

概要

F#(エフシャープ)とは、Microsoftが開発した「.NET Framework」向けマルチパラダイム関数型プログラミング言語です。「OCaml」言語をベースにしています。

関数型言語とは

C#/Java/Rubyなどの手続き型言語に対して、関数型言語があります。

関数型言語は歴史がある言語で、工学的基礎(ラムダ計算)が可能です。並列処理/分散プログラミングを得意とし、高演算処理能力を発揮します。

関数型言語は、「なるべく状態を持たせない」「なるべく変数を使わない」という特徴があります。「引数として関数を受け取る」「戻り値が関数」というのは関数型言語では普通のことです。すべての関数は、何らかの戻り値を必ず返します。

「関数型プログラミング」とは、「複数の式を関数の適用によって組み合わせていくプログラミングスタイル」とされています。

基本説明

F#は、静的型付けコンパイラ型言語です。関数型言語ではあるものの、オブジェクト指向型言語としての特徴も合わせ持ちます。

関数型言語「OCaml」との関係

「OCaml」は、F#のベースとなった関数型言語です。オブジェクト指向的要素が追加されている点が特徴です。関数型言語としてはかなり高速に動作します。

F#は、関数型言語「OCaml」から多くの要素を引き継いでいます。関数型/オブジェクト指向型のマルチパラダイムです。型安全、型推論の機能を持ちます。ただし、オーバーロードをサポートしているため、「OCaml」が持つ型推論の完全性を失っています。

「OCaml」互換の標準ライブラリを備えており、「F#」と「OCaml」のどちらでもコンパイルできるコードを記述することも可能です。しかし、クラス構文などは、「F#」と「OCaml」で異なっています。

経緯

「F#」の「F」は「Functional」とされています。

2002年、マイクロソフトリサーチのDon Syme氏らによって、OCamlをベースに開発開始
2005年、F#の最初のメジャーリリース
2010年、Visual Studio 2010リリース、F#が標準搭載

主な特徴

マルチパラダイム言語

F#の主たるパラダイムは「関数型」ですが、他に、「手続き型」「オブジェクト指向プログラミング」などもサポートしています。

型推論

F#ではコンパイラの型推論機能により、変数/関数の定義において、型が文脈から自動的に決まるのであれば型宣言を省略できます。型推論に頼らず明示的に型を指定することもできます。

変数

変数は、基本的に「不変(immutable)」ですが、「書き換え可能(mutable)」として定義することもできます。

並び順強制

F#では、ソースファイル/type/module/関数などについて、依存順になるように並び順を制御する必要があります。

これにより、ソリューション全体のマクロ構造を楽に把握できます。

コード記法

コード記法は、「軽量構文」と「(OCaml風の)冗語構文」の2種類用意されています。

コンパイラとインタプリタ

F#の処理系は、「コンパイラ」と「インタプリタ」の両方を持っています。

F#をスクリプト言語として動かすことも可能です。

マルチスレッド処理

マルチスレッド処理特有の問題(スレッド間の排他制御など)への対策をカプセル化し、並列処理のコード記述をシンプルで可読性の高いものにするために、他の.NET言語にない独特の構文表記方法とライブラリが用意されています。

.NET Framework言語

.NET Framework言語(「C#」「Visual Basic」など)と相互運用性があり、.NETクラスライブラリの利用/開発が可能です。

ポイント

・判別共用体とパターンマッチ
・アクティブパターン
・シーケンス式
・計算式(Do構文)
・非同期/並列計算を支援するライブラリ
・コード引用符
・モジュール拡張が容易
・IDEによるコーディングサポート

同様製品(概要情報)

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「OCaml」「LISP」「Scala」など。

導入事例

.NET Frameworkの1言語として、幅広く利用されています。

ライセンス情報

F#のライセンスは、「Apache License」「Microsoft Public License (Ms-PL)」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。