F#とHaskellのどちらが汎用プログラミングに適していますか? [閉まっている]

StackOverflow https://stackoverflow.com/questions/142878

  •  02-07-2019
  •  | 
  •  

質問

現在Haskellを学んでいますが、汎用アプリケーションのプログラミングにはどの言語(F#またはHaskell)を使いますか?

どの言語がより強力だと思いますか?

役に立ちましたか?

解決

Haskellに行きます。 HackageDB は、その言語専用に作成されたライブラリの素晴らしいコレクションです。 F#の場合、関数型言語を念頭に置いて書かれていないライブラリをほとんど使用する必要があるため、使用するには「エレガント」ではありません。しかし、もちろんそれは、あなたがどのくらいの機能的なプログラミングをしたいか、そしてそれを使用したいプロジェクトの制約に大きく依存します。 「汎用」であっても、すべての場合に使用する必要があるわけではありません;)

他のヒント

Haskellが好きです。

Haskellのツールが貧弱だというJon Harropの主張は、私がこれにまったく同意しないので、少し考えさせられました。ここでの問題は、部分的には開発スタイルの1つだと思います。 F#とGHCのツール関連のいくつかの特性を比較しましょう:

  1. F#には豊富な視覚ツールがあり、GHCにはありません。私にとって、視覚ツールの欠如は無関係です。私はvi、Unixコマンドライン、および非常にカスタム化されたビルドシステムを使用しています。 F#での私の開発スタイルに対するサポートが不足していることは、私にとって非常に難しいことです。一方、Visual-Studioタイプの環境で作業することを好む場合は、まったく逆の意見があります。

  2. F#および/または.NETには、非常に優れたデバッガーがあります。 GHCには、インタープリターで実行される限定的なデバッガーしかありません。私は何年もデバッガを使用していません(これはテスト駆動開発を使用しているためです)。Haskellのようにほとんど純粋な関数で作業する場合、デバッガはあまり必要ありません。したがって、私にとって、このツールの欠如はかなり無関係です。

  3. ライブラリ。これは主に必要なライブラリに依存しますよね?必要なライブラリがなければ、たくさんの良いライブラリは役に立ちません。また、設計が不十分なライブラリをたくさん持っていると、あまり役に立たないかもしれません。 Haskellには確かに.NETよりも少ないライブラリがありますが、合理的な選択があり、それらの多くのAPIデザインの品質は非常に高いです。

ネイティブコードライブラリへのF#のインターフェイスがどのようなものかわかりませんが、素晴らしいFFIがあるため、GHCはこれに最適です。私は完全にHaskellでWindows DDEサーバーを書きました(はい、Cの行ではなく、Windows Cライブラリからのコールバックを処理することすらありません)、CまたはC ++で同じことをするよりもかなり時間がかかり、かなり簡単でした。ネイティブコードインターフェイスが必要な場合は、Haskellがより良い選択です。

"予測不能性"メモリ使用量とパフォーマンスの良い点です。 Haskellは、自分が何をしているのかを知っていれば、実際には合理的に予測可能であるように見えますが、最初は何をしているのかわからず、学ぶべきことがたくさんあります。 F#は他の.NET言語にはるかに似ています。

全体として、この質問はおそらく言語よりもプラットフォームに起因するものです。「Unixyの世界」の大きな違いは、 GHCがネイティブコードと「Windowsy world」を生成する.NETで実行されているF#の問題は言語の問題ではありません。

.Netフレームワーク全体にアクセスできるので、F#と言います。ただし、それはもっとライブラリのことです。

何をしたいかによります:

Haskellは、2つの言語のうちより純粋に機能的な言語です。

F#はハイブリッド言語であり、純粋に機能的ではありませんが、WindowsまたはMonoで簡単に最新のことを行うために使用できる優れた基本クラスライブラリのセットがあります。

Jon Harropは何らかの理由でHaskellに深刻な影響を与えていると思います。アカデミア以外で使用されていないことは事実ではありません。実際、投資銀行で広く使用されており、F#やOCamlよりもはるかに多くの理由があります。職務プログラミングが必要な場合は、Haskellプログラマー向けにF#やOCamlよりもはるかに多くの投稿が宣伝されているので、Haskellを学んでください。 F#にはMicrosoftが背後にあり、ゼロから始まっているが、現時点ではHaskellが明確なリードを持っているため、F#が人気を博すと確信しています。

おそらく2、3年前、OCamlは実用的な関数型言語の分野をリードしていましたが、それ以来、Haskellはより多くのライブラリ、機能、パフォーマンスの向上、より広範な商用利用でそれを追い越しました。

Neil Mitchellによるこのブログ投稿は、有益なものです。

F#Haskellの視点から

コメントも明るくなっています。

私はそれがあなたがそれを学んでいる理由に依存すると言うでしょう。純粋な関数型言語の経験のためにそれをしているなら、Haskellに行きましょう。しかし、それ以上の言語を間違いなく使用するのであれば、F#の方が良い選択かもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top