問題タブ [literate-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 大規模な Java プロジェクトで noweb を使用する
いくつかのソースコードファイルを異なるサブディレクトリに生成する必要がある大規模な Java プロジェクトで、noweb literate プログラミングツールを使用した人はいますか? これを noweb でどのように管理しましたか? リソースやベスト プラクティスはありますか?
.net - 文芸的プログラミング
リテラシー プログラミングとは、ドキュメントを最初に作成し、次にコーディングを行うソフトウェア開発の方法です。コード スニペットのドキュメントを作成し、次にスニペットの実装を作成します。ソフトウェア ソース コードの視覚的な外観は、コード パラグラフを含む単語のような単純なドキュメントです。
コードの読みやすさとメンテナンスに大きな利点があるため、私が働いている開発ショップを読み書き可能なプログラミングのみを使用するように変換しようとしています。ただし、ツールが不足しているため、社内での LP の使用は制限されています。たとえば、読み書き可能なプログラムを作成するための理想的な方法は、単語マークアップを使用して段落を記述し、実装と共にサブ段落を挿入することです。しかし、VS200x で LP を実行するための優れたツールが見つからないようです。
理想的には、そのようなツールは Word 2007 のように見えますが、IDE に統合されています。コーダーがカーソルをコード パラグラフに設定すると、現在 IDE にあるのと同じように、すべての機能が提供されます。
LP、特に .NET と VS200x に適したツールは何ですか?
methodology - 文芸的プログラミングのスケーリング?
ご挨拶。私は今、Literate Programming を少し見てきましたが、その背後にあるアイデアが気に入っています。基本的には、コードについて小さな紙を書き、設計上の決定事項、おそらくモジュールを囲むコード、モジュールの内部作業などを書き留めます。モジュール、設計上の決定から生じる仮定と結論、潜在的な拡張、これらすべてを tex を使用して適切な方法で書き留めることができます。確かに、最初のポイント: それはドキュメントです。最新の状態に保つ必要がありますが、変更には正当な理由が必要であり、それを書き留めることができるため、それほど悪いことではありません。
しかし、リテレート プログラミングはどのようにしてより大きな規模に拡張できるのでしょうか? 全体として、Literate Programming はまだ単なるテキストです。もちろん、非常に人間が読めるテキストですが、それでもテキストであるため、大規模なシステムを追跡するのは困難です。たとえば、コンパイラの大部分を作り直して、>> を使用し、いくつかの魔法を使用してコンパイル手順を連鎖させました。 " 非常に扱いにくくなり、これを x >> y >> z >> a に変更すると少し改善されましたが、これも限界点にあります。
では、Literate Programming はどのように大規模システムに拡張されるのでしょうか? 誰かがそれをやろうとしていますか?
私の考えでは、LP を使用して、イベント ストリームを使用して相互に通信するコンポーネントを指定し、graphviz のサブセットを使用してこれらすべてをチェーン化することを考えています。ネットからドキュメント (データフロー図) を抽出し、そこからコードを生成することもできるため、これは LP のかなり自然な拡張です。どう思いますか?
――テタ。
bug-tracking - TeXのエラーログのグラフはどこにありますか?
DonaldKnuthのLiterateProgrammingには、TeXのバグ数の経時変化を示すグラフを正しく覚えていればありました。このグラフは過去10年ほどフラットのままであり、TeXにバグがない可能性があることを示しています。
このグラフを使用して、バグ追跡ソフトウェアの重要性を説明したいと思います。どこかからダウンロードできますか?
java - Java で文字列から数字を解析するより良い方法についてのヘルプ
数字と文字を含む文字列があります。文字列を連続した数字のチャンクと連続した文字のチャンクに分割したいと考えています。
文字列「34A312O5M444123A」を考えてみましょう。
出力したい: ["34", "A", "312", "O", "5", "M", "444123", "A"]
私は動作し、次のようなコードを持っています:
str を 2 回分割して、すべての数字のチャンクを含む配列とすべての文字のチャンクを含む配列を取得することを検討しました。次に、結果をマージします。可読性を損なうため、これを避けました。
正規表現パターンは読みやすさの大きな障害であることがわかったので、正規表現パターンでこれを解決することを意図的に避けました。
- デバッガーはそれらをうまく処理しません。
- それらは、誰かがソース コードを読む流れを妨げます。
- 残業正規表現は有機的に成長し、モンスターになります。
- 彼らは非常に直感的ではありません。
私の質問は次のとおりです。
- 上記のコードの読みやすさを改善するにはどうすればよいですか?
- これを行うより良い方法はありますか?この問題をエレガントに解決する Util クラス。
- 正規表現を使用することと、私が上で書いたものに似たものをコーディングすることの境界線はどこにあるのでしょうか?
- regExes の可読性/保守性をどのように向上させますか?
c++ - 特殊なケースとヒューリスティックを管理する方法
私はよく、明確に定義された特定のアルゴリズムに基づいたコードを持っています。これはよくコメントされ、適切に思えます。ほとんどのデータセットでは、アルゴリズムはうまく機能します。
しかし、特定のデータ セットを使用して特定の問題を解決するために、エッジ ケース、特殊なケース、ヒューリスティックが追加されます。特殊なケースの数が増えるにつれて、コメントはますます曖昧になります。1年ほど経ったこのコードを見直して、特定の特殊なケースやヒューリスティックが追加された理由を思い出すのが怖いです。
ソース コードにグラフィックスを埋め込んだりリンクしたりする方法があればいいのにと思うことがあります。そのため、効果的に「このデータ セットのグラフでは、この特定の機能が原因でルーチンが正しくトリガーされなかったので、この部分のコードが追加されました。」
このような状況に対処するためのベスト プラクティスは何ですか?
これらの珍しい/エッジのケースを処理するには、常に特別なケースが必要なようです。コードを比較的読みやすく理解しやすいものにするにはどうすればよいでしょうか?
写真からの特徴認識を扱う例を考えてみましょう (正確には私が取り組んでいるものではありませんが、類推は適切に思えます)。一般的なアルゴリズムが失敗し、特別なケースが必要な特定の画像を見つけた場合、その情報をできる限りコメントに記録します (または、誰かが以下に提案したように、説明的な関数名)。しかし、多くの場合、問題の動作を示す特定のデータ ファイルへの永続的なリンクが欠落しています。私のコメントは問題を説明する必要があり、おそらく「この動作の例についてはファイル foo.jp を参照してください」と言うでしょうが、このファイルはソース ツリーには決してなく、簡単に失われる可能性があります。
このような場合、参照用にデータ ファイルをソース ツリーに追加しますか?
literate-programming - Windows で CWEB 形式のコードを読み取る最良の方法は何ですか?
Donald Knuth には、彼のページで読むべき多数のプログラムがあります。しかし、それらはほとんど「奇妙な」CWEB形式です...
それらを Windows で適切に読めるようにする最善の方法は何でしょうか?
c++ - リテラシーコーディング対。std::ペア、ソリューション?
ほとんどのプログラマーと同様に、私は Literate プログラミングの原則を賞賛し、従おうとしていますが、C++ ではstd::pair
、無数の一般的なタスクに , を日常的に使用していることに気付きます。しかしstd::pair
、私見、文芸プログラミングの卑劣な敵です...
私の要点は、1、2 日前に書いたコードに戻って、std::pair
(通常は反復子として) の操作を目にしたときに、「iter->first と iter->second はどういう意味だったの?? ?」。
std::pair
他の人も自分のコードを見て同じ疑問を持っていると思いstd::pair
ます。
scheme - リテレート プログラミングの直感的な動機は?
そこで、私はscribble/lpモジュールを使用して、plt-scheme を使用した最初の文芸プログラムを作成しました。
もちろん、そこには何も役に立ちません。今、文芸的なプログラミング構造の代わりに、単純なコメントを使用しないのはなぜだろうかと思っています。任意の意見を歓迎します。おそらくより多くの露出/経験を持っている人がいれば、それは本当に素晴らしいことです. これにより、十分に文書化されたコードと Literate プログラミング構造を使用して記述されたコードとの違いをより直感的に説明できる可能性があります。