バージョン 1.0 からの C# 開発者として、F# は過去数週間の自由時間を確保してきました。現在、コンピュータは 2 コア、4 コアで販売されており、マルチスレッド化を実現するのは必ずしも簡単ではありません。
現時点では、F# は複雑なワークロードや重いワークロードに対して大きな可能性を秘めていることがわかります。F# は (RTM になったら) エンタープライズ ソフトウェア市場で重要なプレーヤーになると思いますか?
バージョン 1.0 からの C# 開発者として、F# は過去数週間の自由時間を確保してきました。現在、コンピュータは 2 コア、4 コアで販売されており、マルチスレッド化を実現するのは必ずしも簡単ではありません。
現時点では、F# は複雑なワークロードや重いワークロードに対して大きな可能性を秘めていることがわかります。F# は (RTM になったら) エンタープライズ ソフトウェア市場で重要なプレーヤーになると思いますか?
F# には、数学的モデリング (銀行/取引アプリケーションなど) などのエンタープライズ アプリケーションのニッチな分野に進出する絶好の機会があると思います。関数から副作用を取り除くことは、並列処理とメモ化の絶好の機会にもつながります。これらの言語が主流の開発で離陸するかどうかを言うのは難しいですが、私の意見では、問題は人間指向である可能性が高いです (つまり、c# のようなより典型的な言語に精通している人々のスキルの欠如と高い学習曲線)。 /java/c++) ではなく、技術的です。
F# がエンタープライズ ソフトウェアのインポートになるかどうかに関係なく、任意の言語でコードの純粋な機能部分を分離できることが、マルチコア コンピューターの可能性を利用するための鍵になると思います。たとえば、Microsoft の .NET 用 Parallel Extensions は優れていますが、並列で実行できないコードを並列化することで間違いを犯す余地がまだたくさんあります。コードが純粋な関数型言語または純粋に関数型の言語のサブセットの形式である場合、並列で実行できることが保証されます。秘訣は、作業を割り当てる最も効率的な方法を見つけ出すことです。
この中で F# が果たす役割は、人々の足を濡らし、より宣言的な方法で考え始めるきっかけとなるでしょう。
不変型の使用の増加や純粋なマーキング機能など、一部の機能的なものがC#に移行することがわかります。F#がエンタープライズ開発でより広い役割を果たしていることはわかりません。平均的な開発者に。
C#/VB は常に主要な言語ですが、F# は複雑な問題に適しています。C# はより汎用的ですが、F# は IA、統計、科学 (たとえば、癌の治療法の発見) などに優れています。F# が C# に取って代わることはありませんが、.NET がコンピューター サイエンスのより多くの分野で競争できるようになります。データ マイニングと大量のデータの処理に関しては、SQL Server や Oracle などのデータベース内で直接開発する方が適切です。
F# を習得するのが難しいのは、他のほとんどの言語の命令型の考え方に「堕落」してしまったからです。5年間やってきたことを捨てるのは難しい!また、私の経験では、ocaml と F# を使用するのは楽しいことです。F#/Ocaml について私が持っている唯一の不満は、ほとんどの場合、人々が型推論を使いすぎてコードが読めなくなることです。保守を容易にするために、変数の型を宣言したいと思います。
F# は、VB/C#/Java と比較して、常にニッチな言語であり続けると思います。なぜなら、F# は、数学またはコンピューター サイエンスのバックグラウンドをより必要とするからです。ただし、それが CLR 言語であるという事実は、以前の関数型言語よりもはるかに大きな露出があることを意味します。
私は投資銀行で働いており、すでにいくつかのアドホック スクリプトの目的で F# を使用しています。システムへのより正式な統合を検討できるように、F# のリリース バージョンを非常に強く望んでいます (基本的には残る可能性がありますが)。 C# ベース)。