F#の立ち位置

いげ太さんがときどきぼやいてたかと思いますが(追記: 不正確でした。いげ太さんからのコメントは下に)、「F#はなーんかMSに冷遇されてねえ?そのせいか、C#からF#に乗り換える人も少なくね?」みたいな話があります。 それは正しいといえば正しいのですが、コインの裏表のようにも思われて。

C#は、いろんな機能を貪欲にぶっこんできているわけじゃないですか。LINQみたいな関数型プログラミング由来の機能とか。asyncとか。

で、そのぶっこみかたというのが、割とコンパイラががんばるタイプの、キーワードが増えていくやつじゃないですか。

そんで、その様を「専用の構文をどんどん追加していくと、その言語にはどんどんゴミの山が積みあがっていきます。」と厳しく指摘されたりするわけじゃないですか。

で、なんでC#はそういう(言わば、ダサい)方針なのかというと、言語仕様についてもユーザービリティテストを実施して、その結果がおれらみたいなボンクラにとって難しすぎるとわかると却下していたりするからなんだけど、その中に含まれる1要因として、IDE、というかVisual Studioで開発したりデバッグ時にステップ実行したりするときにわかりやすいかどうか、というのもあるんじゃないかなと。

イメージしてるのはC++のテンプレート機能なんだけど、あれ、エラーメッセージが宇宙レベルでヤバイって話があるじゃないですか。そんな機能、C#には絶対入らないですよ。まああれはコンパイル時のエラーですが……

C#に新機能が入るときは、VSの方も更新しないといけないことが多くて。逆に、VSの方で対応できない(つまり、「わかりやすく」見せることができない)ような機能は却下されたり、違う形に変更されたりするわけで。

F#の言語仕様はそこまでVSにべったりにならないのが、自由で良いところでもあり、C#ユーザーが移行してこないという意味で悪いところでもあるという。

あとはあれだ、VBな。そういうIDEべったりの言語の面倒は2つで十分ですよ!という。(それがしんどくてかどうかはわからないが、Roslynはどちらの言語もカバーするようになっている)

(追記)いげ太さんのツイート。

https://twitter.com/igeta/status/404427081200578560

https://twitter.com/igeta/status/404427405898432513