《人月神话》笔记:削足适履

本章谈及“程序的开销和规模控制”。

程序的开销(此处是指运行开销吧?),包括两个方面:运行时间,运行时所占据的空间。

程序的内存开销多少合宜呢?“应该从整体上来进行评估。”也就是同时考虑硬件开销+软件开销。

作者对规模控制的看法:
“对项目经理而言,规模控制既是技术工作的一部分,也是管理工作的一部分。他必须研究用户和他们的应用,以设置将开发系统的规模。接着,把这些系统划分为若干部分,并设定每个部分的规模目标。由于规模-速度权衡方案的结果在很大的范围内变化,规模目标的设置是一件颇具技巧的事情,需要对每个可用方案有深刻的了解。聪明的项目经理还会给自己预留一些空间,在工作推行时分配。”

作者总结了“OS/360项目”在规模控制方面的教训:
    ● 和制定驻留空间预算一样,应该制定总体规模的预算;和制定规模预算一样,应该制定后台存储访问的预算。
    ● 在指明模块有多大的同时,确切定义模块的功能。
    ● 在整个实现的过程期间,系统结构师必须保持持续的警觉,确保连贯的系统完整性。培养开发人员从系统整体出发、面向用户的态度是软件编程管理人员最重要的职能。

规模控制的技能
    ● 用功能交换尺寸。为用户保留多少(功能的)选择?
    ● 考虑空间-时间的折中。对于给定的功能,空间越多(当然开销也更高^_^),速度越快。

项目经理可以做两件事来帮助他的团队取得良好的空间-时间折中。
(1)一是确保他们在编程技能上得到培训,而不仅仅是依赖他们自己掌握的知识和先前的经验。
(2)认识到编程需要技术积累,需要开发很多公共单元构件。

最后,作者提到一个非常重要的观点“ 数据的表现形式是编程的根本!精炼、充分和快速的程序来自于程序员精湛的技艺。技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。
    ● 这种战略性的突破,有时是一种新的算法,如快速傅里叶变换,或者是讲比较算法的复杂度从n2(注:2是指数,即:n的2次方)降低到nlogn(注:n是真数)。
    ● 更普遍的是,战略上突破常来自数据或表的重新表达——这是程序的核心所在。
“由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣扎出来,回顾、分析实际情况,仔细思考程序的数据,最终获得非常好的结果。实际上,数据的表现形式是编程的根本(之一^_^)。”

你可能感兴趣的:(我的书柜——闭着眼睛读书,尊同求异)