简单性是思考后的简单性
2011-03-06 11:57
141 查看
程序员总想把程序做简单,让写出来的代码容易被人理解和维护以及在将来扩展。但是,如果对于这种简单性的认识,只是觉得简单地对照功能需求,直接很简单的去做。那么这种简单性,在我个人现在的水平和感受体会看来,是非常不值得称道的!
在维护代码的几年过程中,几次和同学讨论起与此相关的问题。在感受中总觉得编程这件事情是这样的:复杂的思考带来简单的代码,简单的思考将带来复杂的代码。
在我们的维护代码的过程中,也经常看到这样的代码现象。如果将程序编制过程中,我们追求的简单性界定为思考后的简单性,这是我所赞成的。
在前面曾经写过一篇关于面向过程和面向对象的编程感受,提到,如果非常直接过程式地编程,那么确实很直接,可以很快地解决问题,但这里面,如果您不是大牛的话,看到的简单性往往是表象和偷懒的,并不稳定和适应变化。
只有复杂思考后的简单性,例如牛顿力学中的三大定律、欧式几何中的几条公理,在它们所构建出来的的系统中,都是这种简单性不断地出现、组合和应用,这才是真正的简单性!
这种简单性呈现给你的时间,你不会觉得复杂,而且是很容易理解,但是,它的简单性不简单在于,能够在很多场景下建立自己的能力、解决相应的问题。这才是我们应该追求的简单性,以简单的东西适应很多的场景。
如果简而言之来看,就像算法一样,你能在要解决的问题领域或将来可能会出现的问题,抽象出来一些固定的算法或者原则、概念出来,特别是类似算法这样的东西,你会看到,象欧几里得的辗转相除求最大公约数的算法,它所适应的数值空间是无限的,不仅仅限于某两个固定的数。还有在冯诺依曼机器结构中,以程序存储程序执行的简单算法,解决了计算机领域所有程序的执行,无论你是网络程序还是操作系统程序、抑或数据库程序。以前自己总是很鄙视大学时代,有些人论文说提出了一个什么算法,但是,如果以算法能解决的问题数量而论,那时间的算法是令人鄙夷的,而伟大的算法,是我们所应该俯首佩服的。
这才是,Unix哲学中keep it simple,keep it stupid的真谛,简单性是思考后的简单性,而不是不假思索的“简单性”,不假思索的简单性很多时候带有程序员的惰性。
在维护代码的几年过程中,几次和同学讨论起与此相关的问题。在感受中总觉得编程这件事情是这样的:复杂的思考带来简单的代码,简单的思考将带来复杂的代码。
在我们的维护代码的过程中,也经常看到这样的代码现象。如果将程序编制过程中,我们追求的简单性界定为思考后的简单性,这是我所赞成的。
在前面曾经写过一篇关于面向过程和面向对象的编程感受,提到,如果非常直接过程式地编程,那么确实很直接,可以很快地解决问题,但这里面,如果您不是大牛的话,看到的简单性往往是表象和偷懒的,并不稳定和适应变化。
只有复杂思考后的简单性,例如牛顿力学中的三大定律、欧式几何中的几条公理,在它们所构建出来的的系统中,都是这种简单性不断地出现、组合和应用,这才是真正的简单性!
这种简单性呈现给你的时间,你不会觉得复杂,而且是很容易理解,但是,它的简单性不简单在于,能够在很多场景下建立自己的能力、解决相应的问题。这才是我们应该追求的简单性,以简单的东西适应很多的场景。
如果简而言之来看,就像算法一样,你能在要解决的问题领域或将来可能会出现的问题,抽象出来一些固定的算法或者原则、概念出来,特别是类似算法这样的东西,你会看到,象欧几里得的辗转相除求最大公约数的算法,它所适应的数值空间是无限的,不仅仅限于某两个固定的数。还有在冯诺依曼机器结构中,以程序存储程序执行的简单算法,解决了计算机领域所有程序的执行,无论你是网络程序还是操作系统程序、抑或数据库程序。以前自己总是很鄙视大学时代,有些人论文说提出了一个什么算法,但是,如果以算法能解决的问题数量而论,那时间的算法是令人鄙夷的,而伟大的算法,是我们所应该俯首佩服的。
这才是,Unix哲学中keep it simple,keep it stupid的真谛,简单性是思考后的简单性,而不是不假思索的“简单性”,不假思索的简单性很多时候带有程序员的惰性。
相关文章推荐
- 由一个简单的客户端间TCP/UDP通信程序引发的关于设计模式的思考
- 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。
- 实时性的简单思考
- 简单之美—软件开发实践者的思考—故事场景4
- JAVA学习提高之----简单克隆与深度克隆的思考
- 一个简单的html面试题思考
- MySQL读写分离-简单思考
- php各种设计模式简单实践思考
- vsftp简单学习思考
- (转载)一个微博数据库设计带来的简单思考
- 换位思考权限设计(把复杂的问题,简单化才是水平,用简单的道理解决复杂的问题)
- 深度学习与AI+思维简单课程思考3
- 微信小程序web-view的简单思考和实践
- 一个十几行简单的C程序引发的思考
- 关于逻辑回归(Logistic regression)模型的简单思考
- 前置++与后置++之一道简单的题目引发的思考
- 会计的思考(21):“简单表象,根本影响”的会计原始凭证
- 对这十来天生活的简单思考(大二暑假)
- vue axios 简单封装以及思考
- 简单逆向天猫的思考