長い間(数年)、私はHaskell'eについて最終的な意見を立てることを敢えてしなかった。私の考えは矛盾しすぎていた。 そして最後に、 グラフの二者間決定プログラムの解析に関するこの記録のおかげで、私はそれを行うことができます:)
Haskellプログラマー-基本的には趣味のプログラマー-は、問題、アルゴリズム、システムの解決策ではなく、Haskellをプログラミングする人たちだということに気付きました! [1]メモに記載されている簡単なアルゴリズムと、その周りにいくつの言語構成、説明、議論が積み上げられているかを見てください。 (アルゴリズムのシンプルさを理解するには、PythonのLispのオプションのコメントを参照してください)。
私はこの考え方に非常に精通しています。言語の力を最大限に活用しようとすると、タスク自体を忘れてしまいます。これは、Lispの世界でもよく見られるからです。本当に魅力的な言語があります。 そして、「心を吹き飛ばした」という表現は、LispとHaskellの両方についてよく聞こえます。 しかし、これはゴミです! もちろん、何か新しいことを学んで喜ぶことはできませんが、子供が新しいおもちゃをするので、これを喜ぶ必要はありません。 優れたプログラミング言語は、できる限り明確でシンプルである必要があり、表現の自由を人に与える必要があります。 正直なところ、これはまさに私がLispを発見したときに私が喜んでいたことです。私が探していたものを見つけたということです。 そして、私が今まで見たことのないある種のデザインやねじれを見たわけではありません。
Haskellは、長所と短所の両方を持つ非常に興味深い言語です。 長所:これは興味深いセマンティクスであり、最新のコンパイラーが提供する強力な理論的基盤、優れたバイナリ実行速度です。 短所:ひどい構文[2] 、人為的な制限。これにより、うまくできる複雑なアプローチを使用する必要が生じます。 そして、プログラミング言語のトピック、その開発と研究に興味があるなら、彼らはそれだけの価値があります。 他の多くの実用的な言語はHaskellから取られています。これの代表的な例はClojureです。 しかし、それは大規模なシステムを書くためではなく、一般的なケースでアルゴリズムを研究するためでもありません。 構文とセマンティクスに加えて、プログラミング言語には3番目の側面があり、おそらく最も重要な側面でさえあります。これはしばしば忘れられます-語用論。 言語の使用方法、目的、開発者とユーザーのコミュニティの生活。 Haskellのプラグマティズムは、主に研究のために存在するということです... Haskell 。
注:
[1]もちろん、実世界のために多くの有用なコードを書いた、例外的で最も美しいHaskellプログラマーがいますが、これは、私が嫌いな格言で言うように、ルールを確認するだけです。
[2]現代言語では、不規則な構文はユーザーにとって無礼です。 結局のところ、現代の多言語の世界では誰も同じ言語でプログラムを行っていないので、だれもがすべての人の特異性に留意することを要求することはできません。 そして、これらの共通言語はますます増え、レガシーコードの量は減らないでしょう。 Lisp、Python、Php、C、JavaScript、Shell、Javaを扱っています。 そして、これは最も鮮明な例ではありません。
PS。 最初は、 ブログでトピックを取り上げました。 しかし、このテーマに関するHaskellプログラマーの意見を聞くために、より広範な議論に持ち込むことにしました。