击掌叫好

老子思想的“无为”很多人误解为“无作为”,或者被理解为“尊重自然规律”,这些都不是非常准确。

其实“无为”是一种结果,是“有为”的结果。

为实现“无为”,需要“反者道之动”等有为方法去创建一种动态平衡系统,直至形成自调节的生态系统。届时你就真正无为了。

比如,如果你发现有了正离子,那么你就制作一个“反者”负离子,那么正负离子就能相互围绕运动组成一个稳定的物体,这个物体形成后就再也无需你人为干预而一直存在。

一个软件系统从无到有开发到运行以后,如果无需程序员太多人为介入,一直运行稳定,很少Bug,这种系统实际也就实现了“无为”结果。

所以,我们常人误解“无为”以为是具体方法上“无为”,实际是目标上的“无为”,具体战术方法上,需要观察客观规律,根据时机有为介入,这种有为最终是为达到无为的结果。

当然,这种方法上有为通常应该遵循“反者道之动”的原则,而不是直接冲着目标就去了,前途是光明的,那是无为的境界,但是道路是曲折的。

但是通常我们很难在具体方法上做到“反者道之动”,比如软件出现一个运行BUG,我们通常只解决那个显式的BUG,却忽视了造成那个BUG的环境和原因,也就是只注意到“阳”,没有注意“阴”,那么BUG好像解决了,却带来了新BUG。

所以,通过老子思维的“无为”,我们又引出了显式和隐式的道理,也就是阴阳道理,显式和隐式在面向对象OO分析中经常使用到,比如我们建立领域模型,这个模型能显式被发现,其实是有其上下文Context,也就是背景等隐式因素的。

还有:我们写代码时,类和方法的名称要显式地写清楚,不能含糊其辞,这个方法功能必须是唯一,不能模棱两可,否则就产生边界影响,或称为副作用,为什么面向函数语言能受到欢迎,因为其显式突出了方法函数,first class是function。

软件设计就是把需求中隐式的规律显式地用领域模型表达出来,这样的软件系统才反映真正需求,因为抓住本质,才会随需求变化而变化。

以上,通过澄清老子思想“无为”的误解,把无为作为我们有为的一种追求和目标,在追求无为的过程中,需要不断地创新(反者实际是一种创新,就如同唱反调虽然让人讨厌,但是也会开启新思路),而且这种创新必须是观察原来事物状态以后,创新地提出反者有为,最终达到一种动态抗衡状态,左右抗衡才得“中”。

无为而无不为:要达到无为的结果,不可能没有行动的。无为而治是理想。
[该贴被banq于2012-02-18 14:59修改过]

楼主对道德经的参透出神入化了;引申的很妙啊。

最近也在拜读道德经;看来要看你写的收获会更多啊。

第2本无法下载。求更新资源。老师辛苦了。

2012-02-18 13:48 "@banq
"的内容
通过老子思维的“无为”,我们又引出了显式和隐式的道理,也就是阴阳道理,显式和隐式在面向对象OO分析中经常使用到,比如我们建立领域模型,这个模型能显式被发现,其实是有其上下文Context,也就是背景等隐式因素的。 ...

多年研究心得,有一天突然明白:老子“道德经“谈论的是显式隐式的辩证关系。

开篇“名可名非常名,道可道非常道“:名代表显式,道代表隐式之道,而显隐(explicit/implicit)是软件设计基本方法。

软件分析设计的基本方法就是:分割划定边界,然后聚焦,也就是让其显式。比如昨天看到InfoQ上一篇文章:Using the Domain Driven Design Bounded Context Concept to Shrink a Large Domain Model谈论的是DDD领域驱动设计中Bounded context使用:

通过引入有边界上下文(Bounded context),可以分割一个大的领域模型,起到 “约束”或“聚焦”作用。

回到老子道德经,老子还将这套显隐方法应用在人类社会上,做人要低调:江海低于百川,百川才能归入大海。注意“做人”词语中的“做”,应该带有显式含义,也就是让别人看到的“你”(正如你在代码中要显式声明你的想法,好让别人看到注意到你的设计想法)。

孔子更是将显式在人类社会中的战术发扬光大,提出“仁礼”等做人标准,至少你要让别人看起来“仁礼”。当然经常被只注重隐式的实在人斥为“假仁假义”。


[该贴被admin于2013-03-01 08:19修改过]