識字プログラミングの主な考え方は、プログラムを数学的なテキストとして書くことです。プログラムに必要なすべての概念が何を意味するのかをできるだけ明確に定義し、それが言語でどのように実装されているか、なぜ他の方法ではなくそのような方法で行うことにしたのか、または後で何が変更されるのかを説明できます。
変更するコードにコメントを付け、変更の理由を説明する新しいコードを挿入することで、変更を文書化することもできます。一部の変更は、パフォーマンスを最適化するためのコードの変換に依存する場合があります。たとえば、C言語のような言語で2つのループの代わりに1つのループを作成し、1つの式をより単純なものに変更するなど。または、情報を表すために他のデータ構造を変更するなど、より複雑なもの。すべての変更は十分に正当化され、文書化されています。ソースコードを読むだけで、プログラムの問題領域について理解でき、深く理解できます。あいまいさによる間違いの回避。プログラムの起源は完全に文書化されており、すべての考えがプログラムに含まれているため、後ですべてを思い出すことができます。
厳密に言えば、プログラムが開発されていれば、読み書き可能なプログラムをプレーンテキストで書くことができますが、ほとんどのプログラミング言語に LaTeX マークアップを配置することは難しくないため、TeX/LaTeX で組版するのが最も美しく、機能的で、最も簡単な方法です。
Haskell スクリプトには命令ではなく一連の宣言が含まれているため、Haskell で読み書き可能なプログラムを作成するのは自然なことです。すべての宣言は任意の順序で配置できます。これは、命令を特定の方法で順序付けることが重要な他の言語では異なります。
私は web や cweb などのプログラムを使用したことはありませんが、これらのプログラムはプログラムを人間にとって論理的な順序でタイプセットするのに役立ちますが、プログラムモジュールは適切なコンパイルのために生成できます。
使いやすいリストと呼ばれるLaTeXパッケージがあります。すべてのコードを開始してコメントを閉じ、コードを終了して新しいコメントを開くことができます。私が覚えている限りでは、次のようなものです。
% /* begin of literate program
\documentstyle{article}
\usepackage{listings}
\lstdefinitions here I do not remember the syntax. Here one can define
a replacement for startcode*/ and /*endcode for spaces.
more definitions here
\begin{document}
Your explanation including formulas like $s=c\times\sum_{i=0}^{i=N} x_i$ etc.
\begin{lstlising}
startcode*/
s=0
for(i=0;i<=N;i++) s=s+x[i];
s=c*s;
etc..
/*endofcode
\end{lstlisting}
More explanation ...
\end{document}
% end of literate program */
テキストのプリアンブルで startcode*/ および /*endofcode をキーワードとして定義し、リスト パッケージの追加定義でスペースに置き換えることができます。パッケージのドキュメントを参照してください。
LaTeX ソースの最後に次のように入力します。
% end of literate program */
これは、最初に LaTeX のコメントであり、反対を配置できます。
% /* start of program
プログラムをコンパイルする場合は % LaTeX コメント記号を削除し、LaTeX でコンパイルする場合は再度付けます。
これまで LaTeX を使用したことがない場合は、まずプレーン テキストから始めることができます。多分それを doxigen と組み合わせてすべてをインデックス化します。LaTeX では Doxigen は必要ありません。これは、いくつかのインデックス、ハイパーリンクを作成し、ドキュメントをブックとして構造化できる組版システムだからです。
Haskell プログラムは通常、文芸的なスタイルで書かれています。たぶん、本や記事を読んで見るのは良い考えです。