罗素摹状词理论与面向对象OO

我个人认为:OO本质是逻辑分析。通过逻辑分析需求,寻求从需求到软件运行内部环节的内在一致性。逻辑分析是OO的元语言,正如它也是数学元元语言一样。逻辑分析是认识世界的基本手段,是软件建模分析的最基本的保障。

OO思维是一种逻辑分析思维,通过逻辑分析发现表达对象之间的关系,进行细粒度切分。

罗素是逻辑分析哲学的奠基人,其指称理论(reference)认为:名称的所指对象是与名称一一对应的客观事物(老子曰:名可名,非常名,不禁联想老子思想也是一种逻辑方法思想?)。就像我们OO软件世界中,对象有对象名称,这个名称在计算机内存中有一个与之一一对应内存地址段;当然,我们建模分析使用UML类图取类名时,客观世界必然有一个与之对应的事物。

罗素认为,20世纪产生的三大语义学难题的根源在于我们没有对专名和摹状词做出明确的区分。罗素提出对摹状词和专名进行划分:对于一个语句中的限定摹状词,当它是用来述说有关凡是如此这般(适合于该摹状词)的人或物的某件事情时,这是归属性使用;当它是说话者为了使听者能够辨认出他所谈论的是谁或是什么东西时,这是指称性作用,是专名。

联想到OO中的四色原型和DDD领域驱动设计,不禁联想:四色中description描述是不是一种摹状词(至少英文是同一个单词)?PPT是不是专名呢?。是否可以认为DDD中实体是一种专名,而值对象是一种摹状词呢?

如果是,那么罗素的摹状词理论是否可以为我们分析需求提供了一种有力确定的手段呢?下面我们以实例来说明其作用。

(1)“玫瑰是红的”

(2)“北京是中国的首都”

(3)“金山是不存在的”

这三种语句都是谓词表达法,“是”后面的语句都是可能在表达一种特征,比如第一句,我们可以认为红色是玫瑰对象的属性,如果从特征角度来看,红色是玫瑰的特征:
玫瑰{
红的;
}

那么,继续按照特征属性这个思路走下去:中国的首都是北京的特征:
北京{
中国的首都;
}

实际这是错的,“中国的首都”并不是“北京”的特性,而是它的同位语,换言之,我们是用这个句子表达这两个名词之间的等同关系,更准确地说,是这两个名称所指的对象之间的等同关系。

同样,在(3)中,“是不存在的”并不是“金山”的特性,它表明的是一种存在关系。

产生错误的原因是我们没有对摹状词(特征描述)进行严格区分,罗素在论文《摹状词》的第十五段落,他给的定义是:“(1)名字(专名)。一个名字是一个简单的符号,直接指一个个体,这个个体就是它的意义,并且凭它自身而有意义,与所有其它的字的意义无关;(2)摹状词。一个摹状词由几个字组成,这些字的意义已经确定,摹状词所有的意义 都是由这些意义而来。”

所以,“北京是中国的首都”中的“北京”是一个专名,而“中国的首都”是一种摹状词。如果用OO行话,“北京”指称refer的是一个具体存在的实例对象;而“中国的首都”也是另外一个description对象。

换言之,在OO中,我们不应该将“中国的首都”设计成”北京“的内部属性,而是应该是.....。

以上是我个人对摹状词的理解,可能是完全错误的,只供大家在实践中参考。


参考:
当代英美语言哲学中的指称问题

简析摹状词

[该贴被banq于2011-08-05 09:36修改过]
[该贴被banq于2011-08-05 09:37修改过]

2011年08月05日 09:34 "@banq"的内容
这三种语句都是谓词表达法,“是”后面的语句都是可能在表达一种特征,比如第一句,我们可以认为红色是玫瑰对象的属性,如果从特征角度来看,红色是玫瑰的特征:
玫瑰{
红的;
}

那么,继续按照特征属性这个思路走下去:中国的首都是北京的 ...

看似出现问题,其实可以考虑以准确地“特征”去理解,则可以解析了。
首先特征表现为一个真假命题。因为“是否红的”不能成为特征,特征本来就是确定的。

玫瑰是红的。

在这句话中,已经不是指称问题了——因为红的不是摹状词。
根据词性,名词(玫瑰)怎会等于形容词(红的)呢?所以这里的“是”不是“=”的意思,在banq提到的论文中,叫这是“归属”,“是红的”为归属性特征(就是我提到的特征,注意,“红的”不是特征)。

北京是中国的首都。

在这句话中,相当明显属指称问题了。当中的“是”明显是“=”的意思。而在“特征”的理解中,对应的对象是:
北京{
is中国的首都 = true;//真命题或者假命题,因为这是一个相对恒定的事实,所以可以考虑final。
}
北京是不是中国首都?北京是中国首都。那么“是中国首都”就是“北京”区别于其他的“特征”了。

2011年08月05日 10:02 "@SpeedVan"的内容
当中的“是”明显是“=”的意思。而在“特征”的理解中 ...

有些道理,但不是我表达的主要意思,我的意思如果写成:
北京{
中国首都;
}
是错误的,因为不管怎么写,这个结构都表明“中国首都”从属于“北京”,而两者是平等同一的,没有从属关系。

“是中国的首都”是摹状词,摹状词是一种描述,这种描述是“北京”的外部描述。

这里要引入罗素的直接知识和间接知识,直接知识(亲知知识)是对事物的认识,摹状词只能用于间接知识,通过摹状词描述事实,事实是对事物的性质关系的描述,事实需要判断,而事物只要命名(专名),不需要描述(摹状词)。

所以,“北京”是事物,不是事实,“是中国的首都”是事实。事实不是事物的内部属性或特征。所以,“是中国的首都”这个事实不能作为“北京”这个事物的内部,不是其天然本体直接属性,换句话说:是其社会属性,在唐朝,北京就不是中国首都。


“是中国的首都”不是事实,但可以当做一个谓词。

“北京是中国的首都”才是事实。

如果把“是中国的首都”看做一个谓词f
f(北京)是事实。

你可以进行查询f(X),也就是问,什么地方是中国的首都?

这里没有什么事物,只有词,这里叫做个体词。

2011年08月05日 11:28 "@uda1341"的内容
“是中国的首都”不是事实,但可以当做一个谓词。

“北京是中国的首都”才是事实。

如果把“是中国的首都”看做一个谓词f
f(北京)是事实。

你可以进行查询f(X),也就是问,什么地方是中国的首都?

这里没有什么事物, ...

恩,我也是这样理解,所以我提到特征时就明确了,必须是“是中国的首都”,从特征的角度说,正因为北京具有“是中国的首都”的特征,才使“北京是中国的首都”成立。其实特征也是事实的局部体现。

“特征”这个概念不需要,去掉这个概念表达会更清楚。

2011年08月05日 11:59 "@uda1341"的内容
“特征”这个概念不需要,去掉这个概念表达会更清楚。 ...

严格说,特征是用来描述事物的某一方面的,是不能“直接”描述事物的,只能间接通过描述事物的某一面来描述事物。

形象说,特征是不能“直接”靠近事物的。

玫瑰是红色的,是说玫瑰的某一方面(比如颜色)是红色的;
北京是中国首都,是说北京的某一方面(比如政治地位)是中国首都。

红色是说明“颜色”的特征,中国首都是说明“政治地位”的特征,
因为玫瑰有颜色,所以可能具有“红色”这个特征;因为北京有政治地位,所以可能具有“中国首都”这个特征。

谓词与特征,看起来还不一样。比如北京是中国首都。“北京”是专名,“是中国首都”是谓词(摹状词)。中国首都是描述“政治地位”的特征。当然“是中国首都”也可以理解为北京的特征,但两者之间不具备“直接性”(或必然性)。

特征这个概念,在其他场合(数学上)其其明确的意义。在这里还是去掉吧,就用罗素的摹状词理论以及相关的理论的术语来讨论吧。

2011年08月05日 11:48 "@banq"的内容
红色是玫瑰的特征 ...

人脑的思维具有一定跳跃性,我们说某句话,陈述某个事实,可能忽略了显而易见的推理过程。

banq对特征与摹状词有些纠结的原因可能就在于此。之前,我也忽略了其细微的差别,这也是我对之前的争论感到困惑不解的原因,一个打交道这么久词汇,居然没能给别人解释清楚。

现在大抵想通了,在此补充解释一下。希望到可以让大家先抛开特征这个词,在谓词理论中一路走到黑,有必要时再跳出来看看特征的意义。

先亮观点:特征是摹状词(谓词)的一部分。

“红色是玫瑰的特征”,完整的描述是“红色是玫瑰的颜色特征”。

莱布尼茨区分了理性真理(或必然真理)和事实真理(或偶然真理)。

一个真理是必然的,若他的否定蕴含着矛盾;如果一个真理不是必然的,就称它是偶然的。

玫瑰是红色的,是一个事实真理。(玫瑰也有可能是黄色的、黑色的)
红色是一种颜色,是一个理性真理。(红色不可能不是一种颜色)

“是中国首都”不是(北京的)一个特征,是一个谓词,“中国首都”,是(政治地位的)的一个特征,不是一个谓词。

“是红色的”也不是(玫瑰的)一个特征,是一个谓词;“红色”,是(颜色的)一个特征,不是一个谓词。

特征是不能直接描述事物的,只能间接描述事物。也就是说特征不能直接“靠近”事物,必须包含在谓词中,才能靠近并描述事物。

当我们说事物具有某种特征时,实际上是说事物的某一方面具有某种特征。

某一方面可能显而易见,在头脑中一闪而过,甚至给忽略了。而后,我们却在信息缺失的描述下,进行无跳跃性的推理过程,自然是不太流畅了。

2011年08月05日 23:50 "@jdon007"的内容
“特征”这个概念不需要,去掉这个概念表达会更清楚 ...

同意,当我们描述事物具有某个特征时,实际上已经假设这个事物已经存在,或者已经有这个事物,实际这个事物是不存在的。

这就是我帖子中的“金山是不存在”这个命题,“金山”是金子做的山,当“金山”作为主词时,实际上已经肯定它存在,那么,“金山是不存在”隐含的意思就是“存在的事物不存在”,很显然自相矛盾。

在我们设计对象或类时,会经常碰到这种问题,只有当项目进入到深度,我们才可能发现这个问题,原来这个类根本不存在,之前主观捏造了它,而逻辑分析可以帮助我们事先避免这种错误,它追求的是命题本身内部的一致性,通过悖论或自相矛盾来避免错误发生。

这里还要提及一下"SpeedVan认为的VO"一文,如果你把VO的很多特征特性作为判断它是否值对象的主要依据,或者入口依据,也是和“金山不存在”是一样的,因为你先假定了它是值对象,然后才有值对象一致性等特性。

判断是否值对象的主要依据还是和罗素摹状词和专名区别一样:当它是说话者为了使听者能够辨认出他所谈论的是谁或是什么东西时,这是指称性作用,是专名,也是实体,否则就是值对象。

实体和值对象这个区别在DDD书籍中也是这样定义的,说明这符合逻辑学,是根本的了,除非逻辑自己再发展,否则没有第二个方式,其他都是浮云,枝节。

这里我想谈一下我的思维方式,为什么我很欣然接受罗素的逻辑,当然不否认其他人的思维方式也很容易接受现代逻辑,而不是迫于其名声。

很早时候我在其他帖子里就谈到我的思维方式,根据老子道德经的“有欲观其缴”,缴是边界的意思,一个边界从结构上把世界进行了划分,有了边界,就边界内外,如果有内外,这个边界就可能是事物的边界。

关键问题来了,因为我们无法确定这个是否有这个事物,所以,我们只能从边界之外来看“它”,说白了,就是从“事物”外部来描述它(摹状词?)。这里有一点是肯定的,你不能从边界之内去定义这个事物,因为你不能确定"这个事物"是否存在。(根据事物内部各种性质来判断这个事物是否是那个事物,类似枚举型的归纳证明法,得到的真理很少)

我把从"事物"边界之外去描述它的方式称为“象”,也就是所谓象形思维;中国有句话:大象无形。隐含的意思是:除了“大象无形”外,其他都是有象形的。

所以,无论我们看多么高深的陌生理论,他们总是要表达一个事物,那么我们就从语言和思维看,他们是试图从外部来描述,还是试图进入事物内部,进行精确描述。

一个“事物”如果我们从内外都可能给予明确的定义,基本有确定性,比如物理学把物体内部的原子或波都找出来了;西方医学把身体内部的病毒病菌都找出来,这些都是分析哲学的优势。

但是股票行情,我们现在还无法用数学从其内部来表达然后预测它,当然,所谓模糊数学和哲理数学正在努力,那么我们是否等他们研究出来才能玩股票呢?不是,我们可以从股票大盘走势这个外部来预测的,可以有一定的确定性,但是确定性不太大,因为我们不能把其内部原理表达出来,因此其余只是机会概率,或上帝在掌控。

当然,我这个“有欲观其缴”的方法有可能和现代逻辑矛盾,如果是当然以现代逻辑为主,我放弃它,但是到目前为止,我没有发现矛盾,相反发现这个起点和罗素的指称名称是一致的。


2011年08月06日 09:42 "@banq"的内容
根据老子道德经的“有欲观其缴”,缴是边界的意思,一个边界从结构上把世界进行了划分,有了边界,就边界内外,如果有内外,这个边界就可能是事物的边界。 ...

特征是摹状词(谓词)的一部分。这句话,可能还是没有说清楚。

特征蕴含了观察事物的角度,从这个角度对事物的描述,即摹状词。
对这个角度的描述,即特征(四象图的特征或DDD的VO或四色原型的DESC)。

我看见了一又大又红玫瑰。

实际上,我是从两个角度(大小和颜色)观察了玫瑰的性质(或特征)。

玫瑰 {
观察角度一:大小 => 大
观察角度二:颜色 => 红
}

玫瑰 {
观察角度:大小兼颜色 => 又大又红
}

对角度进行描述,即从模型上剥离特征。前者定义一个DimensionAndColor的特征类,或者定义Dimession 和Color两个特征类。

但不论怎么剥离,一个共同点,特征的概念(大小与颜色)相对独立于模型(玫瑰、房子)。也就是关心“what"(哪一个角度,事物的什么方面)甚于关心“who"或"which"(哪一个事物)。

也就是说我们对“观察事物的角度”的描述(特征),有别于“对事物本身”的描述(摹状词)。

“世界是事实的总合,不是事物的总和。”

一个潜在的理由即事物无法定义,只能从不同的角度去描摹,也就是从不同的角度去观察事物的性质,内与外只是对事物观察角度的一种分类而已。

每一种描摹,都是一个陈述,一个事实。事物可能蕴含在无数个事实中,也就是从无数个角度观察事物。

既然角度有无数个,将角度分为两类(内与外,代表内涵与外延)也就没多少意义了,因为分了,从内部角度还是有无数个,从外部角度也还是有无数个。

故常无,欲以观其妙;常有,欲以观其徼。这句话我的理解跟banq不一样。

无,即不局限于某一个角度或去区分角度(无主观意识),观察事物的所有事实。(妙,即事物无穷无尽的变化,呈现出无数个事实)

有,即区分角度,考虑不同角度的区别(有主观意识),观察事物的事实之间的联系或变化模式。(徼,即边际,即事物相关事实之间的某种关联)

所以,我们与其把精力放在事物的观察角度的分类上(内涵与外延),不如把精力放在包含事物的事实本身,以及事实的变化模式上。

我感觉我这是在拖banq下水,抛弃OO观(边界,内与外),只是与uda1341高调的策略不同,用了一些掩人耳目的手法,比如谈谈banq喜欢的《道德经》。哈哈。其实《老子》一书,我个人也是蛮喜欢的,这老头毕竟不简单哪。

2011年08月06日 09:42 "@banq"的内容
这里还要提及一下"SpeedVan认为的VO"一文,如果你把VO的很多特征特性作为判断它是否值对象的主要依据,或者入口依据,也是和“金山不存在”是一样的,因为你先假定了它是值对象,然后才有值对象一致性等特性。 ...

这句我同意,我文章后面我就说到了,我“一、”处说了是“是什么”“怎么样”,之后将要补充的是“为什么”,即为什么会存在这样的一个边界。我很早就说出了,这些性质很大部分源之于“值”的边界。

那篇文章我还需改改某些词语,例子也需要改改,我要突出值对象中值的含义。其实也就是说值,至于判断是否为值对象,其实就是判断是否为值。至于你说值如何判断,则我只能说是一个系统中一种最基本最原子的概念。

banq介绍的“罗素摹状词理论”非常好,但是我们一定要清楚这是进行逻辑分析的辅助手段。我们做业务分析,首先至少要成为半个领域专家。只有在这个基础上,再加以各种类似“罗素摹状词理论”的辅助分析手段才可以达到最佳效果。

2011年08月07日 16:44 "@jdon007"的内容
抛弃OO观(边界,内与外) ...

这样做对很多人(包括我自己)都可能是一个很大的冲击。我们大多数人更习惯于辩证的思考方式,这是国情所决定。

就拿我个人来说,比如,四象图从系统的角度看,也隐含了这种思维特点,将模型分为:内与外(特征与场景)、动与静(行为与状态)。

区分角度只是手段,过分执著于角度本身,是不是一种本末倒置的做法?是不是打着“辩证”的旗号,却做着“非辩证”的事情呢?

特别对于亦内亦外,亦动亦静的情景,若还执着于角度的区分,那真是费力不讨好。

静下心来想想,我们真正关心的是什么?事物还是事实?

2011年08月07日 20:49 "@jdon007"的内容
静下心来想想,我们真正关心的是什么?事物还是事实? ...

事物和事实都要关心,可能你理解的OO观和我讲的边界内外观还是有些偏差的。

实际上辩证思维是没有错的,错的是一元论,罗素摹状词颠覆了黑格尔(包括马克思)哲学体系中的“事物-属性”或"实体-属性"主从一元论(90%中国人是这种思维),倡导通过事物的性质关系(事实)来看待世界,提倡用“如果……那么”替代“因为……所以”等等。

所以,在理解四色图时,大部分也会从“事物-属性”或"实体-属性"(或者事物-特征)主从一元论这个角度理解。关键是这个事物是否确定我们还没有把握,这是再三强调的观点,边界划分了,但是这个边界是否是事物的边界,还是一个领域边界,还是一个Context边界,还是等等其他,甚至这个边界本身是否需要划下去也是待查的,jdon007千万别理解成“有了边界,就是有事物了”,这两者之间还有距离的,也是面向对象分析设计的最重要一步。

因为90%中国人接受的是黑格尔体系的一元思维,所以,进行面向对象分析设计时,不只是领域专家需要分析逻辑,而且程序员也必须有分析逻辑,否则,你就错误理解了领域专家的意思,“北京是中国的首都”这个例子已经很好说明,他在讲向西,你理解成向东,做出来的软件和需求当然不一样了,错在交流沟通上,DDD都已经统一建模语言了,为什么还可能沟通交流有问题呢?关键问题就在思维方法世界观。

我之前说了,我的边界观并不和罗素的分析哲学矛盾,相反,罗素的类型论和摹状词理论反而是延展了边界观,如果说边界观是战略,那么我在分析逻辑上找到战术了。当然,不理解我这段话的人,可能以为我在狡辩,反正以后时间长,我会不断地来说明。