动词是个独裁者

计算机语言 数学或人类语言都是语言,背后是逻辑,转贴一篇文章:
动词是个独裁者_西闪五字诀_天涯博客_天涯社区

这篇文章是从人类语言 心理等角度谈动词,其实对于我们建模方法探讨有帮助,也由此可见,计算机不一定属于理科,而是跨文科和理科的。

文中精彩部分是关于蒯因的故事,蒯因是逻辑学家 数学家,jdon.com有其一篇文章:蒯因与引用透明,豆瓣上有一个被文理科搞坏脑子的问题:蒯因应该算是数学家还是逻辑学家?,如果他知道数学 逻辑 语言 哲学本一家,就不会有如此奇怪问题。

蒯因的故事如下:

哲学家蒯因(Willard V. O.Quine)曾经讲过一个语言学家的笑话。他说,假如在一个完全陌生的原始部落,当语言学家看到一个土人在追赶一只兔子,口中大叫“Gavagai!”他会明白这个Gavagai是什么意思吗?从逻辑上讲,Gavagai未必是“兔子”的意思,也可能是这只兔子的名字,譬如毛毛球、长耳朵之类,或者自己的心思,甚至任何别的含义。语言学家显然不可能从这个有限的事件中归纳出Gavagai的真实意义。

蒯因是想强调休谟提出的归纳局限性,然而他举的例子却大有问题。因为每个正常出生的婴儿都像进入陌生部落的语言学家,仅凭直觉就弄懂了父母吐出的每个字的真实意义。这就好比一张热气球飘过房子上空的图画,任何小孩都会很自然地指出,移动的那个物体才是画面中的主体,其余是背景。他们会像说“气球在房子上飞过”那样说“小鸟在树上唱歌”、“风筝掉到墙那边去了”等等。他们能够正确地猜测,那些在“动”的事物凸显在相对静止的事物之上。(《认知语言学导论》,弗里德里希·温格瑞尔等著)


2013-02-03 16:45 "@banq"的内容
这就好比一张热气球飘过房子上空的图画,任何小孩都会很自然地指出,移动的那个物体才是画面中的主体,其余是背景。 ...

人们对动词的敏感远远高于静止的事物。比如我们要开发一个软件系统,对于软件功能function,能够做什么非常关心。

功能如此非常重要,以至于人们分析需求时,可能只看到动词功能,而忽视需求中静止的结构本质与边界;而基于数据库的技术则是试图以静止的数据结构Schema来实现功能,这两者强行结合,造成了程序员编程热衷于用数据库的SQL的CRUD来实现需求功能,而设计的数据表库结构可能不能反映需求中静止的结构。

我们需要一种方法能够进行动词名词综合平衡,不能只看到动词忽略名词,也不能因为名词忽略动词。

在我们OO分析需求建模过程中,动词和名词的分离是一条主要线索,动词名词进行分离,还要再结合验证,如下图Jdon分析法:

横向坐标是动词,以事件为主要线索;纵坐标是以名词静止的结构为主要线索。它们之间的结合是状态。


拍电影是这样的,一大堆静止的中有一个动的,大伙都会关注这个动的。反过来,一大堆动的中有一个静止的,大伙都会关注这个静止的。在拍电影和摄影中,对比很重要,但如果没有陪体(一大堆动的或静止的),哪能突出主体?所以捏,主体、陪体都很重要喽~

2013-02-04 16:01 "@masterice"的内容
主体、陪体都很重要 ...

呵呵 理解方向错了,这里意思是,动词在所有词语中很显式,文中的凸显性意思就是其显式性,这是和人的认识有关的。

文中举例一些语义概括有问题的病人,无法认识事物的静止特征,比如苹果是红的圆的这些静止特征,但是他们对人造的事物有很好地概括,“人造”是一种动词。

当我们人去分析客观现实时,如何透过显式看到隐式,而不是被显式独裁者霸占脑袋,是一种挑战和能力。

可以这么说,“业务逻辑”本身就是“一组动词的结果”。

另外,“动词”可能包含2个方面“读与写”。当然,2个动词之间没有必然逻辑关系时,那么这两个动词可以并行执行;反之则只能串行。在我看来,并行往往是粗粒度的,串行是细粒度的。

“功能如此非常重要,以至于人们分析需求时,可能只看到动词功能,而忽视需求中静止的结构本质与边界;而基于数据库的技术则是试图以静止的数据结构Schema来实现功能,这两者强行结合,造成了程序员编程热衷于用数据库的SQL的CRUD来实现需求功能,而设计的数据表库结构可能不能反映需求中静止的结构。”,时至现在仍然有这样的现象,在前几年有个代码自动生成器,生成的代码可以说是典型的SQL式的CRUD,其使用者不乏其人。一个项目执行的任何命令其本质上是CRUD之一但他的上下文环境边界的界定,分析,适应需求变化的敏捷性设计,更像门艺术活,需要精雕细琢才行。

既然动词是个独裁者,如此突出显式,不妨可以直接面对它。 动词也是由内外两个部分组成:动词名称本身和动词对外部造成的影响。

动词如此突出,关键是动词对整个语句,也就是对外部造成的影响如此让人印象深刻。那么我们何妨抓住动词这个要点,起到纲举目张的效果?

以事件这个动词为例子,事件分两种含义,或者说从两个角度分别看到两种含义:

一种是事件名词本身,比如创建事件 销毁事件 响铃事件,创建 销毁和响铃本身是一个对象,可以看成一种实体,可以被持久被保存,也可以被追溯,这个角度就是Event Sourcing。

事件另外一种角度是:事件对外部周围环境产生影响和效果,事件改变了聚合根的状态。从这个角度看,事件是一种Domain Events。

所以,一个事件既可以是Event Sourcing,又可以是Domain Events。事件贯穿于整个系统或领域层,如此重要,如此独裁,我们不能不忽视,更要分解之。

2013-02-17 08:59 "@banq"的内容
所以,一个事件既可以是Event Sourcing,又可以是Domain Events。事件贯穿于整个系统或领域层,如此重要,如此独裁,我们不能不忽视,更要分解之。 ...

Event Sourcing可以是系统需求、技术实现,但不是领域需求,Domain Event却明确存在于领域模型之中,系统的任何技术需求都伴随特定模型领域特征(聚合根、事件等)的出现自然而然的呈现出来,这一点与物种进化应该是一个道理,生物基因突变出现特定的性状特性,由特定形状的出现进而演化出一套进攻或防御系统,换言之,进攻或防御系统是不可能凭空出现必须拥有特定的物质基础。

Event Sourcing或CQRS仅仅是领域事件的技术延伸物,不是唯一的、终极的

所以,系统架构作为领域模型的衍生物而存在,不能侵入领域模型,没必要刻意去分动词、名词之类,这些都是一些技巧、方法论,非本质思想!!!
[该贴被clonalman于2013-02-17 11:23修改过]