我发现像Noweb这样的工具不支持宏。 我想知道文字编程中宏的优点和缺点是什么?
答案 0 :(得分:0)
我认为通过“宏”你的意思是让LP工具像C预处理器和大多数汇编程序一样进行“宏替换”。
宏替代是“语法糖”。这是一种编写单个符号的方法,代表了许多类似的细节。因此,术语“宏”:它是“宏观编程”,写在更高的抽象层次。
这是我们在以前没有面向对象编程提供易于访问的抽象层时所做的事情。
从技术上讲,只需要使用函数调用就可以在C语言中进行抽象和宏观式编程。预处理器“宏”编程不是必需。例如,我们曾经将内联函数定义为预处理器“宏”来手动优化我们的代码。那是因为C编译器在早期没有很好地优化。
现在我们有OO编程,不需要更原始的编程语言的宏功能。
Literate Programming宏功能在非OO语言(如C和Pascal)中用于创建类似于类的功能,以及LP级别的类似继承功能。
没有必要。只需定义适当的类并使用适当的继承。
答案 1 :(得分:0)
我写了两个不同的LP工具: TCLP - 不支持宏: http://code.google.com/p/tclp amd NanoLP,具有非常灵活的宏支持: http://code.google.com/p/nano-lp
当我编写TCLP时,我对宏的想法是 - 它很糟糕,因为它破坏了程序结构,就像另一个宏系统 - 你可以像C语言中的并行宏系统一样思考它。 C宏隐藏真实代码 - 它们不是真正的函数调用,但隐藏(如占位符!)实际代码和LP宏是隐藏代码的并行方式。这是disadventeges。
但是如果你编写好的LP宏,可读性和可理解性,那么使用它们没有问题,所以我将flex宏系统(带有plaeholders,导入,变量词典......)包含在我的下一个工具中 - NanoLP。