Skip to content
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

Open
zhcosin opened this issue Mar 6, 2014 · 5 comments
Open

对元编程的解释的一个意见 #4

zhcosin opened this issue Mar 6, 2014 · 5 comments

Comments

@zhcosin
Copy link

zhcosin commented Mar 6, 2014

2.1节对元编程的解释中,"用更好理解的说法,元编程意味着你撰写一段程序A,程序A会运行后生成另外一个程序B,程序B才是真正实现功能的程序。",其中“运行”一词是否改为"编译"更恰当?

@wuye9036
Copy link
Owner

wuye9036 commented Mar 6, 2014

如果是用脚本做代码生成的话,那么脚本和生成的代码之间也可以看做是元编程的关系。所以我特意在此使用了“运行”一词,而不是编译。正如C++编译器可以看作是模板的解释器一样。不过因为容易有这样的误解,我会再次考虑这里的行文,或加以注解。

@FrankHB
Copy link

FrankHB commented Nov 25, 2015

关于元编程的解释远不如维基清楚准确——元编程的外延远不只是“代码生成”。而且之前的引文太长了反而不容易找到重点,建议把定义提前。
题外话:反对下文的“堆栈”这种含混的用词。

@wuye9036
Copy link
Owner

多谢FrankHB的意见。只是我文中并没有说元编程的外延就是“代码生成”。

@FrankHB
Copy link

FrankHB commented Nov 26, 2015

是没有直接说,所以和某些不当的翻译不同,可能只是不容易搞明白而不至于构成误导(一般有疑问的同学会自己另外搜索对照)。但是,大段文字都直接讲侧重于代码生成的问题和应用,所以仍然容易误会。

好吧,确实 TMP 主要就是折腾这类问题,但正因为接下来不会重点讲其它种类的元编程,这里就更有必要先提到全面一点的其它应用了。特别地,对 C/C++ ,被深入研究过的至少还有宏元编程(如 Boost.PreprocessorOrderPP)——即便和 TMP 类似(元程序求值后不可修改)于是重点仍然是“生成代码”。(虽然上文" C 中的宏"已经被和模板比较了,但仍然适合在之后再扩展一些相关内容。)

当然也不是说,上面一大段里都没有提到关键。比如:

这个技术的名字,并不叫“模板”,而是叫“元编程”。

这里起码澄清了“模板元编程”应该在“模板”后面断开,这是个正确的入门姿势——我可是见过有写书的直接发明“模板元”概念的……于是这种程度的强调还是有必要的。

@wuye9036
Copy link
Owner

好的,这里以后应该会重新写,我也准备了一个例子讲元编程。
哈哈哈,你不用怀疑,我自己的概念在这里并没有出现问题。
但是写起来很困难,概念过多过少都不好。
所以我也在探索怎么写的问题。
多谢你宝贵而准确的建议。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants