程序设计方法学的发展历史
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 的执行过程就是执行逻辑上消解算法的过程。 抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。
程序设计方法学的介绍
用以指导程序设计各阶段工作的原理和原则,以及依此提出的设计技术。有时也指研究这些原理、原则和技术的学科。程序设计方法学的目标是能设计出可靠、易读而且代价合理的程序。程序设计方法学包括程序理论、研制技术、支援环境、工程规范和自动程序设计等课题,使程序设计更加科学化和工程化。其基本内容是:结构程序设计;程序理论在程序设计技术中的应用,以及规格说明和变换技术。程序理论与程序设计方法学的发展密切相关,它丰富了程序人员的思维方法,促进了程序设计技术的发展。
零基础想自学编程,请问不太会计算的话要先学什么呢?
现在热门的编程岗位就是Web前端、Java,如果是为了就业可以考虑这两个技术方向,如果是对编程感兴趣,可以学Python,语法简单,可以迅速做一些小项目。
"编程"就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令, 这就是"编程". 而后, 计算机会根据这些指令一步步执行, 最后完成任务.
编程语言有很多种,只需要精通一门编程语言或者说一个技术方向就可以了,可以结合自身,选择一门自己喜欢并合适自己的。
HTML5+JS(web前端开发)
什么是前端?在网站上看到的一切图片、文字、视频、都是前端写的。
目前web前端开发还是热门编程方向,这门语言对于零基础的学员来说学起来难度不大。
Java
java仍然是市场上最流行和最火爆的编程语言,常常跟企业联系在一起, 因为具备一些很好的语言特性, 以及丰富的框架, 在企业应用中最被青睐。
Python
Python是动态形的灵活的解释性语言,从软件开发到Web开发,Python都有在被使用,因为他的解释性,适合轻量级开发,Python是很多新手会选择的编程语言。
C语言
C语言,语法较多,时间相对还是比较多的,所以也可以考虑从C语言入手,因为打好编程基础,以后再学其他语言会很快上手。如果是快速就业,不太适合C语言
C++
和C语言一样,语法有一定难度,C++是一种最广泛支持范式的编程语言,。当然如果C学的不错,C++上手也会快。