简单性是思考后的简单性

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

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

 

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

 

  在前面曾经写过一篇关于面向过程和面向对象的编程感受,提到,如果非常直接过程式地编程,那么确实很直接,可以很快地解决问题,但这里面,如果您不是大牛的话,看到的简单性往往是表象和偷懒的,并不稳定和适应变化。
 
  只有复杂思考后的简单性,例如牛顿力学中的三大定律、欧式几何中的几条公理,在它们所构建出来的的系统中,都是这种简单性不断地出现、组合和应用,这才是真正的简单性!

  

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

 

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

 

  这才是,Unix哲学中keep it simple,keep it stupid的真谛,简单性是思考后的简单性,而不是不假思索的“简单性”,不假思索的简单性很多时候带有程序员的惰性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值