Chinaunix首页 | 论坛 | 博客
  • 博客访问: 641058
  • 博文数量: 54
  • 博客积分: 3812
  • 博客等级: 上校
  • 技术积分: 992
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-16 20:53
文章分类

全部博文(54)

文章存档

2010年(10)

2009年(24)

2008年(20)

分类: LINUX

2009-03-16 10:46:08

    正如Brian Kernighan曾经说过的:“计算机编程的本质就是控制复杂度”。排错占用了大部分的开发时间,弄出一个拿得出手的系统,通常与其说出自才华横溢的设计成果,还不如说是跌跌撞撞的结果。

    汇编语言、编译语言、流程图、过程化编程、结构化编程、所谓的人工智能、第四代编程语言、面向对象、以及软件开发的方法论,不计其数的解决之道被抛售者吹得神乎其神。但实际上这些用处都不大,原因恰恰在于它们“成功”地将程序的复杂度提升到了人脑几乎不能处理的地步。就像Fred Brooks的一句名言:没有万能药。

    要编译复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度---用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至于牵动全身。

阅读(2228) | 评论(1) | 转发(0) |
0

上一篇:perl文件测试符

下一篇:数组归并

给主人留下些什么吧!~~

cuichaox2009-03-18 08:54:44

“结构化”,“面向对象”这些设计方法,本质都是“分割并征服”,都是划分“模块”(对象可理解为更好的模块)。模块这个词,不就是自顶向下结构化程序设计的概念? Rule of Modularity: Write simple parts connected by clean interface 和其实统一的,不是矛盾的。