1、什么是软件开发?
软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界映射到计算机
世界的过程;
现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于1937年提出
的图灵机模型。随后不到十年,电子计算机就诞生了(1945)。(埃尼亚克)
我们都知道,它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发
(如果可以称之为软件开发的话)与现在的大不相同。为了算一道题,要有人事先把完成
加减乘除等各类运算的部件像搭积木那样搭起来,如果换一道题,则要把这些部件分解
开来,根据新的要求重新搭建,效率极低(与现在比)。
现代电子计算机的体系结构及实际计算模型来自冯诺依曼的思想。1946年他和他的
同事们发现了埃尼亚克的缺陷,发表了一份报告,提出了程序放入内存,顺序执行的思想
,这样,当算一道新题时就只需采取改变计算机中的程序的“软”的方法。
英国的科学家维尔克斯实现了冯诺依曼的思想,领导研制了“艾克萨克”,在技术
上比埃尼亚克来了个大的飞跃。
因此,现在的计算机通常被称为冯诺依曼计算机。
软件开发的历史也从此正式开始。
早期程序员们使用机器语言来进行编程运算;随着编译技术的出现,人们设计了许多
更高级别的语言;这些语言摆脱了机器语言繁琐的细节,更接近于人的自然语言,迅速流
行开来。
据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,它们的计算能力
都等价于图灵机。已经证明,一个计算机语言,只要除了赋值语句之外,还包括顺序语
句,条件语句和循环语句,它的计算能力即相当于图灵机。
这里当然要排除其他技术因素的影响,如程序长度,变量个数,数据精度等。
由于图灵机的想法是把问题转化为一步一步按规则执行的机械求解过程,各种计算
机语言也不过都是某种形式语言,因此软件开发的过程实质上就是程序员们对客观世界问
题域的形式化的过程。
程序员们先建立问题的模型(形式化),再用计算机语言加以合适的表达,最后再输入
计算机里进行计算。
2从po(面向过程)到oo(面向对象)
从上一节的论述我们知道:
软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界(问题域)映射到
计算机世界的过程;如下图:
现实世界问题域-----建立模型(借助某种建模思想)------编程实现
(借助某种编程语言)-------计算机世界执行求解
在谈论oo之前,先让我们回顾一下高级语言的历史
最早的高级语言大约诞生于1945年,是德国人楚译为他的z-4计算机设计的pn
calcul,比第一台电子计算机还早几个月;在电子计算机上实现的第一个高级语言是美国
尤尼法克公司于1952年研制成功的shortde;而真正得到推广使用,
至今仍在流行的第一个高级语言是美国的计算机科学家巴科斯设计,并于1956年首先在
ib公司的计算机上实现的fortran语言
早期的高级语言主要是应用于科学和工程计算,其代表作有fortran和algol60计算机
进入商业和行政管理领域以后,出现了bol和rpg等便于商界使用的语言近年来,这类语
言和数据库技术,图形界面技术(可视化编程),面向对象的思想及rad(rapidapplication
devolopnt)的概念相结合,形成了一批更方便使用的所谓第四代语言(4gl),如
powerbuilder,delphi,vb等
前一类应用于科学和工程计算的大型语言相对来说更为基础,因而也更为灵活,应用范
围更为广泛在fortran,basic(学习型)之后,自70年代以来,模块特征更明显,简单易用
,可靠性强的pascal异军突起,在世界范围内广泛流行但进入80年代以后,
它的地位又逐渐为更实用的c语言替代到现在,c语言的地位已相当于一种"高级汇编语
言"了
80年代后期,面向对象的语言开始浮出水面,c++借助使用c语言的庞大程序员队伍,
一举建立了面向对象语言的老大地位从而oo的思想正式统治了整个软件开发界c++的
流行甚至使得美国军方从80年开始大力扶植的ada语言还未及推广便胎死腹中了
90年代以后,计算机世界更是发生了天翻地覆的变化,原先的单机平台让位于web,
"网络就是计算机",新的语言不仅要是oo的,visual的,更要是基于web的java语言借
ter的东风,横空出世,一夜红遍天下,变化之快令人瞠目结舌
上述这些变化,表面是不同的编程工具在城头变幻大王旗,但其背后反映的却是一种
更为深刻的认识论的改变,即你是用何种观点来认识这个世界的?
在po中,程序员们分析了问题域之后,得到一个po的模型,其中常见的词语是变量,
函数,过程等;
po:现实世界-----流程图(变量,函数)------po语言-------执行求解
在oo中,程序员们先得到一个oo的模型,其中常见的词语是类,对象,方法,消息等;
oo:现实世界-----类图(对象,方法)------oo语言-------执行求解
我们可以看到:
po更接近于计算机世界的物理实现;
oo则更符合于人们的认识习惯;
如果说,软件危机的根源在于人们认识表达的过程(不断反复,逐步深化)和冯诺依曼
计算机的实现过程(顺序执行)之间存在巨大鸿沟的话,那么从po到oo意味这这鸿沟在逐
渐缩小;
oo作为一种思想及编程语言,为软件开发的整个过程--从分析设计到dg--提供了
一个完整解决方案oo堪称是软件发展取得的里程碑式的伟大成就,人们无不为之喝彩!
一提到oo,我们将会联想到c++,salltalk,siu,联想到ecase,rose,r
booch,jacbon以及rational公司,但却很少有人会提及维特跟斯坦(wittnste)
然而,正是这位充满传奇色彩的哲学家,不仅第一次清楚地表达了oo的思想,更进一
步提及了oo以后的事情,及其最后的极限所在
在目前这个变幻莫测的时代重温并认真思考一下这位先哲的思想,或许能使我们更加
清醒,更明确前方道路的漫长
3维特跟斯坦(wittnste)与oo
维特跟斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一。他生前只于1922年出
版了一本著作——《逻辑哲学论》(tractatlogi-philophic)。
在该书中,他阐述了一种世界观,或者说一种认识世界的观点,这种观点,在六七十年
后的今天,终于由一种哲学思想沉淀到技术的层面上来,成为计算机业界的宠儿,这就是
“oo”,object-oriented,面向对象,或物件导向(港台用语)。
让我们先扯得远点儿,(可能扯得确实远了点),先谈谈这个人,再谈他《逻辑哲学
论》一书中的oo思想。
对西方哲学感兴趣的朋友都知道,在西方哲学史上发生过两次深刻的转向。一次是
由“本体论”向“认识论”的转向;另一次是由“认识论”到“方法论”的转向。
古希腊罗马时代的西方哲学,被称为“本体论”的时代,那时哲学家们最关心的是
世界的本源问题,即世界是由什么组成的?世界的本质是什么?等等这些探究世界根本
的问题。从泰勒斯的“万物皆水”到“四元素”说,“原子论”,再到伯拉图的“绝对
理念”,都对这一问题提出了各自的见解。
基督教借助信仰的影响力量(犹太教传统)和世俗的政治专制力量(罗马传统),以上
帝这一概念对此问题作出终结性回答,持异议者将有生命危险,布鲁诺即因此被烧死。
当然,基督教也出了几个杰出的哲学家,他们继承了希腊的理性传统,混合了圣经的思
想,构造了宏伟的基督教哲学体系。他们的代表人物是奥古斯丁和托马斯阿奎拿。
阿奎拿曾提出了证明上帝存在的五种方法(希腊理性传统)。
中世纪之后,随着文艺复兴运动的兴起,人们开始从上帝的阴影下走出,发现了自身
的作用,即人的价值。
以笛卡尔的“我思故我在”为标志,哲学开始了由“本体论”向“认识论”的转变;这一
时期哲学关心的是人的认识的问题,具体的流派以各自侧重的不同常分为“唯理论”和
“经验论”,前者注重理论演绎,以笛卡尔等人为代表;后者则注重感觉和经验,代表
人物是洛克,培根等。
科学其实就是融合了“唯理论”和“经验论”的长处而发展壮大的。既强调试验和
观察,运用归纳法,也重视利用数学和逻辑从归纳的结果出发,构造理论框架,演绎出
新的科学定理。
到了康德以后,尤其是本世纪初,哲学的核心问题开始由“认识论”转向“方法论
”,哲学关心的核心问题是认识如何实现的问题。这一时期,哲学家们开始认识到语言
对于人的认识的特殊地位,他们纷纷从研究语言出发来研究哲学。
其中甚至有些人极端的认为以前的所有哲学问题不过是语言的问题而已。
哲学的这次转向有时也被称为是“语言的转向”,新的哲学观点被冠以“语言哲学
”或“分析哲学”的名称。
“语言哲学”的发展经历了两个阶段,或者说可以被进一步分为两个学派:“逻辑
分析派”和“日常语言派”。维特跟斯坦的引人瞩目之处在于:他在前期持逻辑分析的观
点,后期则持日常语言的观点。
总结一下上面论述的要点,现在我们知道:
西方哲学的发展,经历了两次变革,一次是认识论转向;一次是语言转向;第一次转
向使哲学的基础从本体论和形而上学变为认识论,从研究超验的存在物转到研究认识的主
体和主客体关系;第二次转向把对主客体的关系的研究变成了对主体间的交流和传达问题的研究。把对主体的研
究从观念和思想的领域转到了语言的领域(语句及其意义);这两次转向的代表人物分别是
笛卡尔和维特跟斯坦。
下面是维特跟斯坦(wittnste)的小传。
维特跟斯坦1889年生于维也纳。
青年时期的教育首先使他成为一名航空专业工科研究生,1908-1911,曼彻斯特。23岁时
他到著名的剑桥大学学习哲学,成为罗素的学生。据说维特跟斯坦当时正为自己未来的
发展方向感到迷茫,工科还是哲学?一天晚上他带着自己的一些手稿(杂感之类的东西)
来找罗素,要罗素读一下,然后判断自己是否是学哲学的料,如果不行的话,就准备卷
铺盖走人。罗素拿起他的手稿,只看了头一句话,就坚决地对他说,你不学哲学太可
惜了之类的话。维特跟斯坦这才坚定了投身哲学的决心。
在第一次世界大战期间(1914-1918),维特跟斯坦参加奥地利军队,后来被俘。
正是在这段时间里,他完成了自己的成名作,《逻辑哲学论》(tractatlogi-ph
ilophic)。该书于1922年以英文出版,是他生前出版的唯一的一本著作。
在这本书中,维特跟斯坦阐述了自己的"逻辑原子论"的哲学观点,成为该学派的
代表人物之一。其他著名的“逻辑原子主义者”包括罗素,怀海特,弗雷格等。
该书的出版开创了哲学研究的新方向。
完成这本书后,维特跟斯坦认为自己已经解决了所有的哲学问题,于是他就真的
放弃了哲学,先是作了一个花匠,后来作了一名小学教师。需要说明的是,他家很富
有,但他主动放弃了对巨额遗产的继承权,自愿过一种朴素简单的生活。
大约10年的时间,维特跟斯坦脱离了哲学界。但后来,他对自己在《逻辑哲学论》
中表述的哲学的可靠性产生了深深的怀疑。于是,在1929年他重新返回剑桥,成为三一
学院的老师。1939年他得到了教授的职称。但在第二次世界大战期间,他却以一名医生
的身份为军队服务。1947年维特跟斯坦从剑桥退休,定居于爱尔兰。这一时期他对哲学
的思考形成了他后期的哲学思想。1949年他去了趟美国,当年回来时不幸身患癌症,
1951年在牛津与世长辞。
死后,他后期的思考被整理出版,《哲学研究》(philophicalvestigations)
,《关于确定性》(oncertaty)等等,开创了语言哲学研究的另一个新的方向。
以上我罗里罗唆,主要是介绍了维特跟斯坦在哲学史上的地位,及其颇具传奇色彩
的一生。兴之所至,请大家见谅。
下面我们进入主题,谈一谈《逻辑哲学论》及其中表述的oo思想。
4逻辑哲学论中的oo
逻辑哲学论是维特根斯坦生前出版的唯一著作,也是他的成名之作书中的观点
反映了他前期的哲学思考,通常被冠以"逻辑原子论"的标签维特根斯坦在前期认为:
传统的形而上学的混乱和困惑是由于误用语言所致;把哲学
从"语言病"中解放出来,是哲学的重要任务他力图建立"经过语言分析的澄清活动"的
本体论和认识论;维特根斯坦甚至宣称:哲学的唯一任务就是治疗其所患的语言病,
一旦这个目的达到,哲学就没有别的事要作了,也就没有必要存在了
维特根斯坦认为他的逻辑哲学论正是在上述意义上确凿无疑的从根本上解决了哲
学的基本问题他的基本解决方法是:为思想的表述划一条界限,分清什么是能够说的,
什么是不能说的他认为,凡是能够说的东西,都可以由经验科学说清楚,对于不能说
的,则应保持沉默
逻辑哲学论一书只有薄薄的30页纸书的结构也很独特,有点像古龙的小说?
共分7节,以如下结构排列:
1theworldiseverythgthatisthecase
11theworldisthetotalityoffacts,notofthgs
111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)
112xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)
12theworlddividestofacts
121xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)
122xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)
2whatisthecase,thefact,istheexistenceofatoicfacts
21xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)
7whereofonecannotspeak,thereofonetbesilent
该书语言简洁,结构独特,内涵丰富,略带神秘色彩,因此有人称之为西方的"道德
经"
下面我们将进入此书,体会一下这本在20年代出版的书中蕴含的oo思想(中英文对
照)
说明:中文是我自己翻译的,不妥之处,敬请指教
该书第一节第一句话劈头说到:
1世界就是所有为真的一切
(theworldiseverythgthatisthecase)
这里,"isthecase"即"istrueorrrect",也就是我们在数理逻辑中所
说的那个"真",是世界的实际情况
接下来是对1这句话的进一步说明:
11世界是所有事实,而非事物,的总和
(theworldisthetotalityoffacts,notofthgs)
对11这句话又作了进一步说明:
111世界是由事实所决定的,并且由全部事实所决定
(theworldisdeteredbythefacts,and
bythesebegallthefacts)
112因为事实的总和既断定了什么是真的,也断定了什么不是真的
(forthetotalityoffactsdeteresbothwhatisthe
case,andalallthatisnotthecase)
113逻辑空间中的事实(所有为真的)就是整个世界
(thefactslogicalspacearetheworld)
12世界可以分解为事实
(theworlddividestofacts)
121任一事实或者为真,或者不为真,其它所有事实皆然
(anyonecaneitherbethecaseornotbethecase,
andeverythlsereasthesa)
小结1:1主要想说明---世界由实际发生的一切事实(facts)所组成
第二节2那些为真的事实,是由原子事实组成的
(whatisthecase,thefact,istheexistenceofatoicfacts)
201一个原子事实是多个对象(或实体,事物)的组合(object!!)
anatoicfactisabationofobjects(entities,thgs)
2011事物的一个基本性质就是,它可以成为某个原子事实的一个组成
部分
(itisessentialtoathgthatitcanbeanstitute
partofanatoicfact)
2013每个事物都是,正如假设的那样,处于一个由可能的原子事实
空间之中;我可以想象这样的空间为空,我却无法想象一个无原子事实空间可依
的事物
(everythgis,asiere,aspaceofpossible
atoicfacts;
icanthkofthisspaceasepty,butnotofthe
thgwithoutthespace)
2014对象包含了事务的全部状态的可能性(?)
(objectsntathepossibilityofallstatefaffairs)
202对象是简单的(基本的)
theobjectissiple
20201每个关于复杂事物的陈述都可以分解为对其组成部分的陈述,
而且能被分解成能完全描述这些复杂事物的陈述
(everystatentaboutplexescanbeanalysedtoa
statentabouttheirnstituentparts,andto
thosepropositionswhichpletely
describetheplee)
2021对象形成了世界的基础因而它们不会是复合物
(objectsforthesubstanceoftheworld
thereforetheycannnotbepound)
2022尽管我们主观想象中的世界和现实的客观世界是不同的,
但是它们之间显然有些东西
----一种模式----是相同的
(itisclearthathoweverdifferentfrotherealone
aniagedworldaybe
itthavethg--afor--onwith
therealworld)
2023这种固定不变的模式由对象组成
(thisfixedfornsistftheobjects)
例如:我们在头脑中想象出来"一个人骑着一辆自行车"这幅情景和
客观世界中实际发生的情景可能是不是完全相同的,但它们
二者之间都具有一种相同的结构:人---骑----自行车正是由于这个相同的结构,我
们的主观世界才和客观世界发生了一致的联系,我们的表达
才成为可能这个结构,是由更简单的对象组成的,如人,自行车
2026只有存在对象,才能有一个固定模式的世界的存在
(onlyifthereareobjectscantherebeafixed
foroftheworld)
203在原子事实中,对象如一条锁链相互连接
(theatoicfactobjectshangoneanother,like
thelkfacha)
2031在原子事实中,对象以某种确定的方式相连
(theatoicfacttheobjectsarebeda
difiteway)
2032原子事实中对象相互连接的方式即是原子事实的结构
(thewaywhichobjectshangtotherthe
atoicfactis
thestructureoftheatoicfact)
2034事实的结构存在于原子事实的结构之中
(thestructureofthefactnsists
thestructureftheatoicfacts)
204存在的原子事实的总和即是世界
(thetotalityofexistentatoicfactsistheworld)
205存在的原子事实的总和也确定了那些原子事实不存在
(thetotalityofexistenceatoicfactsaldeteres
whichatoicfactsdonotexist)
21我们为自己产生事实的图画
(weaketoourselvespictureffacts)
说明:指我们的主观世界中产生一幅客观世界的图画,即主观
对客观的认识图景
212那图画是现实的模型
thepictureisaodelofreality
213对象(现实世界中的)对应于那图画中的各元素
totheobjectsrrespondthepicturetheelets
ofthepicture
2131那图画中的各元素代表对象(现实世界中的)
theelentfpicturestand,thepicture,
fortheobjects
----《完》----
;/逻辑哲学论/逻辑哲学论/逻辑哲学论/逻辑哲学论