罗素摹状词理论与面向对象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修改过]