【发布时间】:2011-11-11 09:04:02
【问题描述】:
序言
Lispers 声称相对于更多“主流”语言的优势之一是宏语言实际上是图灵完备的(我不记得这是 On Lisp 中的 Paul Graham 还是它是 Land Of Lisp)1 中的 Conrad Barski,至少在外人看来,这似乎是正确的——C/C++ 中的预处理器指令似乎并不图灵完备(老实说,它们更像是一种注释语法)。
现在...问题
- 这是一个准确的评估吗?只涉足 C 语言,这让我觉得这是 Lispers 过分热心的另一点
- 是否有值得注意的图灵完备宏语言(用于 C/C++)?
- 是否有任何正在进行中或失败的尝试可能值得在未来寻找?
- 我听说 Python 现在可以作为编译 C/C++ 的主干(暗示 Python 可以用来编写宏),但我还没有看到证实这一点。是真的吗?
(我不会问诸如“什么是最好的......”之类的意见问题)
1.顺便说一句,这两本书都非常好,只是说'
【问题讨论】:
-
(您可能希望暂停一分钟来考虑一下 Lisper 立场的幽默——Lisp 来自 Church/McCarthy 学派,但它正在谈论图灵完备性(这并不是说两者是互斥的!只是起源描绘了一个跨标准。))
-
“宏语言”是什么意思? C 和 C++ 中唯一的宏是
#define宏和模板。模板是图灵完备的,#define宏不是。如果您只是在谈论代码生成,那么显然,您可以从以任何语言编写的应用程序生成 C/C++ 代码。 -
C++ 模板已经完成。它们真的很难使用,并且无法像 lisp 可以操作 lisp 代码一样创建和操作代码。
-
“又一个 Lispers 过于热心的地方” 然而 另一个 笼统的概括。 C++ 程序员总是进行全面概括。
-
在将自己喜欢的语言与另一种语言进行比较时,他们不会是第一个“忘记”某些事实的人。但是在你提出指控之前,你可能想检查他们是否真的在谈论 C++ 而不是明确地谈论预处理器。另外,我很确定重点不是图灵完整性而是homoiconicity,至少通常是当这个话题出现时......
标签: c++ c compiler-construction macros