《人月神话》读书笔记之六
作者认为个性化工具集妨碍了而不是促进了工程的进行,因为工程中最重要的是沟通,而工具的个性化使得沟通的难度和有可能出现的差错大大增加了。因此作者认为,工程团队需要有专门的工具管理人员,管理团队中一切的通用工具。
作者并没有给出所谓“通用工具”的定义,我个人认为,通用工具就是会对编程工作的结果产生影响的工具。比如使用Windows文本编辑器和notepad++都能编辑得到相同的txt文件,那么txt编辑工具就不是通用工具。而编译器minGW和MSCV拥有不同的默认字符编码,它们对相同代码编译得到的结果可能不同,那么编译器就是通用工具。这样的通用工具确实应该相同,因为它们的不同可能会因为编译原理的细微差别导致工程无法运行或者得不到想要的结果。
在这次UI和Core对接过程中,也出现过由于minGW和mscv默认编码方式不同而导致运行结果的例子,每每出现都让人啼笑皆非。
另一点则是关于高级语言,作者认为高级语言编程能够使生产力大大提高,因此对于高级语言的态度是全面支持的。
必须要肯定的是用高级语言编程确实能够提升生产力,这在我先后接触了C->C++->Java->汇编语言后,有了非常明确的认识。但是我想说的是,底层语言仍然不可或缺,任何一种语言,最后都需要翻译成机器语言,才能被硬件所识别,我至今仍认为自己对计算机一无所知,因为我对类似C++的一条代码是如何最终变成比特流流经处理器,这样的问题完全没有概念。正因为如此,我认为没有底层语言,高级语言就是空中楼阁。
其次,底层语言执行效率毋庸置疑是更高的。CSDN上曾经有人反驳这个观点,生产高级语言的编译器能将代码进行优化,使其执行效率更高,但是实际上这是将优化过的代码和未经优化过的底层代码做比较,底层语言的代码同样也可以由经验丰富的程序员人工进行优化。达到同样的目的,且都优化到极致,高级语言的执行效率不会比底层语言更高。