私は文芸的プログラミングの概念に不慣れです。私はこの主題に関するドナルド・クヌースの論文(PDF)を読んでいましたが、最初の冒頭で、彼は次のように述べています。
私たちの主な仕事はコンピューターに何をすべきかを指示することだと想像する代わりに、コンピューターに何をしてほしいかを人間に説明することに集中しましょう。
彼または彼女 [リテラシー プログラミングの実践者] は、プログラムの概念が人間の理解に最適な順序で導入されているため、相互に補強し合う公式および非公式の方法を組み合わせて、理解しやすいプログラムを目指しています。
次に、さらに読む:
プログラムに関することは、その構造的な関係です。複雑なソフトウェアは、単純なパーツとそれらのパーツ間の単純な関係で構成されます。プログラマーの仕事は、トップダウンやボトムアップのように厳密に決められた順序ではなく、人間の理解に最も適した順序で、それらのパーツとそれらの関係を 記述することです。
(...)
トップダウン プログラミングでは、どこに向かっているのかについて強いアイデアが得られますが、頭の中で多くの計画を立てる必要があります。最後まで本当に何も決まっていないので、サスペンスが高まります。プログラミングには、ますます多くのサブルーチンが構築されるにつれて、ますます強力な鉛筆を継続的に使用できるという利点があります。しかし、プログラム全体の編成を最後の最後まで延期せざるを得なくなるため、あてもなく失敗する可能性があります。
このように WEB 言語は、人が「意識の流れ」の順序でプログラムを表現することを可能にします。TANGLE は、PASCAL コンパイラが要求する配列にすべてをスクランブルすることができます†</sup>。WEB のこの機能は、おそらくその最大の資産です。
上記の抜粋は、この主題に興味を持たせたので、もう少し調査しました。Haskell とリテラシー プログラミングの関係を検索エンジンの検索結果から確認することは難しくありませんが、「人間が理解するのに最適な順序」は見当たりません。むしろ、コンピューターが機能するために必要な順序を維持しながら、非常によくできたドキュメントを目にします。
- その順序の問題を取り除いて「文芸的プログラミング」という用語を使用できますか?
- 「意識の流れ」順序機能を必要としない、読み書き可能なプログラミングの他の定義はありますか?
- Haskell は (Knuth の定義を使用して) 本当に読み書き可能なプログラミングが可能ですか?
最後に、個人的な意見として、Haskell が行うこと (そしておそらく他の多くの言語が行うこと) でさえ、Knuth の文芸的なプログラミングではないということを言わなければなりません。コメントがコードをはるかに超える場合、それは大きな目的を果たします。
†</sup> WEB と TANGLE は、もともと D. Knuth が文芸的プログラミング概念の最初の実装で使用したシステムの一部です。