二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad
zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c,pascal,fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。
指令就是指cpu直接能识别的代码,这个代码用来告诉cpu执行各种不同的计算或者设备访问。
程序就是由一系列的指令组成的,告诉cpu完成一个任务所需要的每一个步骤。
程序设计语言最初是就是直接对机器指令的直接翻译,也就是最早的汇编语言。
当然,宏汇编是后来才出现的了。
由于汇编语言编程很烦琐,很小的功能都需要写很多代码,不便于编写维护,所以后来出现了高级语言。
最开始的高级语言是针对科学计算的,真正商用化的高级语言则是后来出现的面向过程的编程语言,随后又有了面向对象的程序设计语言。
大致就是这样的。
详细的,就太多了,写一本书都不足以讲完,你可以到baidu搜索更详细的发展历史。
1950年代—1960年代初,手工艺式的程序设计方法,高德纳把程序称为艺术品。
1960年代末—1970年代初,出现软件危机:一方面需要大量的软件系统,如 *** 作系统、数据库管理系统; 另一方面,软件研制周期长,可靠性差,维护困难。编程的重点:希望编写出的程序结构清晰、易阅读、易修改、易验证,即得到好结构的程序。
1968年,北大西洋公约组织(NATO)在西德召开了第一次软件工程会议,分析了危机的局面,研究了问题的根源,第一次提出了用工程学的办法解决软件研制和生产的问题,本次会议可以算做是软件发展史上的一个重要的里程碑。
1969年,国际信息处理协会(IFIP)成立了“程序设计方法学工作组”,专门研究程序设计方法学,程序设计从手工艺式向工程化的方法迈进。 1968 年,结构化程序设计方法的研究。Dijkstra 提出了“GOTO是有害的”,希望通过程序的静态结构的良好性保证程序的动态运行的正确性。
1969 年,Wirth 提出采用“ 自顶向下逐步求精、分而治之” 的原则进行大型程序的设计。其基本思想是:从欲求解的原问题出发,运用科学抽象的方法,把它分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。 1967年,Floyd 提出用“ 断言法” 证明框图程序的正确性。
1969年,Hoare 在Floyd 的基础上,定义了一个小语言和一个逻辑系统。此逻辑系统含有程序公理和推导规则,目的在于证明程序的部分正确性,这就是著名的Hoare逻辑。他的工作为公理学语义的研究奠定了基础。
1973年,Hoare和Wirth把PASCAL语言的大部分公理化。
1975年,一个基于公理和推导规则的自动验证系统首次出现。
1979年,出现了用公理化思想定义的程序设计语言Euclid。
1976年,Dijkstra提出了最弱前置谓词和谓词转换器的概念,用于进行程序的正确性证明和程序的形式化推导。
1980年,D.Gries综合了以谓词演算为基础的证明系统,称之为“程序设计科学”。首次把程序设计从经验、技术升华为科学。
1974年,人们利用模态逻辑验证并行程序的正确性。
关于程序正确性证明的争论:
怀疑和反对派,理由:首先,形式证明太复杂,谁能够保证证明本身没有错误呢!其次,程序写好后再证明其正确性,相当于“ 马后炮” ,即错误已经铸成,证明何能补救?
折中的方案:编写程序,边考虑证明。即程序设计与正确性证明同时并行考虑。 利用Dijkstra 的谓词转换器及其演算规则集合,可以推导出正确的程序。
利用程序变化构造正确的程序。它对程序应用一连串的保护正确性的变换规则,最终得到可执行的程序。程序变换是1970年代以来,“程序设计方法学” 研究的重要方面,是程序设计自动化很有希望的途径之一。递归程序变换是这一时期的最有意义的成果。 如Burstall 和Darlington 的递归程序变换系统等。
逻辑程序设计和函数程序设计代表一种新的研究方向。Prolog是以谓词逻辑的子集(Hoare 子句)为基础的一种形式系统。Prolog 的执行过程就是执行逻辑上消解算法的过程。 抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)