您的位置:首页 > 其它

简单性是思考后的简单性

2011-03-06 11:57 141 查看
程序员总想把程序做简单,让写出来的代码容易被人理解和维护以及在将来扩展。但是,如果对于这种简单性的认识,只是觉得简单地对照功能需求,直接很简单的去做。那么这种简单性,在我个人现在的水平和感受体会看来,是非常不值得称道的!

在维护代码的几年过程中,几次和同学讨论起与此相关的问题。在感受中总觉得编程这件事情是这样的:复杂的思考带来简单的代码,简单的思考将带来复杂的代码。

在我们的维护代码的过程中,也经常看到这样的代码现象。如果将程序编制过程中,我们追求的简单性界定为思考后的简单性,这是我所赞成的。

在前面曾经写过一篇关于面向过程和面向对象的编程感受,提到,如果非常直接过程式地编程,那么确实很直接,可以很快地解决问题,但这里面,如果您不是大牛的话,看到的简单性往往是表象和偷懒的,并不稳定和适应变化。

只有复杂思考后的简单性,例如牛顿力学中的三大定律、欧式几何中的几条公理,在它们所构建出来的的系统中,都是这种简单性不断地出现、组合和应用,这才是真正的简单性!

这种简单性呈现给你的时间,你不会觉得复杂,而且是很容易理解,但是,它的简单性不简单在于,能够在很多场景下建立自己的能力、解决相应的问题。这才是我们应该追求的简单性,以简单的东西适应很多的场景。

如果简而言之来看,就像算法一样,你能在要解决的问题领域或将来可能会出现的问题,抽象出来一些固定的算法或者原则、概念出来,特别是类似算法这样的东西,你会看到,象欧几里得的辗转相除求最大公约数的算法,它所适应的数值空间是无限的,不仅仅限于某两个固定的数。还有在冯诺依曼机器结构中,以程序存储程序执行的简单算法,解决了计算机领域所有程序的执行,无论你是网络程序还是操作系统程序、抑或数据库程序。以前自己总是很鄙视大学时代,有些人论文说提出了一个什么算法,但是,如果以算法能解决的问题数量而论,那时间的算法是令人鄙夷的,而伟大的算法,是我们所应该俯首佩服的。

这才是,Unix哲学中keep it simple,keep it stupid的真谛,简单性是思考后的简单性,而不是不假思索的“简单性”,不假思索的简单性很多时候带有程序员的惰性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: