11

リテラシー プログラミングとは、ドキュメントを最初に作成し、次にコーディングを行うソフトウェア開発の方法です。コード スニペットのドキュメントを作成し、次にスニペットの実装を作成します。ソフトウェア ソース コードの視覚的な外観は、コード パラグラフを含む単語のような単純なドキュメントです。

コードの読みやすさとメンテナンスに大きな利点があるため、私が働いている開発ショップを読み書き可能なプログラミングのみを使用するように変換しようとしています。ただし、ツールが不足しているため、社内での LP の使用は制限されています。たとえば、読み書き可能なプログラムを作成するための理想的な方法は、単語マークアップを使用して段落を記述し、実装と共にサブ段落を挿入することです。しかし、VS200x で LP を実行するための優れたツールが見つからないようです。

理想的には、そのようなツールは Word 2007 のように見えますが、IDE に統合されています。コーダーがカーソルをコード パラグラフに設定すると、現在 IDE にあるのと同じように、すべての機能が提供されます。

LP、特に .NET と VS200x に適したツールは何ですか?

4

9 に答える 9

15

チームの働き方を改善しようとしたことを称賛します。あなたがそれをしようとしている限り、あなたはそうでないものよりも有利です。

私はプロジェクトに文芸的プログラミングを一度使用しました。本当に大変で、結果は本当に良かったです。合理的なトレードオフのように見えました。

しかし、今日、私はむしろ別のアプローチを取りたいと思います。人間のための散文や機械のためのコードの代わりに、人間がそれを読んでもかまわないほど明確なコードを書きたいと思います。コメントを書きたいという気持ちを感じると、「このコードをもっとわかりやすくすることができた」と思います。つまり、私が書いているドキュメントは多くではなく、少なくなっています。

さて、あなたが選んだどんな道でも頑張ってください。

于 2008-10-20T17:35:16.820 に答える
7

コードをdox​​ygenコメントでマークアップすることをお勧めします。その後、コードからドキュメントを生成できます。これは、必要なことを行うためのほとんど逆の方法であることはわかっていますが、少なくとも、コードとドキュメントという望ましい結果が得られます。これは同じソース ファイルからのものです。明らかに、これには既存の IDE をコーディングに使用できるという利点があります。

開発チームを変えようとしている場合、このアプローチは、本格的な読み書きの方法論よりも飲み込みやすいかもしれません。コーディングが同じであることには満足していますが、より良いドキュメントを作成する必要があります。コード。

それが私が提案できる最善の方法です。あなたのチームがこのアイデアについてどう思うか見てください。

于 2008-10-20T17:27:03.123 に答える
5

チームのプロセスを改善しようとするための+1

-行き止まりの道を進むための-1

Knuthに敬意を表して、ユニットテストはドキュメントよりも優れています

  • 単体テストが古くなることはありません
  • 散文でコードを汚染することは、デバッグ時に大きな気を散らすものです
  • あなたのコードが本当に多くの説明を必要とするなら、それはおそらく不十分に設計されていてバグがあります
于 2008-10-20T18:23:28.627 に答える
2

私が知っている、LPを実際にサポートしている非難解言語はHaskellだけです。正直なところ、現代のプログラミング言語でのLPの需要はあまり聞いていません。ほとんどの人は、インラインドキュメント形式(javadoc、rdocなど)の使用に満足しているようです。

于 2008-10-20T17:30:20.183 に答える
1

謝罪いたします。自動化されたドキュメントビルドスクリプトですでにDoxygenを使用していることを述べておかなければなりません。可能な場合は.NETdocタグを使用し、.NET XML docタグが不足している場合は、doxygenタグを組み合わせます。これは非常にうまく機能します。重要なのは、ドキュメントを作成するときに作成が大幅に減少することです。私たち(人間)は、WYSIWYGエディターを使用せずにドキュメントを作成するのは非常に苦手です。エラーに敏感なことは言うまでもありません。

チームは現在、考え方をコーディングから最初にドキュメントを作成し、次にコーディングする段階にあります。これは、コーダーがLPパラダイムを受け入れることができるため、最も重要なステップです。

それを行うVSプラグインの市場がここにあると思います。

また、Doxygenは確かに、この問題に対してLPメソッドソリューションを積極的に使用するための優れたツールのようです。使用は非常に限られていますが。

于 2008-10-20T17:32:13.190 に答える
1

Literate Programming 用の最新のツールについては知りません。私は 15 年前に Web プログラミングを行ったことがあります。

Doxygen は素晴らしいツールですが、LP ではまったく役に立ちません。問題は、LP が人間が読めるコードを書くことに重点を置いていることです。継続的な改良/開示に対する適切なサポートはありません。LP は、VS のファイル クラス属性/メソッドとは異なる構造を持つソース コードのビューを必要とします。NSpec の方が多少良いかもしれませんが、ボトムアップが多すぎます。

于 2008-11-18T16:20:29.233 に答える
1

しかし、今日は別のアプローチを取りたいと思っています。人間にとっては散文で機械にとってはコードではなく、人間が読んでも気にならないほど明確なコードを書きたいのです。コメントを書きたい衝動に駆られると、「このコードをもっとわかりやすくできたのに」と思います。つまり、私が書いているドキュメントは減っていますが、増えていません。

それは私たちもやっていることです。私たちが作成する多くのコードでは、明確で人間が読めるコードを書くだけでは十分ではありません。画像レンダリング機能について説明したい場合はどうしますか? 半分のページに説明を書くのではなく、画像を使って説明する方がよいでしょう。

于 2008-10-20T17:40:39.943 に答える
0

識字プログラミングの主な考え方は、プログラムを数学的なテキストとして書くことです。プログラムに必要なすべての概念が何を意味するのかをできるだけ明確に定義し、それが言語でどのように実装されているか、なぜ他の方法ではなくそのような方法で行うことにしたのか、または後で何が変更されるのかを説明できます。

変更するコードにコメントを付け、変更の理由を説明する新しいコードを挿入することで、変更を文書化することもできます。一部の変更は、パフォーマンスを最適化するためのコードの変換に依存する場合があります。たとえば、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 を使用したことがない場合は、まずプレーン テキストから始めることができます。多分それを dox​​igen と組み合わせてすべてをインデックス化します。LaTeX では Doxigen は必要ありません。これは、いくつかのインデックス、ハイパーリンクを作成し、ドキュメントをブックとして構造化できる組版システムだからです。

Haskell プログラムは通常、文芸的なスタイルで書かれています。たぶん、本や記事を読んで見るのは良い考えです。

于 2015-11-23T12:07:11.410 に答える
0

ソース小説の作者さん、こんにちは。

ここでDOxygenに言及した人もいますが、これは実際の文芸的プログラミング を許可していませんが(制限の例として、これはソースを並べ替えたビューを持つことを許可していません)、しかし、この分野では価値のあるツールとして認識されているようです。独自の支持者(LP 支持者)による: LP ツールに関するこの参照ページの上部に記載されています: Literate Programming Tools

于 2010-02-24T07:34:36.753 に答える