DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
最近听说领域驱动设计圈子提出了“设计国学”的思想,受启发得到此文。
**********
领域驱动设计(DDD)是革命性的创新和划时代的洞见,国学则是中华五千年文明的积累。二者的结合如同双剑合璧,以老带新,以新激老,足以解决软件开发中的任何难题。
曾任中国科技大学校长、南方科技大学校长的物理学家、中科院院士朱清时在他的著名演讲《物理学步入禅境:缘起性空》中提到:科学家千辛万苦爬到山顶时,佛学大师已经在此等候多时了。
事实证明确实如此。
例如,西方的哈勃望远镜观察到的宇宙星团,在《华严经·八十卷五品》中早有论证:诸佛子,彼一切世界种,或有作须弥山形,或作江河形,或作回转形,或作漩流形……。
例如,西方的显微镜观察到的细菌,在《大般涅槃经卷六·如来性品第四之三》中也早有论证:若所受身,有八万虫。
作为科学家的代表,朱清时院士的这个演讲可谓是振聋发聩。它打破了理科人群对物理学的垄断。佛学是物理学的山顶,而《华严经》说“一切众生皆具如来智慧德相”——俗称“佛眼看众生,众生皆是佛”,因此,人人都是物理学家。
于是,民间掀起了研究物理学的新高潮,文史哲的各路人才也纷纷为物理学贡献力量。
如果文史哲的人才也能基于自身优势为软件开发贡献力量,可以想象,软件开发业会是一个什么样的盛景!
我们也可以说,软件开发人员千辛万苦爬到山顶时,国学大师已经在此等候多时了。
自古以来,软件开发和国学就是你中有我,我中有你,所以我们经常可以看到《**之道》、《**之禅》这样的软件开发书籍:
《领域驱动设计》的作者Eric Evans就把领域驱动设计称为“哲学”,他在《领域驱动设计》的前言中说:
Leading software designers have recognized domain modeling and design as critical topics for at least 20 years, yet surprisingly little has been written about what needs to be done or how to do it. Although it has never been formulated clearly, a philosophy has emerged as an undercurrent in the object community, a philosophy I call domain-driven design.
领先的软件设计人员认识到领域建模和设计的关键性已经有至少20年,然而令人惊讶的是,关于需要做到什么或者如何做,一直以来几乎没人写点什么。不过,一种哲学像一股暗流已经在对象社群出现,虽然还从来没有被清晰确切地表述出来。我把这种哲学叫作“领域驱动设计”。
把领域驱动设计定位为哲学,这个超然的地位使得领域驱动设计具有极大的包容性和无限的发展可能,从前、现在和以后所有行之有效的软件开发知识都可以纳入领域驱动设计的哲学体系。
另外,把领域驱动设计定位为哲学,还可以得天独厚地汲取国学五千年的丰富养分,开辟软件开发的新天地。
领域驱动设计的二进制,可以从《黄帝内经》中汲取养分:阴阳者,天地之道也,万物之纲纪,变化之父母,生杀之本始,神明之府也。
可以看出,领域驱动设计二进制的根源就是阴阳学说,正是在此基础上,造就了我们今天繁花似锦的信息化世界。
领域驱动设计的ChatGPT,同样可以追溯到《道德经》:道生一,一生二,二生三,三生万物。这不就是今天人工智能学习能力的来源吗?
领域驱动设计所提出的分层和模块化设计思想,《周礼》中就多有描述,其中强调了职责划分的重要性。
《墨子》中大量的“故”、“是故”,就是领域驱动设计结构化编程思想的根源,而西方一直到1960年代才由Jacopini和Dijkstra提出类似思想。
领域驱动设计数据库的应用,则可以追溯到商朝的户籍管理系统。
领域驱动设计提出的“针对接口编程,而不是针对实现编程”,在武林秘籍《九阴真经》中也有论证:天之道,损有余而补不足,是故虚胜实,不足胜有余。当然,《九阴真经》虽在民间流传,但真伪未知,因此这一条可以打个问号。
我们来听听《天龙八部》里的扫地僧怎么说的:
那老僧续道:“本寺七十二项绝技,每一项功夫都能伤人要害、取人性命,凌厉狠辣,大干天和,是以每一项绝技,均须有相应的慈悲佛法为之化解。这道理本寺僧人倒也并非人人皆知,只是一人练到四五项绝技之后,在禅理上的领悟,自然而然的会受到障碍。在我少林派,那便叫作‘武学障’,与别宗别派的‘知见障’道理相同。须知佛法在求渡世,武功在求杀生,两者背道而驰,相互克制。只有佛法越高,慈悲之念越盛,武功绝技才能练得越多,但修为上到了如此境界的高僧,却又不屑去多学各种厉害的杀人法门了。
那老僧见众僧上来,全不理会,继续说道:“但如练的是本派上乘武功,例如拈花指、多罗叶指、般若掌之类,每日不以慈悲佛法调和化解,则戾气深入脏腑,愈陷愈深,比之任何外毒都要厉害百倍。
领域驱动设计的每一项绝技都是“杀人技”,而且兼容并包。程序员每多学习一项,“算法障”或“知见障”就重一分,这时就需要国学来化解。
目前,国内的程序员数量已经接近1000万,可以按比例为程序员配备软件国学顾问,让文史哲专业的同学也加入到信息化建设的大潮中。
未来世界,信息化所占比例必将越来越大,怎么能把一部分人排除在外呢?
另外,软件国学人才培养所需成本很低,不需要编程环境,甚至不需要计算机,一个Kindle就可以把所有典籍包罗在内,自学成才极其方便。
国学浩如烟海,软件国学人才只需要精通某一具体学科即可,包括但不限于历史、哲学、地理、政治、经济、书画、音乐、易学、术数、星相、书法、中医等。
据报道,Steve Jobs就是因为小时候学习了书法,并把书法思想用于苹果公司,才有了Mac、iPod、iPhone的辉煌。