关闭

老子读感

321人阅读 评论(0) 收藏 举报

<第一章>  
          <原文>  
          道可道,非常道。名可名,非常名。无名天地之始;有名万物之母。故常无,欲以观其妙;常有,欲以观其徼。此两者,同出而异名,同谓之玄。玄之又玄,众妙之门。  
          </原文>  
   
          <一段废话>  
          再次阅读这一章,真是又兴奋又悲哀。兴奋的是这么精辟的言论,几千年前咱们的先辈就提出来了;悲哀的是几千年后,我们却已经将其忘却。每当看到学生被一些“高深”的编程思想难住,崇拜一些国外的软件“牛人”,我想,真的应该好好读读老子了。  
   
          也许是几千年的语言变迁让阅读成为了一种困难,也许是几千年的历史变迁让思想(特别是古代经典思想)成为了一种累赘,反正现状就是没有人愿意花时间去读读几千字的《老子》,但是愿意花时间去读几千页的《Java编程思想》。但愿我这些不成熟的“读感”能多少改变这些。至少,让一部分程序员了解老子,了解中国的经典,如果程序员都熟知这些了,中国的传统文化也许还有传播下去的希望。  
   
          “读感”写作的时候用了XML风格来描述,纯属为了搞笑,呵呵,不过也许后来真会整理成XML版。  
          </一段废话>  
   
          <读感>  
          第一章其实是全书的精华所在,如果这一章深刻了解了,也就没有再读下去的必要。不过除非你悟性很高,否则不会发生这种现象。所以我的建议是,第一章要反复的读。这里暂时不解释第一句“道可道……”,从相对简单的“名”说起吧。  
   
  “无名天地之始;有名万物之母”,世界处于原始状态时,事物是没有名字的,那时候树不叫树,水不叫水,不过即使没有名字,也丝毫不影响这个世界的运转;之后具有智商但又明显智商不足的人类出现了,为了方便彼此的交流和标识这个世界,人类开始给万物取名字,比如以后竖长条的植物就叫树吧,会抓老鼠、瞄瞄叫的就叫猫吧。

    有了名字真的方便,张三想去肉铺买点鸡胸脯肉,再也不需要先学鸡叫,再指指自己的胸脯了。名字真好,但是一定要看到它的不足之处:起名其实就是在给事物归类,但这个归类很难十分的准确,比如家养的猫的不会抓老鼠,那还算不算猫呢?或者只要是竖长条的植物就是树吗?可见,这个归类是否恰当要取决于人类对于事物的认识程度和归纳能力(其实“名可名,非常名”就概括了这个情况,我们以后会论述)。  
   
  那么这个名对程序员来讲怎么理解呢?有些读者大概看出来了,这个名就是面向对象中的类嘛!类:描述了一组对象共同的行为和方法。看看,是不是这么回事儿?  
   
  就以做一个自动化办公的系统为例吧,某企业需要将自己的办公流程自动化,邀请你来做这个项目,那么你要做的第一步是什么呢?90%的人应该可以答对,就是先观察现有的手工办公系统,看它的流程,看它的结果,看它的优点和不足等等,也就是说,要进行需求分析。此时,这个系统对你来讲就处于一个无名的状态:业务的边界是模糊的,规律是隐藏的,但仍然在正常运转。  
   
  好了,经过一段时间观察你已经充分了解了这个系统(至少你自己这样觉得),接下来自然要开始我们的自动化改造了,肯定先要进行设计吧,假设我们采用面向对象的思想来设计(事实上,很少有人敢说我不用面向对象的思想,虽然他们真的敢这么做),设计类,类之间的关系,如果你相信UML的话可能还会画出用例图,类图等让人看了眼花缭乱的东西。  
   
  我们都知道,需求分析,设计是软件开发中起决定性作用的两个环节,在这两个环节中我们干了什么呢?实际上就是一个从“无名”到“有名”的过程:从最开始的一个原始系统,到我们UML图上的一堆类,是不是这样呢?这个从“无名”到“有名”的过程是怎么完成的?就像我们给事物起名字一样,方法无外乎归纳和抽象,总结抛弃事物一些无关紧要的特征,抽取共有的特征。  
   
  本章后面两句说的就是这么回事儿:“故常无,欲以观其妙;常有,欲以观其徼”。在原始的状态中,可以观察其规律,特征;然后抽象出我们的类,观察其边界,是否能够较好的体现被描述的事物。好了,这个过程老子在几千年前就已经描述过了。  
   
  是否惊奇于这个预言般的现象?实际上不用惊奇,因为现有的编程方法无非就是用计算机对现实世界做一个描述,刚开始是面向过程,后来人们觉得离现实世界太远,于是又有了面向过程,它至少比面向过程更符合我们对世界的看法,于是乎面向对象能够流行数十年。假如以后面向对象也被淘汰,那么取代它的一定是一种更贴于真实世界的思想。说白了,这是一种世界观之间的斗争。老子已于几千年前就有了这种到现在我们还觉得难以理解的世界观。  
   
  本章的最后几句更为重要,“此两者,同出而异名,同谓之玄”,无名和有名,原始和抽象,竟然是“同出”的。这一点我们需要警醒。很多情况下,在做完需求分析之后,我们会习惯把“愚蠢的”客户抛在一边,然后闭门来进行我们的设计,之后再根据设计来进行编码。这个过程实际上是将无和有完全的分开了,并不符合真实的情况。大家根据经验或想象可以知道,这种闭门造车的情况很容易出现最终的软件和客户需求不一致的情况。  
   
  “玄之又玄,众妙之门”,玄之又玄是什么意思?按照我现在的理解,对事物的认识不能看到无,也不能只看到有,要综合起来,反复进行有、无之间的转换,才能使自己的认识更贴近于事物的本源。对软件开发来讲,意味着我们要对开发过程进行迭代,反复的进行分析、设计,呵呵,聪明的读者已经看出来了,所谓的XP编程等最近流行的时髦词,已经在这一章中得到体现了。  
   
  最后总结一下:对这一章进行初步的解毒,我们至少发现了这些观点:  
   
  1,软件开发中需求分析和设计是一个从“无名”到“有名”的过程,但是这个“有”不是凭空的有,来自于对现实(至少是假象的现实)的描述。  
  2, “无名”是事物的原始状态,而“有名”取决于人的抽象,不同的人可以有不同层次的抽象,一种“无名”可以对应多种“有名”,并没有一个终极的正确答案。其实这就是“名可名,非常名”。  
  3,要想相对“准确”的从“无名”到“有名”,我们需要反复思想,进行迭带。  
          </读感>  
  </第一章> 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2940次
    • 积分:89
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档