int i与共产主义有啥关系?

没有关系?那说明你coding还没到境界,coding就是生活,从coding中能体验到生活,从生活中又可以悟出coding,这才叫境界。

看看大侠陈榕榕怎么说,email节选:

From: xxx

〉请大家定义循环变量时尽量在函数前定义,因为类似这样的定义:
〉for (int i = 0; i < 10; i++) …
〉以于i变量的作用域,gnu编译器认为是for语句里,msvc认为是直到函数末尾。(msvc好像不太对)
〉所以建议抽出来,放到函数最前面单独定义。

C++的发展历史上,1983年,C++曾经是一个翻译器,就像CAR编译器曾经是一个翻译器。C++翻译成C,然后用C编译器编译,发表的文章是“C++ as a Better C”。参数声明在引用之前,不一定在函数最前面,作用域一直延续到最后。翻译的时候把这些定义提到前面去。for()里面的int i也同样处理了,为了方便吧。Bell实验室的一篇学术文章,没把工程的“干净”太放在心上。谁成想,C++的成功一发不可收。以后,向前兼容就成了问题,原来的C++程序必须要跑。所以才有了看起来很傻的结果。

按照ANSI C++标准,GNU不对,MSVC是对的。最早Stroustrup就是这么定的,即i的作用一直到最后,这样做引起过非常大的争议。GNU都是些“强人”,不把规范放在眼里,也没有尊重作者的意思,按照“更合理”的感觉做出了以上决定。

完美只是暂时的,遗憾将是永恒的。年轻人追求新潮,过来人只是笑一笑,就算认可了。这种雕虫小技,不改也罢,下次设计新语言再改不迟(比如设计JAVA)。可这帮人发明不了JAVA,以为能改“i”的scope就挺有成就感了。耍孩子脾气。

GCD进城,把北京四合院,城墙都拆了。认为“楼上楼下,电灯电话”就是共产主义。现在才知道那时候多无知,硬把几千年的历史毁了,现在才开始反思。

不学历史,如何理解进步?GNU运动的年轻人啊,能跟中国GCD学到不少东西,包括对“自由”和“雷锋”的理解。