程序设计与搏击之思考

搏击的终极解读是攻和守之道,程序设计的终极解读是变与不变。

了解截拳道的人都知道,截拳道的哲学思想,来源于阴阳学说,李小龙给截拳道的终结定义就是:

“以无法为有法,以无限为有限。”

可是这样两句话,我们如何来理解呢?说下我的理解吧。

无和有,本是对立,所谓以无法为有法,就是法无定法,我们都知道,在搏斗的领域里,总要有一个对手,和自己进行对立,如果我们把自己定为无,而对方为有,这里的无法为有法, 就是自己根据对方的行动来行动,就如同毛爷爷说的:敌进我退,敌退我打。思想是一致的,关键不在我,而在对方。李小龙在自己的《截拳道之道》还有一段顿悟的记录,是关于水的,如果你把水当作你的对手,你是无法战胜它的,因为它是根据你的行动,而变化着自己的形态,来消解你的攻击的,所以你无法战胜它,由此李小龙发展出了截拳道的思想,就是要像水一样,根据对手的进攻,来进攻对手。

确立了这样一个思想,就可以来衡量各种搏击技术,符合则留下,不符合则剔除,所以截拳道不设定任何的套路,没有套路,方可用任何套路,没有门派,才可以博采众长。

这和写代码有什么关系呢?

我们可以把截拳道的思想,应用到程序之中,生活之中,学习之中。

程序之中,变化就是对手,我们学习各种语言,各种框架,各种模式,最后写出来的代码还是达不到我们的要求, 在面对新需求的时候,依然无法应付自如,为何?因为我们学了这些,但是却不知道这些东西因何而来,又因何而去,茫茫然,不知所谓,而这所有的技术,和半成品,无非都在解决一个问题,就是变化的问题,怎么应对变化,又如何封装不变,以往的学习方式,我们都在拼命的掌握这些东西,其实就是靠记忆,然后在不该使用的地方使用了,在不必使用的地方使用了,最后弄巧成拙,项目并没有更加的健壮,而是更脆弱,这就如同我们学习了许多的套路,却只学会了套路,在对敌的时候,还是被瞬间击垮,怎么办?

截拳道告诉了我:剔除华而不实的招式和套路,直达本质。

而程序的本质又是什么呢?前面已经说过了,就是变化。用变化来看程序,用变化来看需求,用变化来衡量各种技术,如果一来,我们只需要知晓,变当如何,不变又当如何,一切以此训练,便可忘却什么框架,什么模式。而变化的处理方式,翻来覆去,只有那么几种,

抽象:接口,抽象类...   而抽象什么呢?那些东西需要抽象呢?类是对现实的抽象,抽象类和接口是对类的抽象,那抽象的抽象又是什么呢?是对抽象的概念进行更高一层次的提炼。

封装:抽象是为了封装。所谓只有经过提炼分类,才能进行归类存放。由此,我们可以把封装看成是对抽象的概念的封装,我们抽象出来了概念,而想让概念保存完整不被外界所干扰,那我们就要通过一些手段,隔离起来,这些手段就是封装的手段。

抽象和封装就应该是一个硬币的两面,是不断迭代,不断演化的对立方,抽象应对变化,而封装应该变化的另一面(就是稳定不变)。

程序之中,很多人只是知道实现,却不知道如何更加优雅的实现,只知去模仿,而不知如何升华,而截拳道,给了我们另外的一条道路:

1、确定终极问题。

2、解决之。

因为不所以

http://www.jianshu.com/p/81d42d88e01f

时间: 2024-10-10 07:33:05

程序设计与搏击之思考的相关文章

浅析如何学好C语言

今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了.C语言程序设计是我们的专业基础课,但是C语言本身却是一个非常强大的工具,它是到

spring (由Rod Johnson创建的一个开源框架)

你可能正在想"Spring不过是另外一个的framework".当已经有许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework? Spring是独特的,因为若干个原因: 它定位的领域是许多其他流行的framework没有的.Spring致力于提供一种方法管理你的业务对象. Spring是全面的和模块化的.Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的.因此从你的学习中,你可得到最大的价值.例如

C++教程 零基础如何学习C语言!

学习一门技术不是所想的很简单的一回事,学习C语言同样也不是一件简单的事!学好C语言,你想在短时间内学好,肯定是不可能的,但是也不需要你花个十年八年才嫩恶搞精通.今天小编就针对0基础的学员推荐给你们基本书籍以及技巧! 一.要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材.好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素.不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择. 大名鼎鼎的谭浩强教授出了一本<C语言程序设计>,据说发行量

如果是初学C语言请看完 一些成功人士的心得

转自程先的专栏     今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了. C语言程序设计是我们的专业基础课,但是C语言本身却是

怎样学好C语言,一个成功人士的心得!

今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们能够利用一个预先编写好的程序控制机器,并使之完毕我们期望它完毕的动作.建议大家在心里默念三遍他们的名字,以示敬仰.当然,假设让你们带着如今的知识回到他们的那个时代,那么就没有什么图灵奖了.C语言程序设计是我们的专业基础课,可是C语言本身却是一个非常强大的工具,它是到

java编程思想总结(三)

java编程思想总结(三) java编程思想总结是一个持续更新的系列,是本人对自己多年工作中使用到java的一个经验性总结,也是温故而知新吧,因为很多基础的东西过了这么多年,平时工作中用不到也会遗忘掉,所以看看书,上上网,查查资料,也算是记录下自己的笔记吧,过一段时间之后再来看看也是蛮不错的,也希望能帮助到正在学习的人们,本系列将要总结一下几点: 面向对象的编程思想 java的基本语法 一些有趣的框架解析 实战项目的整体思路 代码的优化以及性能调优的几种方案 整体项目的规划和视角 其它遗漏的东西

spring--百度百科

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin

C++面向对象之实现,反思与救赎

这篇博客我酝酿已久,但却迟迟未下笔,主要原因在于觉得自己目前还是难以驾驭这样宏大的命题,对我这样一个连入门级菜鸟都算不上的人而言,谈论这种话题难免会有纸上谈兵之嫌,以至于贻笑大方.但是我写技术博客主要的目的还是用记录.分享自己技术成长道路上的一些个人领悟,只要是有自己的思考,哪怕若干年后回头来看显得幼稚甚至有错误之处,也无妨嘛. 其实长久以来,说起编程我心里总是会犯怵,通俗点说叫有点虚,这并不是说我完全写不了程序,而是觉得自己对程序设计缺乏一种思考框架,就仿佛少了根主心骨.今天你让我写个Page

浅析怎样学好C语言

今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生.都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email.一部电影都是用一连串的1和0进行编码的:是他们发现了我们能够利用一个预先编写好的程序控制机器.并使之完毕我们期望它完毕的动作.建议大家在心里默念三遍他们的名字,以示敬仰. 当然,假设让你们带着如今的知识回到他们的那个时代,那么就没有什么图灵奖了. C语言程序设计是我们的专业基础课.可是C语言本身却是一个非常强大的工具,它