从易经中看软件开发之道

       《易经》是阐述天地世间关于万象变化的古老经典,是博大精深的辩证法哲学书。

       老祖宗留下的东西,保罗万象,自然不会漏掉软件开发这个行当的。

       从软件开发者角度去看易经,其实就是一个高层级的软件架构。

一、从“易”说起

       “易”字,从字行上看,上为日下为月,表示日月变化,专业点讲,是阴阳两级变化:阳极为阴、阴极为阳。万事万物相互转化,互为基础。这就是下面的阴阳图的意涵。整个易经讲的就是变化,从日月之变化,引申到阴阳之变化,再引申到万物之变化,封装变化,然后通过极其隐晦的语言封装变化,这样做的好处就是无论谁,都可以对现实世界的变化做出自己的解读。

二、从阴阳八卦看设计模式

       对于设计模式,初学软件开发和初学易经,应该有同样困惑,干嘛弄这些幺蛾子,直接点不好吗p>

       卦象只是对某种现象的总结,并不指定场合,这就是易经的高明之处。也就是软件中的接口类(虚类),易经只根据 一些隐含的寓意去规范卦象的名称和用途,怎么实现就是你的事了。所以说对卦象的解释(对虚类的实现)就五花八门,各论其道了。

       例如,街头算命的人就可以使用易经,去预测一些事情;其实易经只是算命先生的一个噱头,可以增加某种仪式感,让人可以故弄玄虚。正式这些相互术士把 称帝王之学的《易经》念歪了,导致很多人以为易经就是街头算命用的。算命中真正的东西还是算命先生的学识、口辩及情感的控制能力。

       算命的就不说了,但《易经》确认是用来算卦的,算卦又是干什么的呢来做决策的,并且是重大决策;小决策中《易经》似乎也派不上用场。

        如何做决策呢,可以想想这样一个情形:

        你是公司老板,面前有产品A和产品B,应该如何生产和投放市场不对或投放市场顺序不 对,有可能让公司陷入困境,这就需要作出决策。这种决策实际上非常难。当实在无法抉择的时候,该怎么办候《易经》就可以派上用场了。

       先停下来,喝杯咖啡,拿出三个硬币,抛两次算一卦,突然灵光一现,突然作出了抉择,好吧,就这么定了。

       其实这才是算卦真正的用途,是在困境中用来提供灵感的,不是用来搞什么预测的。

       据说当年毛主席在困境中也用《易经》算卦来着(具体史实不可考),倒也是正当其用啊。

       在古代在军事用途上,《易经》的升级版本叫《奇门遁甲》,汉代张良先生的大作,里面各种玄乎,但作用无外乎是给行军打仗的将军做决策用的,比如那天出征、在那扎营、在那布阵、如何出击等。关乎很多人的生死,不可不慎重,将军们的决策压力其实很大的,没个超脱局势、激发灵感、辅助决策的手办还真不行。在那些年代,《奇门遁甲》确实是让人思想跳出三界外的不二法宝,其中不乏各种怪力乱神的传说,那都是瞎扯,现代人学那个基本没用。

       回到软件行业,前辈们根据编程实践,整理出了23条设计模式,形式上讲,和《易经》的64卦是一个意思,都是对特定情况下的行为和结果做的总结,并且不限制应用场合。

       这里既然把设计模式和易经相提并论,就必须说下学习顺序的问题。

       和学易经一样,直接去看那些卦象/UML图和玄乎乎的文字,效果真的很差。需要在实际实践中去回顾总结,则效果要好的多,才会真正的理解。

       在实际的应用中,没学过设计模式,不等于没用过设计模式。很多时候都是遇到一个问题的时候,自己那么做了,回过头去看设计模式,原来我用的就是这个模式,就会很容易记住。比如遇到很多个算法分支,自然会想到把每个算法分支封装到一个类里,再做个公共的父类,使用switch case语句做分支选择,不管你实际是怎么实现的,这就是策略模式了。

       记得有个虚工厂模式,看到时候觉得莫名其妙。直到一个项目把架构层和应用层严格分开,并且还允许应用层修改/替换底层算法的时候,发现最终的实现方式恰恰就是虚工厂模式。

       当然,易经中的模式也是这样。当一个人大红大紫之后,突然发现一蹶不振,没落了,如果看看易经,也许会悔过,一定会对乾卦的卦象中,飞龙在天之后的亢龙有悔有很深的理解。

三、从六十四卦看软件架构

       为什么要看易经六十四卦,不看可不可以么要做软件架构,不做可不可以p>

       都可以!没有什么是必须的。

       刚接触软件架构,我们应该都有这样的疑问,为什么要做架构,把简单的事情弄复杂bsp;直接new对象不可以吗,弄一个类封装起来再new是几个意思拍桌子决策不好吗,还用易经,看把你能耐的!

       为什么要把简单的事情搞复杂像成了一个哲学问题,如果直接用目光短浅回答,会伤人自尊。

       往深了想,这就是生活。我们不能只是简简单单的为了今天,我们要为更好的明天活着。

       简单的事情弄复杂,大致有三个原因:

       1.能力不足,找不着简单的解决办法。

       2.为了增加仪式感,比如婚丧嫁娶。

       3.为了给将来发展变化留有解决余地,比如设计软件架构      。

       易经把阴阳之变弄的这么复杂,非常难懂,但2000年了历久弥新,依然没有过时。

       软件架构设计的目的也是封装变化,为了应对软件未来扩展升级的需要。如果软件开发只需要应对目前的功能,完全没有将来升级的需要,设计软件架构的复杂性则完全是给自己找麻烦。

       所以,易经描述、封装万事万物之变化,架构描述、封装应用需求之变化,他们是一致的。

       易经中的六十四卦,就是六十四个高级接口类,里面的各个“爻”描述了这个接口的基本功能,是非常抽象的,至于如何实现则是各位看官的事。这就出现了对易经有许许多多的解读的事儿,那就是对易经这个架构不同的实现而已。

       一个好的架构应该是在很高的层次上进行抽象,一个模块就是一个卦象,要封装/描述尽可能多的变化,并且可以实现为不同的应用框架。

       所以,老祖宗留下的东西,隔行不隔理,想想看,还是挺好用的。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月13日
下一篇 2020年6月13日

相关推荐