分类: LINUX
2009-03-16 10:46:08
正如Brian Kernighan曾经说过的:“计算机编程的本质就是控制复杂度”。排错占用了大部分的开发时间,弄出一个拿得出手的系统,通常与其说出自才华横溢的设计成果,还不如说是跌跌撞撞的结果。
汇编语言、编译语言、流程图、过程化编程、结构化编程、所谓的人工智能、第四代编程语言、面向对象、以及软件开发的方法论,不计其数的解决之道被抛售者吹得神乎其神。但实际上这些用处都不大,原因恰恰在于它们“成功”地将程序的复杂度提升到了人脑几乎不能处理的地步。就像Fred Brooks的一句名言:没有万能药。
要编译复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度---用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至于牵动全身。