能完整地阅读和理解这段文字是很正常的。部分读者甚至可以跳
过这段引文,直接阅读后面的结论。而有兴趣的读者,可以在我
的网站上读到它的全文(http://doany/) 。
…21
…………………………………………………………Page 26……………………………………………………………
第 2 章 是懒人造就了方法
Soul:现在的程序是按照冯。诺伊曼的第一种方案做的,本来就是顺序的,
而不是同步的。CPU怎么说都是一条指令一条指令执行的。
我 :面向过程是对“流程”、“结构”和“编程方法”的高度概括。而
面向对象本身只解决了“结构”和“编程方法”的问题,而并没有
对“流程”加以改造。
Soul:确实如此。确实如此。
我 :对流程进一步概括的,是“事件驱动”程序模型。而这个模型不是
OO提出的,而是Windows的消息系统内置的。所以,现在很多人迷
惑于“对象”和“事件”,试图通过OO来解决一切的想法原本就是
很可笑的。
Soul:我先停下来,和你讨论这个问题,顺便补充到书里去。
我 :如果要了解事件驱动的本质,就应该追溯到Windows内核。这样就
涉及到线程、进程和窗体消息系统这些与OO无关的内容。所以,整
个RAD的编程模型是OO与OS一起构建的。现在很多的开发人员只知
其OO的外表,而看不到OS的内核,所以也就总是难以提高。
Soul:OO里面我觉得事件的概念是很牵强的,因为真正的对象之间是相互
作用;就好像作用力和反作用力;不会有个“顺序”的延时。
我 :应该留意到,整个的“事件”模型都是以“记录”和“消息”的方
式来传递的。也就是说,事件模型停留在“面向过程”编程时代使
用的“数据结构”的层面上。因此,也就不难明白,使用/不使用
OO都能写Windows程序。
我 :因为流程还是在“面向过程”时代。
Soul:所以所谓的面向对象的事件还是“顺序”的。所以我们经常要考虑
一个事件发生后对其他过程的影响,所以面向对象现在而言是牵强
的。
我 :如果你深入OS来看SEH,来看Messages,就知道这些东西原本就不
是为了“面向对象”而准备的。面向对象封装了这些,却无法改造
它们的流程和内核。因为OO的抽象层面并不是这个。
我 :事件的连续性并不是某种编程方法或者程序逻辑结构所决定的。正
如你前面所说的,那是CPU决定的事。
Soul:比如条件选择,其实也可以用一种对象来实现,而事实没有。这个
是因为cpu的特性和面向对象太麻烦。
我 :可能,将CPU做成面向对象的可能还是比较难于想象和理解。所以
MS才启动 Framework。我不认为在面向对象方法上有什么
…22
…………………………………………………………Page 27……………………………………………………………
『大道至简』
超越,也不认为它的FCL库会有什么奇特的地方。——除了它们足
够庞大。但是我认为,如果有一天OS也是用 Framework来编写
的,OS一级的消息系统、异常机制、线程机制等等都是的,都
是面向对象的。那么,在这个基础上,将“事件驱动”并入OO层面
的模型,才有可能。
Soul:所以我发觉面向对象的思维第一不可能彻底,第二只能用在总体分
析层上。在很多时候,实质上我们只是把一个顺序的流程折叠成对
象。
我 :倒也不是不可能彻底。有绝对OO的模型,这样的模型我见过。哈
哈~~但说实在的,我觉得小应用用“绝对OO”的方式来编写,有
失“应用”的本意。我们做东西只是要“用”,而不是研究它用的
是什么模型。所以,“Hello World”也用OO方式实现,原本就只
是出现在教科书中的Sample罢了。哈哈。
Soul:还有不可能用彻底的面向对象方法来表达世界。 因为这个世界不
是面向对象的。 是关系网络图,面向对象只是树,只能片面的表
达世界。所以很多时候面向对象去解决问题会非常痛苦。所以编程
退到数据结构更合理,哈哈。
我 :如果内存是“层状存取”的,那么我们的“数据结构”就可以基于
多层来形成“多层数据结构”体系。如果内存是“树状存取”的,
那么我们当然可以用“树”的方式来存取。——可惜我们只有顺序
存取的内存。
我 :程序=数据+算法
——这个是面向过程时代的事。
程序=数据+算法+方法
——在OO时代,我们看到了事件驱动和模型驱动,所以出现了“方
法”问题。
Soul:我的经验是:总体结构…》面向对象,关系…》数据结构,实现…》算法
Soul:看来我们对面向对象的认识还是比较一致的。
我第一次提到我对程序的理解是“程序=数据+算法+
方法”,便是在这一次与 Soul 的交谈之中。在这次的交谈
…23
…………………………………………………………Page 28……………………………………………………………
第 2 章 是懒人造就了方法
中的思考仍有些不成熟的地方,例如我完全忽略了在面向
过程时代的“方法”问题。实际上面向过程开发也是有相
关的“方法”的。
所谓“面向过程开发”,其实是对“结构化程序设计”
在代码阶段的一个习惯性的说法。而我忽略了这个阶段的
“方法”的根本原因,是即使没有任何“方法”的存在,
只需要有了“单元(Unit) ”和“模块(Module) ”的概念,
在面向过程时代,一样可以做出任意大型的程序。在那个
时代,“方法”问题并不会象鼻子一样凸显在每一个程序
员的面前。
面向过程开发中,“过程(procedure) ”是 CPU 提供的,
“单元(unit) ”则是编译器提供的(机制) 。程序员不需要(至
少是不必须)再造就什么“方法”,就可以进行愚公式的开
发工作了。
如果不出现面向对象的话,这样伟大的工程可能还要
再干一百年……
而与“面向对象”是否出现完全无关的一个东西,却
因为“过程”和“单元”的出现而出现了。这就是“工程
(engineering )”。
…24
…………………………………………………………Page 29……………………………………………………………
第3章 团队缺乏的不只是管理
“言人三为众,虽难尽继,取其功尤高者一人继之,
於名为众矣。”
——《汉书·高惠高后文功臣表序》颜师古注
1。 三个人的团队
①
《汉书》中说“言人三为众 ”,是指三个人就算得上
是“众”了。这里的“众”应该理解成一个群体,亦或者
说是一个团队。
团队是至少以三个人为规模的。这有其合理性。为什
么呢?首先一个人算不得团队,那是个体。两个人则互相
支撑,古文中“从”字是二人互立,就是这个意思。然而
二人互立并不算团队,因为没有监督。三个人便可以构成
团队,这样便有了团队的一些基本特性:主从、监督和责
任。
一个人的开发行为可以成功,这取决于个人努力。大
家熟知的 KV100 、KV200 反病毒软件?
小说推荐
- 软件工程思想
- 作者:林锐前 言 在60年代计算机发展初期,程序设计是少数聪明人干的事。他们的智力与技能超群,编写的程序既能控制弱智的计算机,又能让别人看不懂、不会用。那个时期编程就跟捏泥巴一样随心所欲,于是他们很过分地把程序的集合称为软件,以便自己开心或伤心时再把程序捏个面目全非。人们就在这种美滋滋的感觉下热情地
- 最新章:第53章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 最新章:第295章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- Linux实用培训教程(PDF)
- -Page 1-rrktqt的个人空间 Linux实用培训教程第一部分 作者:红联Linux实用培训教程第一部分-共三部分解的Linux知识,循序渐进的介绍Linux相关知识,从入门到提高,希望对所有学习Linux的朋友都有帮助 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章
- 最新章:第42章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章