设计国学,软件设计感悟

简介: 设计国学,软件设计感悟

今天谈点“高端”的东西——故弄玄虚,舞文弄墨,附弄风雅,巧言令色,云山雾罩,牵强附会……姑且名为“设计国学”,即从国学的片言只语,因某种契机的感悟,于心中不明所以而产生所谓的“道”,引入软件设计的思想体系之中。实乃游戏之作,不求体系,只谈感悟。


1



儒家:君君,臣臣,父父,子子。此为等级,架构是有等级的,谁为控制者,协调者,谁为服务者。此为儒家之礼,正名。孟子则突破礼制局限,非绝对的君君臣臣,认为政治之高位,必以德者居之。


有德之人为圣人,可为领袖,领袖之传承,需以民意。“民果归之,即天以天下与之,故荐之于天,即荐之于民也。”分布式集群之选举,即如此。天,实则为道,在软件世界,即“系统”,分布式系统之节点,即为民。


2



“巧言令色,鲜矣仁。”在设计中,就是少修饰,简约为美。


“克己复礼为仁”,讲的是设计的控制之道。


3


冯友兰论庄子,曰“故一有名言,似有所成而实则有亏也。凡一切名言区别,皆是如此”,王路解读:“我们用概念去定义的事物,必定是不能反应事物真实的。”


领域概念只能表达部分的真实,领域模型也只能表达现实世界的部分真实,更何况还有限界上下文的知识语境。


4



庄子大小之辩,可以推演为系统的大小之辩。既有统领一切的道,即为根本之设计原则,又有相对大小不同,做出的不同选择。


5


避免用人的主观来主宰物象形义的另一含义,是要我们做到“以物观物”。老子说的“以天下观天下”,庄子说的“藏天下于天下”,都是要回到未割的“全”。


方法之一,可以从无穷大的视角去看:


“视而不见,名曰夷;听之不闻,名曰希;搏之不得,名曰微。此三者不可致诘,故混而为一。其上不徼,其下不昧,绳绳兮不可名,复归于无物。是谓无状之状,无物之象,是谓惚恍。”


“道之为物,惟恍惟惚,惚兮恍兮,其中有象,恍兮惚兮,其中有物”,因此,庄子的《逍遥游》的大鹏有水击三千里,抟扶摇而上者九万里之飞。此种景象,可以想想庄子在抽离自己的视觉,以更高的视角观察击水三千里之大鹏。


“为什么中国山水画都让观者自由无碍地同时浮游在鸟瞰、腾空平视、地面平视、仰视等等角度,不锁定在单一的透视。中国山水画里的所谓透视,是不定向、不定位的透视,有时称散点透视或回游透视,前山后山、前村后村、前湾后湾都能同时看见。山下的树、半山的树、山顶上的树的枝干、树叶的大小都没有很大的变化。譬如宋人的一张《千岩万壑》里所见,我们仿佛由平地腾空升起一路看上去。这种视觉的经验,是画家不让观者偏执于一个角度和一种距离,而让他不断换位去消解视限,让几种认知的变化可以同时交汇在观者的感受网中。”


道家对全的观察视角,可以视为自顶向下的设计理念。


6


设计中,对变化的抽象与分离,实为名家“离坚白”的思想。名家认为:单独存在一种东西叫“坚”,因为“坚”不仅是石头的性质,还是铁等一切坚硬事物的性质。既然“坚”并不总是依附于石头,那就应该可以离开石头、铁等物质独立存在。“白”也一样。


7



中国古代星占学有一种说法曰:五星出东方利中国。这里的“五星”,是先秦所谓的太白、岁星、辰星、荧惑和镇星。秦汉以后,由于五行说的普及,它们又被称为金星、木星、水星、火星和土星。


王力先生讲到古代天文时,称这五星齐出为五星聚合。并给出星宿之间聚合的量化指标确定为小于∠30度。


甄别DDD聚合时,实际上是按照实体之间的耦合度来界定聚合边界的。于是,我突发奇想,可将星宿聚合之度数引入到聚合中来,以度数阐明耦合之强弱,也是一种趣味。


8



郑玄释《易》:“《易》一名而含三义:易简,一也。变易,二也。不易,三也。”


吕思勉说:“从平等中见其差别,则所谓易也。从差别中见其平等,则所谓不易也。所谓易简者,谓极错杂之见象,统驭于极简单之原理。”


《周易》之易,指的不是简单,而是变化。三个含义:易、不易与易简,其实就是我们在设计时要考虑的变化、不变和简单。


软件设计有一个原则,叫“共性可变性分析”,就是去寻找变化的特性,将变与不变隔离;对于变化,又需要寻求其共性特征,找到抽象层面上不变的地方,如此既能应对易,又能做到不易,通过抽象,还能做到易简。


回到领域驱动设计,菱形对称架构的内外分离,就是在寻找易,易之方向不同,则需要隔离。限界上下文的划分,同样是在隔离易。对外,以相同方式公开服务契约,管理之间的协作,通过这种一致性来做到易简。


9



《战国策·秦三》讲了一个有趣的故事:郑人谓玉未理者璞,周人谓鼠未腊者朴。周人怀朴过郑贾曰:“欲买朴乎?”郑贾曰:“欲之。”出其朴视之,乃鼠也,因谢不取。


战国策借这个故事表达了名实不符的道理。引入为领域驱动设计的统一语言与诸限界上下文,实则就是语境之差别。同为pu音,在郑为璞,乃未雕琢的玉器,在周为朴,乃未腌制的鼠肉,二者同音不同字,意义大相径庭,但对于卖朴的周人和买璞的郑国商人而言,都以为是同一个事物,只有“出其朴视之”,也就是可视化出来,才各自知道差异。交流语言需统一,又需要明确其上下文。要知道,买朴的周人若在周,或者买璞的郑贾在郑,大约就不会出现误解了。

相关文章
|
2月前
|
搜索推荐 测试技术 UED
软件测试的艺术:从理论到实践的探索之旅
本文深入探讨了软件测试的核心理念、方法论及其在现代软件开发中的应用。通过分析测试的不同阶段和类型,文章揭示了如何有效地识别和解决软件缺陷,确保产品质量。同时,本文还提供了实际案例分析,展示了测试策略在实际项目中的应用效果,旨在帮助读者全面理解软件测试的重要性和复杂性。
|
9月前
技术人修炼之道阅读笔记(九)揪头发思维
技术人修炼之道阅读笔记(九)揪头发思维
|
文字识别 算法 NoSQL
读书分享:《程序员修炼之道:通向务实的最高境界》的思想经验
相较于全书众多的干货笔记,这篇文章是个别思想经验的总结,希望和大家交流。 ETC;DRY不仅限于编码;维护一个项目概念列表;帮助业务方理解他想要什么;防御性编程;继承税;学会沟通;小实验
读书分享:《程序员修炼之道:通向务实的最高境界》的思想经验
|
存储 缓存 负载均衡
|
架构师
10年技术管理实战不传心法
10年技术管理实战不传心法
125 0
10年技术管理实战不传心法
|
敏捷开发 Java BI
人月神话札记:系统设计
人月神话札记:系统设计
86 0
|
算法 程序员 小程序