多谢Trustno1的帮忙,他因为忍不住了,所以打算帮我把题破了
写文章,不破不立。我说这句话还不针对你即将要发表的解决方案,只是针对你前5页的"破",本来以为你能说清楚的,但是你破了5页都破不了,看着肚子都痒,索性就用EL这样前人的观点帮你破了,你就快点立论吧。
而他引用的两段话,一段正好可以用来承上“Elminster的那段关于面向对象与本体论的论述”,另外一段正好可以用来启下“事实上,我们猜想是,如果没有知识表示和自动推力工作的帮助,这些问题(指类,继承)是无法仅仅通过计算机语言设计的方式来处理的。”——SICP 2.5,中文版136页,角注118。
Elminster那篇论述,正好和我的文章形成一个互补关系,他以极为清晰的表达语言,说明了OO打算以类型化方式描述真实世界,所面临的难题。这也使我不必再次动脑子思考如何回答JavaCup的哲学方面的疑问了。而下面这一段话我想特别再次引用一下:
就我个人来说,比较倾向于认为这条最终是走不通的死路,人是从事物的特征与属性归纳出它的“类型”,而不是相反。某种意义上说,“类型”是为了节省描述时间而产生的 …… 唔,这个太远了,所以就此打住。
大家记住这段话中的,特征、属性、类型这几个关键字。我先绕个小弯再回到这个话题上来。
我之前分析的面向对象的哲学漏洞时,也有不少朋友认为,说:“面向对象不能很好的描述真实世界,并非一个有意义的指控。OOA、OOD本来就是用来对需求建模的。也就是打算描述需求世界。”
其实我的指控分为两个阶段,一方面,OO所依据的哲学导致了软件开发的苦难,而且至今余毒未清。另一方面,即使是指打算对需求建模,OO的技术手段也是有缺陷的。
就这么说吧:OO的类型系统,原本是从ADT来的。一个抽象数据类型,将数据与操作封装在一起,是出于对于数据被“莫名其妙的修改”的担心。但是,结果呢,一个ADT如果不支持继承,那么它的代码就无法被重用。所以OO就在ADT的基础上增加的一个继承,通过继承的方式来复用以有的代码。这样的思路原本没有太大的问题,如果它仅仅只想表达各种自定义数据类型的话。
但是在OO的哲学提出之后,一切皆是对象,所以一切出于类型体系之内,对于数据类型的定义,扩展到了对于现实世界中各种实体的类型定义,整个一个类型系统,其内在的语义大大扩展复杂化了。更糟糕的是——引用Elminster的话是从事物的特征与属性归纳出它的“类型”——而因为OO封装也就是隐藏了内部数据,事物的特征与属性,从其本质属性,被转义为对外的提供的操作接口。但是,要分析一个实体的本质,而不是实体的外部表现,更不仅仅是“我能对他做什么”。这才是实体分析有可能成功的关键,而在OO的语言设定中,这却是难以做到的。
我们来看两张图片
这是在SICP里讨论类型系统的第一张图片,我称之为“OO成功案例”。
这是在SICP里讨论类型系统的第二张图片,我称之为“OO失败案例”。
为什么一个能够成功,而另一个却会失败?以往的解释其实比较“直觉”。看着这个图,就想当然的以为:“这是因为多重继承导致的!”事实上呢?
第一张图中所显示的成功,很多人会认为这是由于这一个对象塔中的每一个对象都能够支持加减乘除运算。而在几何图形中,这样一致的操作接口不存在了。而事实上,正是因为复数、实数、有理数、整数,在本质属性上有一致之处,他们才能表现出一致的“可加减乘除性”。而不是相反。当我们画出第二张对象关系图的时候,也不是根据几何图形可以接受的操作类型来进行分类与显示继承关系的,而是根据不同的几何图形的本质属性的相近程度来划分类型体系的。多边形的本质是:“多条有限长直线组成了一个封闭图形”,而三角形与四边形的本质则是,边的数量分别为三和四。等腰三角形的本质是,不但边的数量为三,而且其中有两条边的长度相等,直角三角形的本质是不但边的数量为三,而且其中有一个直角。如此等等......
各位,请再次思考这样的分类体系的内涵。
我的结论是:“一个类型,是由其本质决定了所能表现出的可操作性,而不是有其所能接受的操作决定了其本质。然而,OO正好把这个问题搞反了!”
(未完待续)
分享到:
相关推荐
20210509-信达证券-化工行业:敲响轮胎消费时代的钟声!.pdf
化工行业:敲响轮胎消费时代的钟声!.pdf
化工行业:敲响轮胎消费时代的钟声!(30页).pdf
Window操作系统的诞生成就了微软帝国,同时也造就了PC时代的繁荣,然而如今,以Android和iPhone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了PC时代的丧钟!这也预示着移动互联网时代(3G)已经来临。 ...
化工行业:敲响轮胎消费时代的钟声!(2021)(30页).pdf
Android 应用开发揭秘 ...以Andorid和iphone手机为代表的智能移动设备的发明却敲响了PC时代的丧钟!移动互联网时代(3G 4G)已经来临,谁会成为这些移动设备的主宰?毫无疑问,它就是Android--PC时代的Windows!
然而,以android和iphone手机为代表的智能移动设备的发明却敲响了pc时代的丧钟!移动互联网时代(3g时代)已经来临,谁会成为这些移动设备上的主宰?毫无疑问,它就是android——pc时代的windows! 移动互联网还是...
【标题解析】:“图片购物搜索淘淘搜:敲响美丽说们的丧钟?”指的是新兴的电商搜索工具“淘淘搜”通过创新的图片购物搜索功能,对以美丽说、蘑菇街为代表的图片购物网站构成潜在的竞争威胁。 【描述概要】:文章...
提到的“丧钟为谁而鸣”,这句话源自约翰·多恩的诗句,意味着每个人的死亡都是所有人的损失,每个人都在为自己的死亡敲响丧钟。在这里,读者被提醒珍惜当下,因为生命无常,每一刻都可能是最后的时刻。同时,这也...
这篇读后感主要围绕的是作者在疫情期间阅读《小学生时代》杂志后的感受。书中的内容虽然未具体提及,但从作者的描述中可以看出,这本书或许包含了对疫情的报道、对前线工作者的致敬,以及对生活的反思和希望的探讨。...
《地球——我们的家园》是教育学生认识地球独特性和环保重要性的关键课程。这一课时的教学设计旨在通过多种教学策略,使学生对地球的唯一性有深入理解,提高他们对环境保护的认识,培养珍视地球家园的情感。 教学...
本课主题为“地球——我们的家园”,旨在教育六年级学生了解地球作为我们唯一的生存家园的重要性和环境问题的严重性。教学设计围绕两个主要部分展开:一是认识我们生存的家园,二是环境问题对人类生存的警示。 1. *...
1. 教育资源:文档是一个针对六年级下册道德与法治课程的教学设计,具体为第4课“地球——我们的家园”。这表明教育资源正在关注环境教育,旨在培养学生的环保意识。 2. 知识目标:教学设计中包含了三个层次的目标...
《医疗废物管理的法律问题探析——以湖南某湖流域为例》 医疗废物管理是公共卫生领域中的重要环节,它涉及到环境保护、公众健康和社会稳定等多个层面。这篇研究主要以湖南某湖流域为背景,深入探讨了我国医疗废物...
Stuxnet蠕虫攻击事件是信息安全领域的重要历史事件,其对工业控制系统的影响深远,不仅改变了工业信息安全的面貌,同时也为全球工业领域敲响了安全防范的警钟。以下是关于Stuxnet蠕虫攻击事件的综合知识点分析: 一...
例如,微软Azure证书问题和亚马逊断电事件都给使用BaaS模式的开发者敲响了警钟,他们需要对数据安全和云服务的可靠性有充分的认识。 从2010年开始,已经有至少40家企业专注于提供BaaS服务。国内也有专注于BaaS服务...
在这个数字化时代,网站的安全性是至关重要的,而"万能上传工具"的存在,无疑对那些忽视安全防护的系统敲响了警钟。 首先,我们需要理解什么是网页漏洞。在网页设计和开发过程中,如果程序员未能充分考虑到所有可能...
"地球——我们的家园 教案(教学设计)" 本教案旨在帮助六年级学生初步养成珍惜地球资源、保护地球环境的行为与习惯,了解地球是目前已知的惟一有生命存在的、适宜人类生存和发展的星球。通过教学,学生能初步归纳...
今年,集团内部连续发生的重大安全事故为全体人员敲响了警钟,强调了安全发展的必要性。全国第五个“安全生产年”和第12个“安全生产月”的到来,进一步凸显了当前阶段对安全工作的紧迫性和重要性。 “安全第一,...
勒索病毒敲响网络安全警钟.pdf