UL语言 + BC语境 = 超越 ChatGPT


无所不在的语言UL超越了形式语义和任何现有的协约,因为它能够创造一个新的现实,这个现实有时会与一个不存在的词或概念联系在一起,由每个人在同一种语境上下文BC中分享和达成共识,这是ChatGPT无法处理的先验问题。

Ubiquitous Language goes beyond formal semantics and any existing copus as it allows to create a new reality sometimes linked to a not existing word or concept shared and agreed upon by everyone in a single bounded context... Something that ChatGPT can't deal with a priori.  - Jonathan Deyrson


无所不在的数据类型(UDT)是抽象的或代数的数据类型,它从任何预先存在的抽象中引入一个新的概念或现实。
UDTs与代数数据类型ADTs的区别在于其新颖的价值。

编程基础知识都是在现有问题空间的基础上发现抽象,而不是创造一个新的现实,所以我们没有注意到UDT的存在,在现有问题空间上进行抽象变成理所当然的,根本不用思考怀疑的,但是这就造成了“灯下黑”:假设如果我们解决的问题这个概念并没有确定呢?也就是说,我们都不确定我们需要解决什么问题,而用户也因为他们认知限制,也无法准确说出他们的需求。

编程是一种将业务领域概念抽象化并映射到“类型Type”和“数据结构”中,例如Liskov的抽象数据类型(ADT)"允许在发现需要新的数据抽象时增加内置抽象集"。但是,如果新的抽象概念还没有被明确指出呢?业务领域概念还没有被明确呢?你抽象什么?巧妇难为无米之炊。

另外一方面,软件设计可以在这里扮演着一个积极的角色(不是被动地等待需求明确,或涌现emergent),因为设计师可以重新规划和创造一个新的现实,而不仅仅是依附于现有的现实或紧贴指定类型。
创造一个新的现实是可以通过在一个单一的上下文语境BC中共享和商定的泛在语言UL来完成。

然后,通过实现基于抽象或代数数据类型的领域模型,在详细的设计层面上对泛在语言UL进行捕捉和形式化。

如果这些数据类型在你的核心领域中表现出一种 "新奇 "的现实,或者它们引入了一个新的概念,或者出现了一个不存在的词或缺失的词汇,那么我们就面临着一个UDT,它是在抽象和代数数据类型之上的共同创造行为中出现的。


banq注:ChatGPT出世,对现有只重视解决之道的科教体系提出挑战,学生学习的重点不仅是培养解决问题的能力(ChatGPT可以解决大部分问题),更重要的是培养提出问题的能力(学生不能只会考试刷题回答问题,而要更注重出题出试卷,后者本来是出题老师的专职工作)。如何提出问题?如何提出现实中不存在的概念,但是这个概念却能够在同一种语境(界限上下文BC)中人们能够达成共识,这样的概念模型也许就是一种创新。