methodology - 扩展识字编程?

标签 methodology literate-programming

问候。 我现在一直在研究文学编程,我确实喜欢它背后的想法:你基本上写了一篇关于你的代码的小论文,并写下了尽可能多的设计决策、可能围绕模块的代码、模块的内部工作原理。模块、设计决策产生的假设和结论、潜在的扩展,所有这些都可以使用 tex 以一种很好的方式写下来。当然,第一点:它是文档。它必须保持最新,但这应该不会那么糟糕,因为您的更改应该有理由,并且您可以将其写下来。

但是,文学编程如何更大程度地扩展呢?总的来说,文学编程仍然只是文本。当然,非常适合人类阅读的文本,但仍然是文本,因此很难遵循大型系统。例如,我重新设计了编译器的大部分,以使用 >> 和一些魔法将编译步骤链接在一起,因为一些“x.register_follower(y); y.register_follower(z); y.register_follower(a);... “变得非常笨拙,将其更改为 x >> y >> z >> a 使它变得更好一点,尽管这也处于其临界点。

那么,文学编程如何扩展到更大的系统?有人尝试这样做吗?

我的想法是使用 LP 来指定使用事件流相互通信的组件,并使用 graphviz 的子集将所有这些组件链接在一起。这将是对 LP 的相当自然的扩展,因为您可以从网络中提取文档(数据流图),并且还可以很好地从中生成代码。你怎么看呢?

-- 特莎。

最佳答案

《基于物理的渲染》一书(pbrt.org)是我所知道的大规模读写编程的最好例子。本书实现了完整的渲染系统,书籍文本和光线追踪器代码都是从同一个“源”生成的。

在实践中,我发现仅仅使用像 Doxygen 这样的系统并真正深入挖掘和利用它的所有功能比成熟的“文学”编程更好,除了这样的东西,即教科书、教育 Material 。

关于methodology - 扩展识字编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299076/

相关文章:

racket - scribble/lp 文档中未解析的链接

sql - 如何从一个地方控制HTML表单字段的定义,表示,验证和存储?

c# - 换日更新问题

language-agnostic - TDD 对于小型项目来说是不是太过分了?

architecture - 在仍然忠于敏捷的同时,如何避免技术债务,即: avoiding violation of YAGNI and avoiding BDUF?

asp.net-mvc - 作为一个团队开发 ASP.NET MVC 应用程序?

rust - 使用 rust 和 org 模式进行文学编程

c - 如何编译 Knuth 的程序?

literate-programming - 您可以用哪些语言重新定义方法/函数本身?

haskell - 什么是合法的识字 Haskell?某处的正式语法?