`
softstone
  • 浏览: 481183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

OO以后是什么

Tinkler

(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)

 

  按照技术由概念到原型再到产品的5--5--5规则,面向对象技术现在已经走向成熟,是时候该考虑OO以后是什么了。在这个还没有出现新技术标准的时期,每个人都有权力去思考,以下就是我关于OO以后的思考。

  OO之后是什么呢?我认为是FO--Function Oriented(面向职能)。这里的Function不同于我们在当前编程所用的函数Function。这里的Function指职能模块。所谓职能模块,是指可独立完成特定任务,而对无力完成的任务可自行找到具备完成该任务功能的其它职能模块,并与之建立联系以合力完成工作的功能体。

  在阐述我的理由之前,先来看一看我们经历了什么。我们首先经历了PO--面向过程,然后是OO--面向对象。为什么会是这样一个过程呢?因为它是一个由具体变得越来越抽象的过程。人为了更轻松的解决问题,总是希望尽可能抽象的描述问题、解决问题,过于具体有时候会使人感到很痛苦。在面向过程中,我们的方法是“先做什么,再做什么,最后做什么”,这就好像一个成年人做事的方法,他知道每一步该干什么,它按那个步骤去干。在面向对象中,我们的方法是“不管对象是怎么实现的,我们只需知道它可以干什么,怎么让它去干”,这就像一个孩子的做事方法,他不知道那个东西是怎么来的,他只知道那个东西可以用来干什么以及利用它去干他想干的事。管它板凳是怎么做的呢?它可以拿来坐就行啦!更小的孩子是怎么做的呢?他们甚至还不知道板凳可以拿来坐。很简单,“妈咪,我要……”管他妈妈要去干什么或要请谁帮忙干什么呢?反正妈妈会把一切办好,妈妈是万能的。

  再来看一看我们的工业生产。一开始是手工作坊,一个人从头做到尾,一步一步地做,就好像OP。然后是机器化大生产,各台机器在那造着不同的零件,然后将它们组装到一块;造零件的只知道一个零件单独的作用,但不知道它到底是用到自行车上还是飞机上;组装的则不用知道零件是从哪来的,是谁做的;这就好像是OO。现在的模式是什么呢?公司接到生意,再将生意分散委托给别人做;需要法律顾问,到律师楼请律师;需要企划,找公共关系公司;需要做广告,找广告公司;生产找专门的制造公司;自己公司需要做的就是接到生意,干自己公司可以干的,将干不了和自己干效益不高的部分交给专门的公司干。

  职能模块就是“妈妈”,就是现在的公司。它干自己可以干的任务;对于干不了的,它知道到那可以找到能干这个任务的模块,并与之协作共同完成工作。顾客将问题交给软件人员,软件人员完成包含职能模块A的程序并将之提交给顾客。顾客使用该程序解决问题,模块A完成它能完成的部分,不能完成的部分由A自动去寻找可以完成剩余部分的B、C、D,B、C、D又可以去寻找E、F、G、H……再一级一级反馈回到A,由A组装成结果提交给顾客。

  以上是通过其它领域的情况推出OO以后是FO的,那么在我们的计算机领域有些什么来支持这种想法呢?大家知道,在计算机领域关于程序有过三个公式:

  1、程序=数据结构+算法

  2、程序=逻辑+控制

  3、程序={对象1,对象2,……,对象n}  对象=数据结构+方法

  第一个公式是FO时代提出的,第三个公式是OO时代提出的。可以看出第三个公式中关于对象的定义与第一个公式中程序的定义的相似性。事实上对象和以前的程序的确很相似,它所缺乏的就是程序的控制结构,因此不论是框架编程还是控件编程,都需由程序员来完成控制结构。现在我们可以想象,数据结构和方法相结合产生对象,下一步干什么呢?当然是将控制结合进去。这就是我们的职能模块,结合了控制的、自动的、智能的模块。

  大家知道,不久前Microsoft公布了其“.net”计划。它以后的产品将在本地机上实现基本的功能,而更高端的功能将由程序向Microsoft的服务器提出请求,由服务器来完成。这虽然是由客户端软件向固定地址提出请求,不是由模块自身完成且缺乏智能性,但是我们仍然可以将其看作是FO的一种很原始很原始的雏形。

  实现FO需要什么呢?需要高速智能网络、智能接口、分布式技术、并行技术,最重要的是需要一个国际化的管理机构。

  为什么需要这些呢?很显然,面向职能是基于全球性的Internet的,这就必然用到分布式技术。大家知道,分布式技术最大的问题就是网络上大量信息的传输,这需要一个高速的Internet。信息在网络上消耗了时间,用并行技术可弥补回来,以空间换时间。职能模块要求自己去寻找可帮助其完成任务的其它模块,当前的网络办不到这一点,这需要的是一个智能网络。模块A需要其它模块与之协作时,要将其要求提出并发消息到网络上的模块搜索器,模块搜索器将找到一到多个具有所要求功能的模块,模块A要找到最符合自己要求的模块B,并按B的接口要求发送B所要求的信息;与此同时,B要能很好的描述自己的功能,很确切的提出自己的要求,并能从A发送来的消息中提取自己需要的信息,这就要求智能模块拥有智能接口。智能模块的标准的定义、大量模块的登记、模块信息的组织、模块使用的协调等等都需要一个国际化的组织来进行管理。

  我们现在又有什么来支持这些呢?提到分布式计算,当然会想到CORBA。事实上,CORBA和我们这职能模块的工作方式是很相似的。使用职能模块,在模块完成不了工作时,通过网络向其它模块求助。CORBA应用程序也是通过向Smart Agent发送消息,再通过smart agent找到相应的CORBA对象来完成工作。但CORBA对象的接口是如此的确定,大量的控制工作仍是由程序员完成。职能模块的接口是模糊的、智能化的,一切控制由模块自己去完成。寻找模块必须通过高速智能网络。高速现在已越来越不成为问题了。而智能化,由CISCO公司提出的基于DEN的智能网络解决方案让人看到解决问题的曙光。最麻烦的是智能接口,这需要极端先进的人工智能技术。人工神经元网络也许是解决问题的途径,但一切离彻底解决问题还太遥远。   当一切都解决时,我们桌面上的应用程序将变得如此的简单,如此的相似。它们拥有不同的界面,但它们所做的事情都一样:接受命令,联系模块搜索器,将一切具体的工作都交给模块供应商提供的职能模块去干吧!

  在机器能理解自然语言的时候,用语言命令计算机工作的时代自然也就到来了!

分享到:
评论

相关推荐

    23个设计模式标准OO结构

    6. 备忘录模式(Memento):在不破坏封装性的前提下,捕获并存储一个对象的内部状态,以便以后恢复。 7. 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    23种设计模式,OO思想

    标题和描述中提到的“23种设计模式,OO思想”,是软件工程领域的一个核心概念,尤其是对于面向对象编程(Object-Oriented Programming,简称OO)的深入理解和实践至关重要。设计模式是由Erich Gamma、Richard Helm、...

    Java OO 试题.doc

    12. **命令行参数**: 执行Java程序时,命令行参数跟在类名后面,没有特殊分隔符,所以正确方式是B `java AnyClass a b c`。 13. **substring()**: 该方法用于截取字符串的一部分,从指定索引开始到另一个指定索引...

    字母组合oo的发音规律[学习].doc

    当"oo"组合出现在单词的重读音节末尾,且后面跟一个辅音时,通常读作长音/u:/.例如: - food(食物)、mood(心情)、roof(屋顶)、proof(证据)、waterproof(防水的)、shockproof(防震的)、hoof(蹄子)、...

    作业1:程序设计语言的OO特性调研报告1

    6. **PHP语言的OO特性**:PHP在版本5及以后开始支持完善的OOP,包括类、对象、接口、继承、抽象类和final关键字等。尽管PHP最初设计为脚本语言,但其OOP特性使其也能开发大型复杂应用。 7. **Java语言的OO特性**:...

    java-oo:面向对象的一些 Java 示例

    面向对象编程(Object-Oriented Programming,简称OOP)是Java语言的核心特性,它通过...在`java-oo-master`这个项目中,可能包含了这些概念的实例代码,通过学习和实践这些示例,可以进一步加深对面向对象编程的理解。

    OO DiskRecovery V6.0.6298 --专业数据恢复软件

    DiskRecovery 是一个专业的文件和磁盘数据恢复软件 ,它可以梳理硬盘、内存或是数码相机的每个部分,找到丢失的文件,甚至是格式化以后的文件恢复数据。支持300多种的文件类型Word documents, Excel workbooks, ...

    126oo电影网站

    <p> 如:SiteSetup="/Movie/" 这样即可,细节要注意目录后面要带"/" <p>3:将修改后的完整安装包直接上传至二级目录即可 ************************************************** <p>SQL数据库 ***********************...

    年Unit 3 Who's that man课堂练习题及答案陕旅版4精选.doc

    第四题考查量词的使用,a lot of后面可以接可数名词复数或不可数名词,所以选C. a lot of,表示李明读了很多书并对科学产生了浓厚的兴趣。第五题询问老人是谁,回答用He,所以选A. His name is Mi Mi。 接下来是...

    ABAP ALV取消整数小数点后面的0

    5. 解释固定值的作用:为什么要给`REFFI`赋值?原因在于ALV在计算汇总(如小计、总计)时会根据字段值进行。如果直接使用原数值字段(如`MEINS`),ALV可能会尝试计算基于这些数值的总计。而当我们用固定值的`REFFI`...

    文华财经指标公式源码WH6指标公式赢顺云指标公式最好用的技术指标.doc

    ` 如果 `CON1`(后面会解释)为真,并且 `OO` 没有变化,那么在高点 `H` 处绘制一个图标。`DRAWICON` 函数用于在图表上放置图标,`1` 代表图标类型,`VALIGN2` 控制图标的垂直对齐方式。 5. `CON1` 的定义: - `...

    JS也玩OO继承

    apply也差不多,只不过后面调用的参数是数组,详细可以自己参考MSScript5.6说明 Bencalie 还记得以前你跟我说call apply的使用方法么?这回这个答案算圆满了吧? [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]...

    新版PEP五上Unit4whatcanyoudoAlet'sspell1PPT课件.pptx

    这旨在让学生了解个人技能的表达,并为后面的拼读练习做准备。第3页开始,课件进入了拼读训练环节,要求学生拼写一系列含有"oo"字母组合的单词,如"book"和"football"等,帮助学生熟悉和理解"oo"的发音。 第5页至第...

    6.linux8.0-通配符添加.pdf

    这意味着对于每个前面的模式(`xx`、`oo` 和 `tt`),它都会尝试用0到9的每个数字替换`y`后面的位置。 然而,根据输出,我们看到许多 "No such file or directory" 的错误,这表明 `/dev` 目录下不存在以这些模式...

    OO系统分析员之路--用例分析系列(二)

    (5)--用户、业务用例和业务场景写点什么呢?按照原先的设想,应该开始动手写如何从业务用例转化到概念用例和系统用例,不过老实说这一步需要的是经验居多,而很难找出一个普适的步骤来。先暂时放一放吧,以后一定...

    山东省龙口市第五中学2020学年七年级英语下学期期中试题 五四制.doc

    "spoon", "cartoon"和"schoolwork"中的"oo"发音相同,而"cook"中的"oo"发音不同,所以答案是C。 8. 第8题考查mind后接动名词。"mind not doing sth."表示“介意不做某事”,所以答案是C。 9. 第9题考查宾语从句。...

    FDS_CAT_VEICULOS:POC sobre GIT的Trabalho de aula pararealizaçãoo

    标题"FDS_CAT_VEICULOS:POC sobre GIT的Trabalho de aula pararealizaçãoo"指的是一个关于使用Git进行项目管理的课堂作业或概念验证(Proof of Concept, POC)。这个项目可能涉及到Java编程语言,因为标签中提到了...

    八年级英语中期考试题.doc

    - 第2题考察的是字母组合"oo"的发音,B项中的"toothbrush"中的"oo"发/u/音,而其他选项"C.took"、"D.bedroom"中的"oo"都发/uː/音,A项"football"的"oo"则发/ʊ/音。 2. **词汇**:这部分要求学生掌握词汇的变化...

    自然码输入法珍藏版

    如:输入“唐太宗”,再在后面直接添加“oo”,得到:“谥号:唐太宗\名字:李世民\公元:627-649\年号:贞观\在位:28年\国都:长安。” 8、无转换、零记忆输入偏旁部首及特殊符号。如输入“lddmuv(两点水)”,...

Global site tag (gtag.js) - Google Analytics