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

OO,OO以后,及其极限(1)

阅读更多

OO,OO以后,及其极限(1)

请作者与我们联系
(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)

1、什么是软件开发?

  软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界映射到计算机世界的过程;

  现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于1937年提出的图灵机模型。 随后不到十年,电子计算机就诞生了(1945)。(埃尼亚克)

  我们都知道,它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发(如果可以称之为软件开发的话)与现在的大不相同。为了算一道题,要有人事先把完成加减乘除等各类运算的部件像搭积木那样搭起来,如果换一道题,则要把这些部件分解开来,根据新的要求重新搭建,效率极低(与现在比)。

  现代电子计算机的体系结构及实际计算模型来自冯.诺依曼的思想。 1946年他和他的同事们发现了埃尼亚克的缺陷,发表了一份报告,提出了程序放入内存,顺序执行的思想,这样,当算一道新题时就只需采取改变计算机中的程序的“软”的方法。

  英国的科学家维尔克斯实现了冯.诺依曼的思想,领导研制了“艾克萨克”,在技术上比埃尼亚克来了个大的飞跃。

  因此,现在的计算机通常被称为冯.诺依曼计算机。

  软件开发的历史也从此正式开始。

  早期程序员们使用机器语言来进行编程运算;随着编译技术的出现,人们设计了许多更高级别的语言;这些语言摆脱了机器语言繁琐的细节,更接近于人的自然语言,迅速流行开来。   据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,它们的计算能力都等价于图灵机。 已经证明,一个计算机语言,只要除了赋值语句之外,还包括顺序语句,条件语句和循环语句,它的计算能力即相当于图灵机。 这里当然要排除其他技术因素的影响,如程序长度,变量个数,数据精度等。

  由于图灵机的想法是把问题转化为一步一步按规则执行的机械求解过程,各种计算机语言也不过都是某种形式语言,因此软件开发的过程实质上就是程序员们对客观世界问题域的形式化的过程。   程序员们先建立问题的模型(形式化),再用计算机语言加以合适的表达,最后再输入计算机里进行计算。


2 从 PO(面向过程)到OO(面向对象)

  从上一节的论述我们知道:

  软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界(问题域)映射到计算机世界的过程;如下图:

  现实世界问题域 → 建立模型(借助某种建模思想) → 编程实现(借助某种编程语言) → 计算机世界执行求解

  在谈论OO之前,先让我们回顾一下高级语言的历史。

  最早的高级语言大约诞生于1945年,是德国人楚译为他的Z-4计算机设计的Plan Calcul,比第一台电子计算机还早几个月;在电子计算机上实现的第一个高级语言是美国尤尼法克公司于1952年研制成功的Short Code;而真正得到推广使用,至今仍在流行的第一个高级语言是美国的计算机科学家巴科斯设计,并于1956年首先在IBM公司的计算机上实现的FORTRAN语言。

  早期的高级语言主要是应用于科学和工程计算,其代表作有FORTRAN和ALGOL60。计算机进入商业和行政管理领域以后,出现了COBOL和 RPG等便于商界使用的语言。近年来,这类语言和数据库技术,图形界面技术(可视化编程),面向对象的思想及RAD(Rapid Application Devolopment)的概念相结合,形成了一批更方便使用的所谓第四代语言(4GL),如Powerbuilder,Delphi,VB等。

  前一类应用于科学和工程计算的大型语言相对来说更为基础,因而也更为灵活,应用范围更为广泛。 在FORTRAN,BASIC(学习型)之后,自70年代以来,模块特征更明显,简单易用,可靠性强的PASCAL异军突起,在世界范围内广泛流行。 但进入80年代以后,它的地位又逐渐为更实用的C语言替代。 到现在,C语言的地位已相当于一种“高级汇编语言”了。

  80年代后期,面向对象的语言开始浮出水面,C++借助使用C语言的庞大程序员队伍,一举建立了面向对象语言的老大地位。从而OO的思想正式统治了整个软件开发界。C++的流行甚至使得美国军方从80年开始大力扶植的Ada语言还未及推广便胎死腹中了。

  90年代以后,计算机世界更是发生了天翻地覆的变化,原先的单机平台让位于WEB,“网络就是计算机”,新的语言不仅要是OO的,Visual的,更要是基于WEB的。 Java语言借INTERNET的东风,横空出世,一夜红遍天下,变化之快令人瞠目结舌。

  上述这些变化,表面是不同的编程工具在城头变幻大王旗,但其背后反映的却是一种更为深刻的认识论的改变,即你是用何种观点来认识这个世界的?   在PO中,程序员们分析了问题域之后,得到一个PO的模型,其中常见的词语是变量,函数,过程等;

  PO: 现实世界 → 流程图(变量,函数) → PO语言 → 执行求解

  在OO中,程序员们先得到一个OO的模型,其中常见的词语是类,对象,方法,消息等;

  OO: 现实世界 → 类图(对象,方法) → OO语言 → 执行求解

  我们可以看到:

  PO更接近于计算机世界的物理实现;OO则更符合于人们的认识习惯;

  如果说,软件危机的根源在于人们认识表达的过程(不断反复,逐步深化)和冯.诺依曼计算机的实现过程(顺序执行)之间存在巨大鸿沟的话,那么从PO到OO意味这这鸿沟在逐渐缩小;

  OO作为一种思想及编程语言,为软件开发的整个过程——从分析设计到coding——提供了一个完整解决方案。 OO堪称是软件发展取得的里程碑式的伟大成就,人们无不为之喝彩!

  一提到OO,我们将会联想到C++,smalltalk,simula,联想到Use Case,ROSE,Mr Jacboson 以及Rational公司,但却很少有人会提及维特跟斯坦(Wittgenstein)。 然而,正是这位充满传奇色彩的哲学家,不仅第一次清楚地表达了OO的思想,更进一步提及了OO以后的事情,及其最后的极限所在。

  在目前这个变幻莫测的时代重温并认真思考一下这位先哲的思想,或许能使我们更加清醒,更明确前方道路的漫长。

(未完待续)

分享到:
评论

相关推荐

    ABAP OOALV学习文档

    1. **交互性增强**:除了基本的数据展示外,OOALV还支持多种交互式操作,提高了用户的使用体验。 2. **定制化显示**:允许用户根据需求自定义列表的显示样式,包括布局、颜色、字体等。 3. **数据处理**:支持复杂的...

    OO4O简介以及其在VC++中的应用

    ### OO4O简介及其在VC++中的应用 #### 摘要 OO4O(Oracle Objects for OLE)是Oracle公司推出的一种高级底层接口,专为基于Oracle数据库的应用程序开发而设计。它提供了快速访问Oracle数据库的能力,并且兼容微软...

    OOALV常用功能完整简例

    标题中提及的“OOALV常用功能完整简例”,描述中说明了该简例包含的内容:热键单击、双击、帮助、编辑和自定义工具条等。OOALV是指面向对象的ALV,它是在SAP系统中常用的报表输出组件,用于将数据以表格形式展示。在...

    SAP ABAP开发学习——第10课:OOALV(视频教程)

    1. **SAP ABAP概述**:SAP ABAP(Advanced Business Application Programming)是SAP公司的主要编程语言,用于开发和自定义SAP R/3和SAP NetWeaver系统。它提供了各种功能,包括数据库交互、屏幕设计、报表生成和Web...

    oracle oo4o安装包part1

    oracle oo4o 817安装包oracle oo4o 817安装包oracle oo4o 817安装包

    实战OO 用例 建模

    实战OO_用例建模 实战OO_用例建模 实战OO_用例建模

    ABAP OOALV报表开发

    ABAP OOALV报表开发,定义变量,选择屏幕定义,创建类,调用函数

    oo2core_6_win64

     1、Windows 95/98/Me系统,将oo2core_6_win64.dll复制到C:\Windows\System目录下。  2、Windows NT/2000系统,将oo2core_6_win64.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10系统(64位系统对应...

    SAP OO ALV技术介绍.pdf

    SAP OO ALV技术介绍 SAP OO ALV技术是SAP系统中的一种报表控件类,通过调用cl_gui_alv_grid类的方法可以实现ALV报表的显示。OO ALV技术可以满足大多数ALV需求,但有时需要与后续的屏幕开发等集中在一个屏幕中,或者...

    ABAP OO的八个理由

    1. 数据封装与稳定性:ABAP面向对象(OO)编程的核心优势之一是数据封装,它将数据和操作数据的方法捆绑在一起,形成对象。这提高了程序的可维护性和稳定性,因为对象内部状态的改变对外部是隐藏的,减少了不必要的...

    实战OO的pdf自留备份

    《实战OO》是一本深入探讨面向对象(Object-Oriented, OO)编程技术的书籍,主要针对软件开发人员,特别是那些关注于软件设计流程和优化的开发者。此书的PDF版本是作者或读者为了个人学习和参考而留存的备份,包含了...

    面向对象需求分析(OO RES)

    面向对象需求分析(OO RES) 面向对象需求分析(Object-Oriented Requirements Engineering,OO RES)是一种基于面向对象技术的需求分析方法。该方法将需求分析过程分为三个主要阶段:问题域分析、需求定义和系统...

    OO4O(Oracle Objects for OLE C++ Class Library)

    Oracle Objects for OLE (OO4O) is a product designed to allow easy access to data stored in Oracle databases using any programming or scripting language that supports the Microsoft ...

    SAP OO ALV技术介绍.pptx

    SAP OO ALV技术介绍 SAP OO ALV技术是SAP系统中的一种报表控件类,通过调用cl_gui_alv_grid类的方法set_table_for_first_display可以实现ALV报表的显示。OO ALV技术相比于标准函数REUSE_ALV_GRID_DISPLAY和REUSE_...

    oracle_sdk(OO4O)

    2. **预编译语句**:预编译SQL语句可以提升执行效率,因为数据库只需解析一次SQL模板,之后只需替换参数即可。 3. **批处理**:批量执行相似的DML语句可以减少网络通信次数,提高执行速度。 **六、安全注意事项** ...

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV)

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV) 图文并茂,详细介绍了Fuction ALV 和OO ALV的相关开发 [SAP ABAP开发技术总结]ALV详解:Function ALV(一) [SAP ABAP开发技术总结]ALV详解:Function ALV...

    基于OO4O和VC 6.0 实现Oracle数据库操作C++源代码程序小实例

    1. **建立数据库连接**:在C++中使用OO4O时,首先需要建立到Oracle服务器的连接。这通常通过`OracleConnection`类实现,需要提供有效的数据库连接字符串,包含用户名、密码和数据库实例名。 2. **执行SQL语句**:`...

    需求分析_OO分析

    PPT,需求分析,OO分析前言,PPT,需求分析,OO分析前言,

    SAP OOALV

    #### 三、主要类及其用途 - **`cl_gui_alv_grid`**: 这个类是OOALV的核心类,负责ALV的基本功能和行为。开发者通常会实例化这个类,并通过其提供的方法来定制ALV的显示效果。 - **`cl_gui_custom_container`**: 用于...

Global site tag (gtag.js) - Google Analytics