-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
对元编程的解释的一个意见 #4
Comments
如果是用脚本做代码生成的话,那么脚本和生成的代码之间也可以看做是元编程的关系。所以我特意在此使用了“运行”一词,而不是编译。正如C++编译器可以看作是模板的解释器一样。不过因为容易有这样的误解,我会再次考虑这里的行文,或加以注解。 |
关于元编程的解释远不如维基清楚准确——元编程的外延远不只是“代码生成”。而且之前的引文太长了反而不容易找到重点,建议把定义提前。 |
多谢FrankHB的意见。只是我文中并没有说元编程的外延就是“代码生成”。 |
是没有直接说,所以和某些不当的翻译不同,可能只是不容易搞明白而不至于构成误导(一般有疑问的同学会自己另外搜索对照)。但是,大段文字都直接讲侧重于代码生成的问题和应用,所以仍然容易误会。 好吧,确实 TMP 主要就是折腾这类问题,但正因为接下来不会重点讲其它种类的元编程,这里就更有必要先提到全面一点的其它应用了。特别地,对 C/C++ ,被深入研究过的至少还有宏元编程(如 Boost.Preprocessor 和 OrderPP)——即便和 TMP 类似(元程序求值后不可修改)于是重点仍然是“生成代码”。(虽然上文" C 中的宏"已经被和模板比较了,但仍然适合在之后再扩展一些相关内容。) 当然也不是说,上面一大段里都没有提到关键。比如:
这里起码澄清了“模板元编程”应该在“模板”后面断开,这是个正确的入门姿势——我可是见过有写书的直接发明“模板元”概念的……于是这种程度的强调还是有必要的。 |
好的,这里以后应该会重新写,我也准备了一个例子讲元编程。 |
2.1节对元编程的解释中,"用更好理解的说法,元编程意味着你撰写一段程序A,程序A会运行后生成另外一个程序B,程序B才是真正实现功能的程序。",其中“运行”一词是否改为"编译"更恰当?
The text was updated successfully, but these errors were encountered: