なぜC#よりもF#なのか 2017 #fsharp
以前このような記事を書きました。
「F# C# 比較」とかでググると比較的上位に表示されるようで、毎日少しずつアクセスがあるようです。 さすがに6年前の記事で内容が古いので、現状での F# を見てみたいと思います。 なお、今でもまだC#はほぼ触っておらず、F#は自分ではあまり書いていなくて職場での導入支援を行っているだけなので、間違っていたら指摘をいただけると嬉しいです。
2011年からの変化
- IDEでのサポートの充実
- リファクタリング
- インテリセンス
- 参考 : Visual Studio 2017でF# 4.1が登場
- 他言語にない特徴 : Type Provider
- オープンソース化、クロスプラットフォーム化
- C#との互換性の向上
C#と比較したF#の利点と欠点
F#がC#よりも優れている点
- より短く安全な記述が可能
- 単位を持った数値のサポート
- メートルとか秒とかキログラムとかを数値に付けることができて、異なる単位同士の加算がコンパイルエラーになる等の静的検証ができる
- 末尾再帰な関数をコンパイラが最適化してループ処理に変換してくれる
特に判別共用体は、ドメインモデリングを行う際に型をグループ化するための手段として有用だと思います。
C#ではなくF#を採用する際のリスク、不安な点と、それに対する反論
- 学習コスト
- 言語としての将来性
参考サイト・参考文献
- F# Software Foundation F# 公式。F#を実務で使う上で必要な情報がだいたいあるので、まずは一読。
- Home | F# for fun and profit F#全般に関する紹介・入門・パターン解説などを行うサイト
- Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# by Scott Wlaschin | The Pragmatic Bookshelf : 上記サイトの管理者による、F#でのドメインモデリング方法を解説した書籍。2017/09/05現在でベータ版。