在面向对象的编程思想中,往往把“对象”(object)定义为“现实世界中某个具体的物理实体在计算机逻辑中的映射和体现”,“类”则是“是一种抽象的数据类型,是同种对象的集合与抽象”,“属于类的某一个对象则被称为类的一个实例”。关于对象,有论者尝试着用“哲学现象学”的方法,把胡塞尔的“意向性”理论引入对“对象”的分析中,认为“对象就是客观世界中物体在人脑中的映象及人的意向”(刘强:《也谈面向对象》,http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39052846,00.htm)。在胡塞尔那里,作为现象学理论的根本观点之一,所谓外部的物理世界,即“自然观点的世界”是被悬置不予讨论的,这种自然的论断是不起作用的。因为如果不放弃对于外部世界的信念,势必导致“人的认识是如何做到忠实于外部世界”这样一个理论难题,它将会使思想陷于“鸡生蛋,蛋生鸡”式的痛苦纠缠之中。 在面向对象编程的实际操作中,对象是使用计算机逻辑来映射和体现物理实体的,使用计算机逻辑语言形态所表现的对象一旦形成,它有着可以自我生长的独立特性;这种抽象的数据形态,与现实的物理实体是无关的。问题在于,编程活动的发生必须面对实际的需求,计算机逻辑对于物理实体的描摹是力求完整的,这至少应该被看成是一种努力。然而这种“乌托邦”式的认知企图就又回到了胡塞尔所要尽力避免的思想纠缠之中--我们如何担保这种描摹形态忠实于现实世界?同时,作为“类”,是“同种对象的集合与抽象”,面对丰富无限的世界,类的积累在哲学上有着不可穷尽的困难。 Michael Jackson指出,面向对象的方法和结构化方法对问题域的处理没有什么大的区别,却被人们过分地用美好的词汇给美化了:“从众多面向对象建模中,你可以很清楚地看到这些恶果。而且它们还经常伴随着有关现实世界建模的非常美好的词汇。然而,仔细看看,你就会发现它们其实是彻头彻尾的编程对象!如果说有任何现实世界对象相似的地方,不管是死是活,纯属巧合”(转引自《人月神话》,《神品--代序》)。 在实际的操作中,“类库”积累是以商业运做的方式推动进行的,比如Microsoft不断膨胀中的MFC类库,这就好比把全人类“改造自然”的使命托付给一家商业公司去做那么可笑,这实在是一件不可承受之重的事业,一项“不可能的任务”(Impossible Mission)。MFC类库的建立是一项永无休止的事业,它宛如一个雪球,越滚越大,没有人去关心--随着这个类库的膨胀也不可能做到真正去关心底层的东西到底是垃圾抑或精华。同时,总有一天,这个类库有推不动的时候,形成一种自我约束、自我限制的尴尬格局。出于实用的习性,软件业宁愿对这种现状听之任之,因为似乎所有的人都暗中坚信,如果到了滚不动的那一天,自然会有其他的办法解决!越来越多的程序员开始怀疑学习MFC类库的必要性,它实际上已经成为一个必须去学习的人造对象,浩如烟海。 或许我们一开始就从根本上做错了什么,然而,此时,软件业已经踏上了一条不归之路。 (《人月神话》,[美]弗雷德里克·布鲁克斯著,汪颖等译,清华大学出版社) 附: Frederick P. Brooks , Jr.曾荣获美国计算机领域最具声望的图灵奖(A.M.Turing Award)桂冠。美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程做出了里程碑式的贡献。”

Brooks博士是北卡罗莱纳大学Kenan-Flagler商学院的计算机科学教授。他被认为是“IBM 360系统之父”,曾担任了360系统的项目经理,以及 360操作系统项目设计阶段的经理。凭借在上述项目中的杰出贡献,Brooks博士以及Bob Evans和Erich Bloch在1985年荣获了美国国家技术奖(National Medal of Technology)。Brooks博士早期曾担任IBM 公司Stretch和Harvest计算机的体系结构设计师。
(本文选自《文景(Literary Landscape)·第6辑》)
|