p_tan's blog

勉強日記です。ツッコミ大歓迎

なぜC#よりもF#なのか

2017/09/05追記


元ネタは id:bleis-tift さんのデブサミ2011の発表です。
デブサミ 2011 で F# について話してきました! - ぐるぐる~

C#と比較したF#の利点と欠点をまとめてみます。

ただ、C#はほぼ触ったことがなく、F#は触り始めたばかりの人間ですから、聞きかじった知識オンリーです。
間違ってたらごめんなさい。

F#がC#よりも優れている点

  • より短く安全な記述が可能
  • 非同期処理の記述の容易さ
    • 非同期ワークフローによる非同期処理の簡潔な記述
    • 基本的には値は定数だから状態を持った処理を書きにくい = 非同期処理に向いた記述になりやすい
  • 単位を持った数値のサポート
    • メートルとか秒とかキログラムとかを数値に付けることができて、異なる単位同士の加算がコンパイルエラーになる等の静的検証ができる
  • 対話式実行環境がある、スクリプトとしても使える
    • インテリセンスが効いて、.NETのライブラリが使えて、型推論で型書かなくてもいいけど型安全なスクリプト
  • 末尾再帰な関数をコンパイラが最適化してループ処理に変換してくれる

F#がC#に遅れを取る点

  • 学習コスト
    • 文法がC#とは大幅に違う
    • 関数型的な記述への慣れが必要
  • Visual Studioでの開発環境の貧弱さ
  • マイクロソフトの今後のサポート体制への不安
    • J#みたいになるんじゃないの?
    • 結局C#に色々吸収されていってF#の影が薄くなったりとかして・・・

 さて、上記のような比較から、お仕事でF#を導入したい場合には、記述の簡潔さとか安全なコードを書けることによる開発効率の向上と、学習コストや枯れてない技術への取り組みに対する不安とを天秤にかけて判断する必要がありそうです。