vc7的编译器cl.exe只有84k,让人难以置信,即使那些大师级程序员们的水平再高,如此复杂的编译器也不可能被压缩到这么大点儿,我用strings看了一下里面的字符串,也没有调用几个函数,分明是一个普通的小程序,这增加了我的疑虑,东翻西看,还真找到了原因。

原来vc7的主要实现都放在了几个dll文件里,cl.exe只是简单的提供一个胶合罢了。bin文件夹下有三个dll文件,c1.dll是C编译器前端,大致有912k,c1xx.dll是C++编译器的前端,2.1M大小,而另外还有一个c2.dll的文件,实现了编译器的后端,有1.78M,前两个估计负责词法语法的分析和中间代码的生成,而后端的c2就是代码的优化和机器代码的输出了。从vc7的头文件里可以看出来它还支持其他的一些cpu,如此只需简单的在后端代码生成部分换一个实现就行了,呵呵,整体结构挺清晰~~~

把C程序写好不容易,C++用习惯之后再来看C,感触颇多,oop并不是C++的特权,重要的是,清晰的结构和设计,c同样可以实现oop,程序的思想存在于programmer的心中。优美的程序是在历尽风霜,对programming的概念和本质深刻认识和理解之后的人的手里写出来的。

路漫漫其修远兮,吾将上下而求索......

昨天花了一个晚上实现了MD5算法,参考了Ronald Rivest的实现。

最近一直觉得自己写程序上了一个档次,不免飘飘然,但昨天让我意识到自己还差很多,代码看起来略显丑陋,跟unix下那些优雅的源代码没办法比。程序员应该一直抱着谦虚地心态,学无止境。

学习研究,是一个不断进步的过程,得到的东西越多,随之产生的未知也跟着增加,任何时候都不能满足,超越别人之后还要不断超越自己,科学不是为了跟别人竞争而研究的,是为了探索和兴趣,就像牛顿同学所说的,“我只是一个在海边爱玩耍的孩子,偶尔为发现一两个漂亮的石子而雀跃不已”,能力越强应该越懂得谦虚,人一生就是不停的为自己的兴趣而努力,不该有丝毫懈怠。还是孔老先生那句话,生无所息。