搏击的终极解读是攻和守之道,程序设计的终极解读是变与不变。
了解截拳道的人都知道,截拳道的哲学思想,来源于阴阳学说,李小龙给截拳道的终结定义就是:
“以无法为有法,以无限为有限。”
可是这样两句话,我们如何来理解呢?说下我的理解吧。
无和有,本是对立,所谓以无法为有法,就是法无定法,我们都知道,在搏斗的领域里,总要有一个对手,和自己进行对立,如果我们把自己定为无,而对方为有,这里的无法为有法, 就是自己根据对方的行动来行动,就如同毛爷爷说的:敌进我退,敌退我打。思想是一致的,关键不在我,而在对方。李小龙在自己的《截拳道之道》还有一段顿悟的记录,是关于水的,如果你把水当作你的对手,你是无法战胜它的,因为它是根据你的行动,而变化着自己的形态,来消解你的攻击的,所以你无法战胜它,由此李小龙发展出了截拳道的思想,就是要像水一样,根据对手的进攻,来进攻对手。
确立了这样一个思想,就可以来衡量各种搏击技术,符合则留下,不符合则剔除,所以截拳道不设定任何的套路,没有套路,方可用任何套路,没有门派,才可以博采众长。
这和写代码有什么关系呢?
我们可以把截拳道的思想,应用到程序之中,生活之中,学习之中。
程序之中,变化就是对手,我们学习各种语言,各种框架,各种模式,最后写出来的代码还是达不到我们的要求, 在面对新需求的时候,依然无法应付自如,为何?因为我们学了这些,但是却不知道这些东西因何而来,又因何而去,茫茫然,不知所谓,而这所有的技术,和半成品,无非都在解决一个问题,就是变化的问题,怎么应对变化,又如何封装不变,以往的学习方式,我们都在拼命的掌握这些东西,其实就是靠记忆,然后在不该使用的地方使用了,在不必使用的地方使用了,最后弄巧成拙,项目并没有更加的健壮,而是更脆弱,这就如同我们学习了许多的套路,却只学会了套路,在对敌的时候,还是被瞬间击垮,怎么办?
截拳道告诉了我:剔除华而不实的招式和套路,直达本质。
而程序的本质又是什么呢?前面已经说过了,就是变化。用变化来看程序,用变化来看需求,用变化来衡量各种技术,如果一来,我们只需要知晓,变当如何,不变又当如何,一切以此训练,便可忘却什么框架,什么模式。而变化的处理方式,翻来覆去,只有那么几种,
抽象:接口,抽象类... 而抽象什么呢?那些东西需要抽象呢?类是对现实的抽象,抽象类和接口是对类的抽象,那抽象的抽象又是什么呢?是对抽象的概念进行更高一层次的提炼。
封装:抽象是为了封装。所谓只有经过提炼分类,才能进行归类存放。由此,我们可以把封装看成是对抽象的概念的封装,我们抽象出来了概念,而想让概念保存完整不被外界所干扰,那我们就要通过一些手段,隔离起来,这些手段就是封装的手段。
抽象和封装就应该是一个硬币的两面,是不断迭代,不断演化的对立方,抽象应对变化,而封装应该变化的另一面(就是稳定不变)。
程序之中,很多人只是知道实现,却不知道如何更加优雅的实现,只知去模仿,而不知如何升华,而截拳道,给了我们另外的一条道路:
1、确定终极问题。
2、解决之。
因为不所以
http://www.jianshu.com/p/81d42d88e01f