問題タブ [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.
haskell - Haskell でのリテラシーなプログラミングは本当に「リテラシーなプログラミング」ですか?
私は文芸的プログラミングの概念に不慣れです。私はこの主題に関するドナルド・クヌースの論文(PDF)を読んでいましたが、最初の冒頭で、彼は次のように述べています。
私たちの主な仕事はコンピューターに何をすべきかを指示することだと想像する代わりに、コンピューターに何をしてほしいかを人間に説明することに集中しましょう。
彼または彼女 [リテラシー プログラミングの実践者] は、プログラムの概念が人間の理解に最適な順序で導入されているため、相互に補強し合う公式および非公式の方法を組み合わせて、理解しやすいプログラムを目指しています。
次に、さらに読む:
プログラムに関することは、その構造的な関係です。複雑なソフトウェアは、単純なパーツとそれらのパーツ間の単純な関係で構成されます。プログラマーの仕事は、トップダウンやボトムアップのように厳密に決められた順序ではなく、人間の理解に最も適した順序で、それらのパーツとそれらの関係を 記述することです。
(...)
トップダウン プログラミングでは、どこに向かっているのかについて強いアイデアが得られますが、頭の中で多くの計画を立てる必要があります。最後まで本当に何も決まっていないので、サスペンスが高まります。プログラミングには、ますます多くのサブルーチンが構築されるにつれて、ますます強力な鉛筆を継続的に使用できるという利点があります。しかし、プログラム全体の編成を最後の最後まで延期せざるを得なくなるため、あてもなく失敗する可能性があります。
このように WEB 言語は、人が「意識の流れ」の順序でプログラムを表現することを可能にします。TANGLE は、PASCAL コンパイラが要求する配列にすべてをスクランブルすることができます†</sup>。WEB のこの機能は、おそらくその最大の資産です。
上記の抜粋は、この主題に興味を持たせたので、もう少し調査しました。Haskell とリテラシー プログラミングの関係を検索エンジンの検索結果から確認することは難しくありませんが、「人間が理解するのに最適な順序」は見当たりません。むしろ、コンピューターが機能するために必要な順序を維持しながら、非常によくできたドキュメントを目にします。
- その順序の問題を取り除いて「文芸的プログラミング」という用語を使用できますか?
- 「意識の流れ」順序機能を必要としない、読み書き可能なプログラミングの他の定義はありますか?
- Haskell は (Knuth の定義を使用して) 本当に読み書き可能なプログラミングが可能ですか?
最後に、個人的な意見として、Haskell が行うこと (そしておそらく他の多くの言語が行うこと) でさえ、Knuth の文芸的なプログラミングではないということを言わなければなりません。コメントがコードをはるかに超える場合、それは大きな目的を果たします。
†</sup> WEB と TANGLE は、もともと D. Knuth が文芸的プログラミング概念の最初の実装で使用したシステムの一部です。
r - org-mode での外部化されたソース コードのリンク/インポート
この論文をきっかけに、Emac のorg-modeを少し調べてみようと思いました。現在、自分のドキュメントを書くのにどちらが適しているかを評価しようとしています。
Knitr について私が本当に気に入っているのは、実際のソースを外部化するオプションです(注意してください: R スクリプトのラベル/名前の宣言が から## ---- label -------
に変更されたよう## @knitr label
です; を参照してください?read_chunk
)、それらを実際の読み書き可能なプログラミング/再現可能な研究に「リンク」します。ドキュメント(実際にそのドキュメントにコードを書くのではなく):
で「インポート」
それぞれのラベルを参照して「再利用」します
質問
.org
これは組織モードでも可能ですか、それとも実際のコードをドキュメントに入れる必要がありますか?
私はこれを見つけましたが、外部ソースコードファイルをリンク/インポートし、リンクされたコードを内部に持つことでそれらを実行できるという特定の概念は見つかりませんでした
バックグラウンド
このアプローチは、読み書きのできるプログラミングの一般的なパラダイムをある程度まで対比する可能性があることは確かです。しかし、私はやや「アトミック」なスタイルで作業するのが好きなので、最初はファイルを分けておき、次にすべてを動的にマッシュアップする方が自然だと感じています。
literate-programming - 自然言語プログラミング vs. リテレート プログラミング
自然言語プログラミングと文芸的プログラミングの違いがわかりません。誰かが説明してくれたら、私は感謝します。
scons - 文芸的プログラミングのためのsconsの使用
noweb を使用して、noweb 入力ファイル **.nw からドキュメント ファイル (またはソース ファイル) を生成したいと考えています。
手から私はそのようなことをします:
ここで、scons を使用してこれを自動化できるかどうかを尋ねたいと思います。
私のプロジェクト ディレクトリが $MYPROJECT にあると想像してください。ここに「$MYPROJECT/SConstruct」があります。ここで、scons ツール "tangle.py" ("noweb.py から簡素化) を定義しました。ここに、"$MYPROJECT/site_scons/site_tools/tangle.py" があります。
このツールは、nw ファイルから cpp ファイルを生成します。
しかし、私が次のようなことをすると
依存関係の輪に入ります。SCons は、エラー メッセージを検出して中止します。
やっている...
... ツールは、nw ファイルからの cpp ファイルの生成を停止します。(Cpp ターゲットが削除されました)
リテラルプログラミングにsconsを使用する有効な方法を知っていますか?
読んでくれてありがとう。
レナード
r - 文芸的なプログラミングでテスト駆動開発を行う方法はありますか?
私は R で最初の単体テストを行うことを学んでおり、短い研究レポートを簡単に配信できるように R Markdown ファイルにコードを記述しています。同時に、これらのファイルで使用する関数をテストして、結果が正常であることを確認したいと思います。
ここに問題があります。R Markdown ファイルは、RUnit テスト ハーネスではなく、HTML ウィーバーに入れることを意図しています。関数をテスト コードにロードする場合、いくつかの選択肢があります。
- Markdown ファイルからコード チャンクをコピーして貼り付けます。これにより、Markdown ドキュメント内のコードがテスト対象のコードから分離されます。
- テスト コードを Markdown ファイル内に配置すると、レポートがわかりにくくなります (おそらく、最終的には許容できるでしょう)。
- コードを記述し、最初にテストしてから、ライブラリとして Markdown コードに含めます。これにより、レポートの本文にコードを含めるという有益な特徴が取り除かれます。
これらの各アプローチの欠点を回避する、より賢明な方法はありますか?