问题标签 [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 在公司中的使用受到限制。例如,编程 literate 的理想方式是使用文字标记编写一个段落,然后插入一个带有实现的子段落。但我似乎找不到任何用于 VS200x 执行 LP 的好工具。
理想情况下,这样的工具看起来就像 Word 2007,但集成到 IDE 中。当编码人员将光标设置在代码段上时,它将具有我们现在在 IDE 中提供的所有功能。
什么是 LP 的好工具,尤其是 .NET 和 VS200x?
methodology - 扩展文学编程?
问候。我现在一直在看文学编程,我确实喜欢它背后的想法:你基本上写了一篇关于你的代码的小论文,并写下尽可能多的设计决策,代码可能围绕模块,内部工作由设计决策、潜在扩展产生的模块、假设和结论,所有这些都可以使用 tex 以一种很好的方式写下来。当然,第一点:它是文档。它必须保持最新,但这不应该那么糟糕,因为你的改变应该有一个理由,你可以把它写下来。
但是,文学编程如何在更大程度上扩展?总的来说,文学编程仍然只是文本。当然,文本是人类可读的,但仍然是文本,因此很难遵循大型系统。例如,我修改了编译器的大部分以使用 >> 和一些魔法将编译步骤链接在一起,因为一些 "x.register_follower(y); y.register_follower(z); y.register_follower(a);... " 变得非常笨拙,将其更改为 x >> y >> z >> a 使它变得更好一些,即使这也处于临界点。
那么,文学编程如何扩展到更大的系统?有人尝试这样做吗?
我的想法是使用 LP 来指定使用事件流相互通信的组件,并使用 graphviz 的子集将所有这些链接在一起。这将是 LP 的一个相当自然的扩展,因为您可以从网络中提取文档——数据流图——并且还可以很好地从中生成代码。你怎么看呢?
——特萨。
bug-tracking - 在哪里可以找到 TeX 的错误日志图?
在 Donald Knuth 的Literate Programming中,如果我没记错的话,有一张图表显示了 TeX 的错误数量随时间的演变。该图在过去十年左右一直保持平稳,这表明 TeX 现在可能没有错误。
我想用这张图来说明错误跟踪软件的重要性。它可以从某个地方下载吗?
latex - PStricks 和 TikZ 如何比较易于学习和 API 设计质量?
我的团队在我们的大部分源代码中都使用了文学编程——这意味着内部文档是使用 LaTeX 编写的。我们一直在使用PStricks来绘制系统的精美技术图,但最近被推荐使用TikZ。我收集了这些信息:
- TikZ/PGF 是新的和维护的;PStricks 在没有维护者的情况下运行了很长时间,但在过去几年中得到了一些维护。
- TikZ 适用于许多后端,包括(对于那些关心的人)
pdftex
。PStricks 仅适用于dvips
. - PStricks 比 TikZ 更强大,更有表现力。在紧急情况下,您甚至拥有 PostScript 的全部功能。
- PStricks 有一个重要的生态系统,即构建在它之上的额外包;TikZ 太新了,没有很多这样的东西。
- TikZ 声称在设计时“考虑到了 PStricks 的缺点”。作者没有具体说明哪些缺点。
我对两个问题的答案感兴趣。如果您愿意,请随时为每个问题发布一个答案:
这两种工具的学习曲线如何?(我认为 PStricks 有一个陡峭的学习曲线;关于 TikZ 我不了解。)
被视为编程 API,这两个包中的一个包的设计是否明显优于另一个包?如果是这样,哪个设计更好,为什么?(它有什么特性让你认为它更好?)
为了提出一个令人信服的论点,为什么一种 API 比另一种更好,您可能需要借助示例。
java - 帮助以更好的方式从 Java 中的字符串中解析数字
我有一个包含数字和字母的字符串。我希望将字符串拆分为连续的数字块和连续的字母块。
考虑字符串“34A312O5M444123A”。
我想输出:[“34”,“A”,“312”,“O”,“5”,“M”,“444123”,“A”]
我有有效的代码,看起来像:
我考虑将 str 拆分两次以获得一个包含所有数字块的数组和一个包含所有字母块的数组。然后合并结果。我回避了这一点,因为它会损害可读性。
我故意避免使用正则表达式模式来解决这个问题,因为我发现正则表达式模式是可读性的主要障碍。
- 调试器不能很好地处理它们。
- 它们打断了阅读源代码的人的流程。
- 加班正则表达式有机地成长并成为怪物。
- 它们非常不直观。
我的问题是:
- 如何提高上述代码的可读性?
- 有一个更好的方法吗?一个优雅地解决这个问题的 Util 类。
- 您在使用正则表达式和编写类似于我上面所写内容的代码之间划清界限?
- 您如何提高正则表达式的可读性/可维护性?
c++ - 如何管理特殊情况和启发式
我经常有基于特定明确算法的代码。这得到了很好的评论,看起来很合适。对于大多数数据集,该算法效果很好。
但是随后添加了边缘情况、特殊情况、启发式方法来解决特定数据集的特定问题。随着特例越来越多,评论也越来越模糊。我害怕在一年左右的时间里回头查看这段代码,并试图记住为什么要添加每个特定的特殊情况或启发式。
有时我希望有一种方法可以在源代码中嵌入或链接图形,所以我可以有效地说,“在这个数据集的图表中,这里的这个特殊功能导致例程错误地触发,所以这就是为什么这个添加了代码”。
处理这种情况的最佳实践是什么?
似乎总是需要特殊情况来处理这些不寻常/边缘情况。如何管理它们以保持代码的相对可读性和可理解性?
考虑一个处理照片特征识别的示例(不完全是我正在研究的内容,但类比似乎很恰当)。当我发现通用算法失败并且需要特殊情况的特定图片时,我会尽我所能在评论中记录该信息,(或如下面的建议,描述性函数名称)。但通常缺少的是指向显示相关行为的特定数据文件的永久链接。虽然我的评论应该描述该问题,并且可能会说“请参阅文件 foo.jp 以获取此行为的示例”,但此文件永远不会在源代码树中,并且很容易丢失。
在这种情况下,人们是否将数据文件添加到源树以供参考?
literate-programming - 在 Windows 中读取 CWEB 格式代码的最佳方法是什么?
Donald Knuth在他的页面上有大量程序可供阅读。但它们大多采用“奇怪”的 CWEB 格式......
使它们在 Windows 中具有适当可读性的最佳方法是什么?
c++ - 文学编码与。std::pair,解决方案?
作为大多数程序员,我钦佩并尝试遵循 Litererate 编程的原则,但在 C++ 中,我经常发现自己使用std::pair
, 来完成大量的常见任务。但是std::pair
,恕我直言,文学编程的邪恶敌人......
我的意思是,当我回到一两天前写的代码时,我看到了一个std::pair
(通常作为迭代器)的操作,我想知道“ iter->first 和 iter->second 是什么意思? ? ”。
我猜其他人在查看他们的std::pair
代码时也会有同样的疑问,所以我想知道,有没有人想出一些好的解决方案来恢复使用时的读写能力std::pair
?
scheme - 文学编程的直觉动机?
因此,我使用scribble/lp模块编写了我的第一个使用 plt-scheme 的识字程序:
当然,那里没有什么用处。现在我有点想知道为什么我不使用简单的注释,而不是文字编程结构。欢迎任何意见。如果有人可能有更多的曝光/经验,那就太好了。用它可能更直观地解释有据可查的代码和使用文学编程结构编写的代码之间的差异。