设计国学,软件设计感悟

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

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


1



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


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


2



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


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


3


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


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


4



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


5


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


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


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


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


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


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


6


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


7



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


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


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


8



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


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


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


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


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


9



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


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

相关文章
|
3月前
|
算法 程序员
代码之舞:编程艺术与技术感悟
在数字世界的广阔舞台上,编程不仅是逻辑的堆砌与算法的运行,它更像是一场精心编排的舞蹈。本文将通过个人的技术旅程,探讨编程之美,揭示如何将枯燥的代码转变为优雅的解决方案,并分享在技术探索中收获的深刻感悟。
34 2
|
3月前
|
算法
编程之舞:技术感悟与生活哲学的交织
【8月更文挑战第16天】在数字世界的舞台上,编程不仅是技术的展示,更是思考的艺术。它如同一场精心编排的舞蹈,每一个动作、每一次旋转都蕴含着深远的意义。本文将带领读者走进编程的内在世界,探索那些看似晦涩难懂的代码背后所隐藏的生活哲学和情感表达。通过个人的技术感悟,我们将一同见证编程如何超越语言的界限,成为一种独特的沟通方式,连接着人与人、人与机器之间的思想与灵魂。
|
6月前
|
设计模式 算法 程序员
代码与诗意:软件开发中的创造性思维
【2月更文挑战第16天】在数字世界的构建中,技术并非只是冰冷的逻辑与算法堆砌,它同样蕴含着创造力与艺术性。本文通过探索软件开发过程中的非传统元素,揭示了编程背后的创造性思维和艺术表现。从设计模式到代码重构,再到用户界面的美学设计,每一环节都体现了技术人员对于美的追寻和技术的诗性表达。文章将深入探讨如何将创造性原则融入日常开发工作,以提升软件质量并丰富开发者的技术体验。
|
缓存 NoSQL 前端开发
|
设计模式 算法 程序员
代码大全2札记:软件架构中的设计
代码大全2札记:软件架构中的设计
158 0
|
敏捷开发 Java BI
人月神话札记:系统设计
人月神话札记:系统设计
102 0