作为成本的程序空间
规模本身不是坏事,但不必要的规模是不可取的
规模控制
对项目经理而言,规模控制既是技术工作的一部分,也是管理工作的一部分。他必须研究用户和他们的应用,以设置将开发系统的规模。
空间技能
项目经理可以做两件事来帮助他的团队取得良好的空间-时间折衷。一是确保他们在编程技能上得到培训,而不仅仅是依赖他们自己掌握的知识和先前的经验。特别是使用新语言或者新机器时,培训显得尤其重要。熟练使用往往需要快速的学习和经验的广泛共享,也许它应该伴随特别的新技术奖励或者表扬。
另外一种方法是认识到编程需要技术积累,需要开发很多公共单元构件。每个项目要有能用于队列、搜索和排序的例程或者宏库。对于每项功能,库至少应该有两个程序实现:运行速度较快和短小精炼的。上述的公共库开发是一件重要的实现工作,它可以与系统设计工作并行进行
数据的表现形式是编程的根本
创造出自精湛的技艺,精炼、充分和快速的程序也是如此。技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。这种战略上突破有时是一种新的算法,如快速傅立叶变换,或者是将比较算法的复杂度从 n2
降低到 n log n。
很容易就能找到重新表达所带来好处的例子。我记得有一个年轻人承担了为 IBM650 开发精细的控制台解释器的任务。他发现用户交互得很慢,并且空间很昂贵。于是,他编写了一个解释器的解释器,使得最后程序所占的空间减少到不可思议的程度。Digitek 小而优雅的 Fortran 编译器使用了非常密集的、专业化的代码来表达自己,以至于不再需要外部存储。对这种表达方式解码会损失一些时间,但由于避免了输入-输出,反而得到了十倍的补偿。(Brooks 和 Iverson 第六章结尾的练习以及 Knuth 的练习 2--自动数据处理1包含了许多类似的例子。)
由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣脱出来,回顾、分析实际情况,仔细思考程序的数据,最终获得非常好的结果。实际上,数据的表现形式是编程的根本
- 本文链接: https://halo.cjh.kim/archives/人月神话10-削足适履
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!