《大学信息技术导论第5章.ppt》由会员分享,可在线阅读,更多相关《大学信息技术导论第5章.ppt(160页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大学信息技术导论第5章 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第第5 5章章 程序设计基础程序设计基础 程序设计语言程序设计语言程序设计语言程序设计语言是人们用来向计算机传递是人们用来向计算机传递信息与下达命令的通信工具。信息与下达命令的通信工具。软件发展的三个阶段软件发展的三个阶段:1946年1956年 低级语言(机器语言或汇编语言),追求功效,顺序程序。1956年1968年 高级语言(数学语言或接近于自然语言(英语)的语言),追求易读性和易维护性,并发
2、程序和并行程序。1968年 高级语言,结构良好性,使之易读、易维护,并发程序和 并行程序。程序设计语言的发展趋势程序设计语言的发展趋势:模块化 简明性 形式化 并行化 可视化5.1 5.1 基本概念和程序设计语言的发展基本概念和程序设计语言的发展基本概念基本概念:程序、子程序、子例程、协同例程、模块,程序、子程序、子例程、协同例程、模块,程序的顺序性、并发性、并行性和分布性等。程序的顺序性、并发性、并行性和分布性等。5.1.1 5.1.1 基本概念基本概念1.1.程序程序 指令指令指令指令是计算机可以理解并执行的操作命令,有完整含义,在高级语言中表现为可执行的语句。机器指令机器指令机器指令机器
3、指令是CPU可以理解并执行的操作命令。用二用二进制数进制数0 0和和1 1组成的一串代码(组成的一串代码(11001101100110是是80868086的加法的加法指令指令e.g.)e.g.)一条指令对应着一种基本操作,由一条指令对应着一种基本操作,由两两部分组成:部分组成:操操作码作码和和操作数操作数。操作码操作码操作码操作码是指明该指令要完成的操作,如加、减、传是指明该指令要完成的操作,如加、减、传送、输入等。送、输入等。操作数操作数操作数操作数是指参加运算的数或者数所在的单元地址。是指参加运算的数或者数所在的单元地址。计算机所能执行的全部指令,就是计算机的计算机所能执行的全部指令,就是
4、计算机的指令系指令系指令系指令系统统统统(Instruction Set)(Instruction Set),为特定体系结构独有。,为特定体系结构独有。5.1.1 5.1.1 基本概念基本概念 程序程序:狭义地定义为计算机指令的集合;狭义地定义为计算机指令的集合;广义地定义为说明一项任务或工作过程的符广义地定义为说明一项任务或工作过程的符 号代码形式,这种符号代码人可以读懂,而号代码形式,这种符号代码人可以读懂,而 由计算机处理执行。由计算机处理执行。程序的实际工作过程称为程序的执行。程序的实际工作过程称为程序的执行。程序的实际工作过程称为程序的执行。程序的实际工作过程称为程序的执行。程序的静
5、程序的静程序的静程序的静态态态态特性特性特性特性:与执行过程无关的特性。与执行过程无关的特性。程序的程序的程序的程序的动态动态动态动态特性特性特性特性:与执行过程有关的特性。与执行过程有关的特性。5.1.1 5.1.1 基本概念基本概念程序必须具备的特征程序必须具备的特征程序必须具有解决某一问题的特定任务与功能,都需要回答“解决什么或做什么”的问题程序要遵循一定的规则和步骤,而不是多条指令的胡乱堆砌。程序必须按照算法所规定的语法格式和步骤,回答“怎样做”和“如何执行”的问题程序的执行者是计算机,由于计算机有其自身的逻辑和执行方式,所以程序必须符合计算机的逻辑及处理方式,才能被计算机识别和执行程
6、序是由人来编写的,是人对要处理和解决问题的方法和步骤要求计算机操作处理的说明程序可以连续自动运行。计算机能够在无需人干预的情况下,连续、自动地执行程序,最终给出结果 5.1.1 5.1.1 基本概念基本概念2.2.程序单位程序单位构成程序基本成分:子程序、子例程、协同例程、递归例程和模块。把计算机所进行的一项信息处理定义为一个计算任务,与子计算任务相应的处理对象和处理规则的描述被称为子程序。可由其它程序或子程序调用的子程序被称为是子例程。协同例程是指一组可以互相调用的程序单位,它们彼此处于平等地位,调用后毋须返回到开始位置,且自带工作区。递归例程是可以作为其本身的子例程而被调用的例程。模块是具
7、有相对独立性的一组逻辑上有关的实体。在现代高级语言中,有各种定义模块的方式,但其主要成分是一组说明和一组语句。5.1.1 5.1.1 基本概念基本概念3.3.源程序源程序为解决特定的问题用程序的宿主语言编写的正文,称为源程序(Source Program)或源代码(Source Code)。源代码由顺序执行的指令组成。按语言是否可以直接被机器识别的程度可以分为机器语言、汇编语言和高级语言三类,前两者为低级语言。低级语言中,源程序是一组机器指令和有关的数据。低级语言中,源程序是一组机器指令和有关的数据。高级语言中,源程序一般是一组说明和语句。高级语言中,源程序一般是一组说明和语句。5.1.1 5
8、.1.1 基本概念基本概念机器语言机器语言 是表示成数码形式的机器基本指令集,或者是操作码经过符号化的基本指令集,也称为面向机器的语言。用二进制代码指令与计算机打交道,可以被计算机硬件直接识别,不需要翻译,因此执行速度快,执行效率高。缺点是不直观,编程工作量大,易出错,程序难读、难记、难修改,也不具有通用性(在一种型号的机器上编写的程序一般不能在其他型号的机器上运行),对编程人员要求高。5.1.1 5.1.1 基本概念基本概念汇编语言 用一些简单的助记符(约定的某些为人们易记忆和理解的符号)来描述指令(如加法指令用“ADD”,数字用10进制或16进制来表示),因此又叫作“符号语言”。一般情况下
9、,汇编语言的指令和机器语言的指令是一一对应的。宏汇编指令 一条宏汇编指令可以代替若干条机器指令。同机器语言的指令相比,汇编语言指令的含义比较直观,也易于阅读和理解。计算机并不能直接识别和执行汇编语言的指令,必须将它们翻译成机器语言指令,计算机才能执行;把汇编语言程序翻译成机器语言程序的程序为汇编程序(Assembler),而称翻译前的程序为汇编语言源程序,称翻译后的程序为目标程序。5.1.1 5.1.1 基本概念基本概念低级语言更接近于计算机的逻辑,而不是人类思维的过程描述。高级语言是为普通用户使用而设计的程序语言,比较接近自然语言和数学语言,对机器依赖性低,在一定程度上与具体机器无关,即适用
10、于各种机器的计算机语言。易学、易用、易维护。用变量名代替了存储单元的地址,不必由人们直接分配地址和管理存储空间。程序具有可移植性。不能被计算机硬件直接识别,需要翻译成机器可执行的目标代码后方可执行。5.1.1 5.1.1 基本概念基本概念编译程序编译程序把高级语言所写的程序作为一个整体进行处理,将高级语言指令一次翻译为机器语言组成的可执行代码文件,即编译程序生成独立可执行的目标代码。编译后与子程序库链接,形成一个完整的可执行程序。解释程序解释程序对高级语言程序将源程序逐句分解为最低级的机器语言代码并执行,而不产生目标程序。解释方式便于查找错误,但效率较低。4.4.编译程序和解释程序编译程序和解
11、释程序5.1.1 5.1.1 基本概念基本概念伪代码伪代码 当当编写的程序并不完全生成可执行的目标代码,而由计算机内部产生中间代码(程序员无法看到)被称为伪伪代码代码。伪代码保留在内存中,等待用户或程序员的执行调用。可执行的目标代码最后被执行,但并不保留在内存中。所有程序,即使它们有EXE扩展名,也都必须使用解释程序或编译程序来运行(如VB)。5.1.1 5.1.1 基本概念基本概念5.5.程序理论程序理论研究程序的研究程序的研究程序的研究程序的语义语义语义语义性性性性质质质质和程序和程序和程序和程序设计设计设计设计及开及开及开及开发发发发方法的理方法的理方法的理方法的理论论论论。主要包括程序
12、主要包括程序主要包括程序主要包括程序语义语义语义语义理理理理论论论论、数据、数据、数据、数据类类类类型理型理型理型理论论论论、程序、程序、程序、程序逻辑逻辑逻辑逻辑理理理理论论论论、程序、程序、程序、程序验证验证验证验证理理理理论论论论、并、并、并、并发发发发程序程序程序程序设计设计设计设计理理理理论论论论和混合程序和混合程序和混合程序和混合程序设计设计设计设计理理理理论论论论。程序理程序理程序理程序理论论论论(theory of programs)(theory of programs)和和和和算法理算法理算法理算法理论论论论是是是是计计计计算机科学的两大支算机科学的两大支算机科学的两大支算
13、机科学的两大支柱。柱。柱。柱。程序理程序理程序理程序理论论论论研究程序的研究程序的研究程序的研究程序的规约规约规约规约、变换变换变换变换和和和和验证验证验证验证,基本,基本,基本,基本问题问题问题问题是如何建立是如何建立是如何建立是如何建立一个相一个相一个相一个相对对对对完善的理完善的理完善的理完善的理论论论论框架,框架,框架,框架,为软为软为软为软件的件的件的件的设计设计设计设计和开和开和开和开发发发发方法提供理方法提供理方法提供理方法提供理论论论论依据。依据。依据。依据。这这这这个框架个框架个框架个框架应应应应能提供有效地描述程序能提供有效地描述程序能提供有效地描述程序能提供有效地描述程序
14、规约规约规约规约的的的的语语语语言;言;言;言;应应应应能定能定能定能定义义义义可操作的可操作的可操作的可操作的变换变换变换变换方法以便能方法以便能方法以便能方法以便能规约规约规约规约构造可构造可构造可构造可执执执执行的程序;行的程序;行的程序;行的程序;应应应应能能能能给给给给出出出出验证验证验证验证程序与其程序与其程序与其程序与其规约规约规约规约之之之之间间间间一致性的机制。一致性的机制。一致性的机制。一致性的机制。5.1.1 5.1.1 基本概念基本概念6.6.程序设计语言语义程序设计语言语义用数学方法刻画程序用数学方法刻画程序用数学方法刻画程序用数学方法刻画程序语语语语句的加工句的加工
15、句的加工句的加工过过过过程,并将其程,并将其程,并将其程,并将其执执执执行行行行结结结结果形式化。果形式化。果形式化。果形式化。也叫形式也叫形式也叫形式也叫形式语义语义语义语义。分分分分为为为为四四四四类类类类:操作操作操作操作语义语义语义语义,模,模,模,模拟拟拟拟程序程序程序程序执执执执行中行中行中行中计计计计算系算系算系算系统统统统的操作的操作的操作的操作过过过过程。程。程。程。指称指称指称指称语义语义语义语义,把程序作,把程序作,把程序作,把程序作为论为论为论为论域域域域间间间间的泛函以便刻画程序的的泛函以便刻画程序的的泛函以便刻画程序的的泛函以便刻画程序的执执执执行数行数行数行数学学
16、学学结结结结果。果。果。果。公理公理公理公理语义语义语义语义,用公理化方法刻画程序与被加工数据的,用公理化方法刻画程序与被加工数据的,用公理化方法刻画程序与被加工数据的,用公理化方法刻画程序与被加工数据的逻辑逻辑逻辑逻辑关系。关系。关系。关系。代数代数代数代数语义语义语义语义,把程序,把程序,把程序,把程序执执执执行的行的行的行的结结结结果定果定果定果定义为满义为满义为满义为满足某种公理体系的代足某种公理体系的代足某种公理体系的代足某种公理体系的代数数数数结结结结构。构。构。构。在高在高在高在高级语级语级语级语言中广泛使用的言中广泛使用的言中广泛使用的言中广泛使用的过过过过程程程程说说说说明和
17、明和明和明和过过过过程程程程调调调调用的精确概念和用的精确概念和用的精确概念和用的精确概念和实现实现实现实现机制,就是在机制,就是在机制,就是在机制,就是在语义语义语义语义理理理理论论论论的研究中逐步明确的。的研究中逐步明确的。的研究中逐步明确的。的研究中逐步明确的。ALGOL60ALGOL60是第一个明确区分是第一个明确区分是第一个明确区分是第一个明确区分语语语语法和法和法和法和语义语义语义语义的程序的程序的程序的程序设计语设计语设计语设计语言。言。言。言。5.1.1 5.1.1 基本概念基本概念7.7.并发程序并发程序 包含多个没有因果关系包含多个没有因果关系包含多个没有因果关系包含多个没
18、有因果关系进进进进程的程序。程的程序。程的程序。程的程序。进进程程间间的通信、同步和它的通信、同步和它们们的并行的并行执执行是并行是并发发程序区程序区别别于于顺顺序程序的基本操作。序程序的基本操作。计计算机科学中的并算机科学中的并发发概念是由概念是由 Petri Petri 在在19621962年提出的。年提出的。2020世世纪纪7070年代初期,年代初期,为为了保了保证证在操作系在操作系统统中多个并行中多个并行执执行行进进程的正确性,程的正确性,导导致了并致了并发发程序理程序理论论的的产产生。生。进进入入8080年代以来,随着超大年代以来,随着超大规规模集成模集成电电路技路技术术的日臻成熟,
19、的日臻成熟,并行和分布并行和分布计计算机系算机系统统得到了迅速得到了迅速发发展,成展,成为为程序理程序理论论的一的一个重要分支。个重要分支。并并发发程序理程序理论论研究的内容包括:并行研究的内容包括:并行进进程的描述(用代数方程的描述(用代数方法),并行法),并行进进程的相互模程的相互模拟拟,各种通信及同步机制以及死,各种通信及同步机制以及死锁锁及活性,可及活性,可观观察性和察性和发发散性等并散性等并发现发现象。象。5.1.1 5.1.1 基本概念基本概念8.8.程序设计程序设计(programming)(programming)设计、编制和调试程序的方法与过程,是设计、编制和调试程序的方法与
20、过程,是目标明确的智力活动。目标明确的智力活动。程序设计的分类程序设计的分类:按结构性质,有结构化(具有由基本结构构造复按结构性质,有结构化(具有由基本结构构造复按结构性质,有结构化(具有由基本结构构造复按结构性质,有结构化(具有由基本结构构造复杂结构的层次性)与非结构化程序设计之分杂结构的层次性)与非结构化程序设计之分杂结构的层次性)与非结构化程序设计之分杂结构的层次性)与非结构化程序设计之分按用户要求,有过程式与非过程式程序设计之分按用户要求,有过程式与非过程式程序设计之分按用户要求,有过程式与非过程式程序设计之分按用户要求,有过程式与非过程式程序设计之分按程序的成分性质,有顺序、并发、并
21、行和分布按程序的成分性质,有顺序、并发、并行和分布按程序的成分性质,有顺序、并发、并行和分布按程序的成分性质,有顺序、并发、并行和分布式程序设计之分式程序设计之分式程序设计之分式程序设计之分按设计风格,有逻辑式、函数式和对象式程序设按设计风格,有逻辑式、函数式和对象式程序设按设计风格,有逻辑式、函数式和对象式程序设按设计风格,有逻辑式、函数式和对象式程序设计之分,三者的设计基本构件分别为逻辑子句、计之分,三者的设计基本构件分别为逻辑子句、计之分,三者的设计基本构件分别为逻辑子句、计之分,三者的设计基本构件分别为逻辑子句、函数和对象类。函数和对象类。函数和对象类。函数和对象类。5.1.1 5.1
22、.1 基本概念基本概念9.9.程序设计程序设计语言语言语言语言用于用于用于用于书书书书写写写写计计计计算机程序的算机程序的算机程序的算机程序的语语语语言。言。言。言。语语言的基言的基础础是一是一组记组记号和一号和一组规则组规则。根据。根据规则规则由由记记号构成的号构成的记记号串的号串的总总体就是体就是语语言。言。程序程序设计语设计语言言(programming language)包含三个方面,即包含三个方面,即语语法、法、语义语义和和语语用用。语语法法表示程序的表示程序的结结构或形式,亦即表示构构或形式,亦即表示构成成语语言的各个言的各个记记号之号之间间的的组组合合规则规则,但不涉及,但不涉及
23、这这些些记记号的特号的特定含定含义义,也不涉及使用者。,也不涉及使用者。语义语义表示程序的含表示程序的含义义,亦即表示,亦即表示按照各种方法所表示各个按照各种方法所表示各个记记号的特定含号的特定含义义,但不涉及使用者。,但不涉及使用者。语语用用表示程序与使用者的关系。表示程序与使用者的关系。程序程序设计语设计语言的言的基本成分基本成分包括:包括:数据数据,用以描述程序中所用以描述程序中所涉及的数据;涉及的数据;运算运算,用以描述程序中所包含的运算;用以描述程序中所包含的运算;控制控制,用以表达程序中的控制构造;用以表达程序中的控制构造;传输传输,用以表达程序用以表达程序中数据的中数据的传输传输
24、。5.1.1 5.1.1 基本概念基本概念程序设计程序设计语言的分类语言的分类语言的分类语言的分类 按照按照按照按照语语语语言言言言级别级别级别级别低低低低级语级语级语级语言与高言与高言与高言与高级语级语级语级语言言言言 按照用按照用按照用按照用户户户户要求要求要求要求过过过过程式程式程式程式语语语语言(如言(如言(如言(如FORTRANFORTRAN、COBOLCOBOL、ALGOL60ALGOL60)和非)和非)和非)和非过过过过程式程式程式程式语语语语言,非言,非言,非言,非过过过过程式程式程式程式语语语语言用言用言用言用户户户户无法明确无法明确无法明确无法明确 表示表示表示表示计计计计
25、算算算算过过过过程的一程的一程的一程的一组组组组可可可可顺顺顺顺序序序序执执执执行的运算(如行的运算(如行的运算(如行的运算(如PROLOGPROLOG)按照按照按照按照应应应应用范用范用范用范围围围围通用通用通用通用语语语语言(非言(非言(非言(非单单单单一目一目一目一目标标标标,如,如,如,如FORTRANFORTRAN、COBOLCOBOL、ALGOL60ALGOL60)和)和)和)和专专专专用用用用语语语语言言言言 按照使用方式按照使用方式按照使用方式按照使用方式交互式交互式交互式交互式语语语语言(具有反映人机交互作用的言(具有反映人机交互作用的言(具有反映人机交互作用的言(具有反映人
26、机交互作用的语语语语 言成分,如言成分,如言成分,如言成分,如BASICBASIC)和非交互式)和非交互式)和非交互式)和非交互式语语语语言(如言(如言(如言(如PascalPascal、C C)按照成分性按照成分性按照成分性按照成分性质质质质顺顺顺顺序序序序语语语语言、并言、并言、并言、并发语发语发语发语言和分布言和分布言和分布言和分布语语语语言。言。言。言。传统传统传统传统的程序的程序的程序的程序设计语设计语设计语设计语言大都以言大都以言大都以言大都以冯冯冯冯 诺诺诺诺伊曼式的伊曼式的伊曼式的伊曼式的计计计计算机算机算机算机为设计为设计为设计为设计背景,因而又称背景,因而又称背景,因而又称
27、背景,因而又称为为为为冯冯冯冯 诺诺诺诺伊曼式伊曼式伊曼式伊曼式语语语语言。言。言。言。J.BackusJ.Backus于于于于19771977年提出的函数式年提出的函数式年提出的函数式年提出的函数式语语语语言言言言FPFP则则则则以非以非以非以非冯冯冯冯 诺诺诺诺伊曼式的伊曼式的伊曼式的伊曼式的计计计计算机算机算机算机为设计为设计为设计为设计背景,因而又称背景,因而又称背景,因而又称背景,因而又称为为为为非非非非冯冯冯冯 诺诺诺诺伊曼式伊曼式伊曼式伊曼式语语语语言。言。言。言。20 20世世世世纪纪纪纪8080年代,在年代,在年代,在年代,在结结结结构化程序构化程序构化程序构化程序设计设计设
28、计设计方法的基方法的基方法的基方法的基础础础础上,提出了面向上,提出了面向上,提出了面向上,提出了面向对对对对象的程序象的程序象的程序象的程序设设设设计计计计方法。方法。方法。方法。相应产生了相应产生了相应产生了相应产生了面向面向面向面向对对对对象的象的象的象的语语语语言。典型的面向言。典型的面向言。典型的面向言。典型的面向对对对对象的象的象的象的语语语语言有言有言有言有C+C+,DelphiDelphi等。等。等。等。5.1.1 5.1.1 基本概念基本概念10.10.程序设计程序设计方法学方法学方法学方法学(programming methodology)(programming meth
29、odology)以程序以程序以程序以程序设计设计设计设计方法方法方法方法为为为为研究研究研究研究对对对对象的学科象的学科象的学科象的学科。程序程序程序程序设计设计设计设计方法可以分方法可以分方法可以分方法可以分为为为为两两两两类类类类。一。一。一。一类类类类是是是是全局性全局性全局性全局性的,的,的,的,如如如如结结结结构化程序构化程序构化程序构化程序设计设计设计设计方法。它不方法。它不方法。它不方法。它不仅仅仅仅要求要求要求要求编编编编出的程序出的程序出的程序出的程序结结结结构构构构良好,而且要求程序良好,而且要求程序良好,而且要求程序良好,而且要求程序设计过设计过设计过设计过程是程是程是程
30、是结结结结构化、构化、构化、构化、层层层层次式、逐次式、逐次式、逐次式、逐层层层层降低抽象降低抽象降低抽象降低抽象级别级别级别级别的的的的;另一另一另一另一类则类则类则类则是是是是局部性局部性局部性局部性的,如子例程的,如子例程的,如子例程的,如子例程方法、方法、方法、方法、协协协协同例程方法等。同例程方法等。同例程方法等。同例程方法等。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展1.FORTRAN(FORmula TRANslation)1.FORTRAN(FORmula TRANslation)语言语言IBMIBM公司公司19561956年创立的世界上第一个高级年创立的世界
31、上第一个高级程序程序设计语设计语言言,一种,一种面向面向过过程的程的非常适合于科学计算的语言。它已经具有相当完善的工程设非常适合于科学计算的语言。它已经具有相当完善的工程设计计算程序库和工程应用软件。计计算程序库和工程应用软件。FORTRANFORTRAN支持一些最常用的编码方式,如算术表达式、逻辑运算、支持一些最常用的编码方式,如算术表达式、逻辑运算、过程调用、循环和条件等等,提高了程序员的编程效率。第一个过程调用、循环和条件等等,提高了程序员的编程效率。第一个FORTRANFORTRAN语言标准称为语言标准称为FORTRAN66FORTRAN667070年代修订为年代修订为FORTRAN7
32、7FORTRAN77,分全集和子集。,分全集和子集。19911991年国际标准化组织又批准了新的年国际标准化组织又批准了新的FORTRANFORTRAN标准,称为标准,称为Fortran90(Fortran90(规定规定F F后面的后面的6 6个字母用小写个字母用小写),),它是国际上第一个支持多它是国际上第一个支持多字节字符集的标准,该标准采纳了我国字节字符集的标准,该标准采纳了我国FORTRANFORTRAN工作组关于工作组关于CHARACTER(KIND=CHARACTER(KIND=,)的建议。的建议。新一代高性能新一代高性能FORTRAN(HPF)FORTRAN(HPF)正在设计中。
33、正在设计中。HPFHPF的目标是支持并行程的目标是支持并行程序设计;能在序设计;能在SIMDSIMD或或MIMDMIMD机上获得较高性能;易于在不同体系结构机上获得较高性能;易于在不同体系结构的计算机之间移植其目的计算机之间移植其目标标代代码码;扩扩充数据分布特性和并行充数据分布特性和并行语语句。句。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展2.2.ALGOL(ALGOrithmic Language)ALGOL(ALGOrithmic Language)语言语言1958195819581958年在年在年在年在苏苏苏苏黎世黎世黎世黎世举举举举行的一次行的一次行的一次行的一次A
34、CMACMACMACM和和和和GAMMGAMMGAMMGAMM(欧洲小(欧洲小(欧洲小(欧洲小组组组组)的)的)的)的联联联联合会合会合会合会议议议议上,上,上,上,关于关于关于关于算法表示法算法表示法算法表示法算法表示法的建的建的建的建议议议议被被被被综综综综合合合合为为为为ALGOLALGOLALGOLALGOL,又称,又称,又称,又称ALGOL 58ALGOL 58ALGOL 58ALGOL 58。“关于算法关于算法关于算法关于算法语语语语言言言言ALGOL 60ALGOL 60ALGOL 60ALGOL 60的的的的报报报报告告告告”是程序是程序是程序是程序设计语设计语设计语设计语言言
35、言言发发发发展史上的一个展史上的一个展史上的一个展史上的一个里程碑,是程序里程碑,是程序里程碑,是程序里程碑,是程序设计语设计语设计语设计语言言言言由技由技由技由技艺转艺转艺转艺转向科学的重要向科学的重要向科学的重要向科学的重要标标标标志。志。志。志。ALGOLALGOLALGOLALGOL是一是一是一是一种用日常英种用日常英种用日常英种用日常英语语语语以及与常用数学表达式相近的形式表以及与常用数学表达式相近的形式表以及与常用数学表达式相近的形式表以及与常用数学表达式相近的形式表现现现现算法的算法的算法的算法的语语语语言,言,言,言,没有没有没有没有输输输输入入入入输输输输出出出出语语语语句,
36、全部以句,全部以句,全部以句,全部以过过过过程的形式程的形式程的形式程的形式进进进进行描述,以行描述,以行描述,以行描述,以块结块结块结块结构构构构为为为为基基基基础础础础。ALGOLALGOLALGOLALGOL的主要特点有:的主要特点有:的主要特点有:的主要特点有:首次引首次引首次引首次引进进进进局部性概念,既局部性概念,既局部性概念,既局部性概念,既扩扩扩扩充了充了充了充了语语语语言的表言的表言的表言的表达能力,又达能力,又达能力,又达能力,又节节节节省了内存空省了内存空省了内存空省了内存空间间间间;语语语语言含有言含有言含有言含有动态动态动态动态成分,从而明成分,从而明成分,从而明成分
37、,从而明显显显显提高提高提高提高了了了了语语语语言的表达能力,不言的表达能力,不言的表达能力,不言的表达能力,不过实现过实现过实现过实现中的系中的系中的系中的系统统统统开开开开销销销销也明也明也明也明显显显显增加;增加;增加;增加;递归递归递归递归性性性性的引的引的引的引进进进进开拓了开拓了开拓了开拓了软软软软件的研究件的研究件的研究件的研究领领领领域,促域,促域,促域,促进进进进了了了了软软软软件的件的件的件的发发发发展;展;展;展;语语语语法和法和法和法和语义语义语义语义均有均有均有均有严严严严格描述,格描述,格描述,格描述,语语语语法的描述采用法的描述采用法的描述采用法的描述采用巴科斯形
38、式体系巴科斯形式体系巴科斯形式体系巴科斯形式体系(BNF)(BNF)(BNF)(BNF),结结结结构清晰,构清晰,构清晰,构清晰,理理理理论严谨论严谨论严谨论严谨。ALGOL60ALGOL60ALGOL60ALGOL60的国的国的国的国际标际标际标际标准于准于准于准于1984198419841984年公布年公布年公布年公布(IS01538:1984)IS01538:1984)IS01538:1984)IS01538:1984),全名全名全名全名为为为为Programming Language ALGOL60Programming Language ALGOL60Programming Lang
39、uage ALGOL60Programming Language ALGOL60。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展3.3.COBOL(COmmon Business Oriented Language)COBOL(COmmon Business Oriented Language)语言语言一种用于事一种用于事务处务处理的通用程序理的通用程序设计语设计语言。言。19591959年年Grace Grace Murray HopperMurray Hopper开始,同年开始,同年5 5月,成立月,成立CODASYLCODASYL,要求,要求面向用面向用户户,面向,面向问题
40、问题,与机器无关,用,与机器无关,用简单简单英英语语或或类类英英语语表示,并表示,并尽可能避免符号化尽可能避免符号化。19601960年年4 4月,月,COBOL 60COBOL 60。COBOLCOBOL最早最早应应用于事用于事务务数据数据处处理,并理,并使用文件、使用文件、记录记录、组项组项、初等、初等项项的数据描述方法。的数据描述方法。COBOLCOBOL语语言将其核心和功能模言将其核心和功能模块块均分成若干均分成若干级级,故可以灵活,故可以灵活地构造功能上具有地构造功能上具有积积木式的但又是木式的但又是标标准的适用于不同准的适用于不同层层次的次的语语言言实现实现系系统统,从而适,从而适
41、应应不同行不同行业业的的实际实际需求。需求。COBOLCOBOL程序由程序由4 4个部个部组组成:成:标识标识部部用于刻画程序的用于刻画程序的标识标识性特征;性特征;环环境部境部用于刻画程序和用于刻画程序和计计算机算机环环境有关的成分;境有关的成分;数据部数据部用于用于刻画数据刻画数据(包括文件、包括文件、记录记录、组项组项和初等和初等项项等等)定定义义的构成以的构成以及相关特征和属性;及相关特征和属性;过过程部程部用于刻用于刻画画处处理加工流程,采用理加工流程,采用节节、段、段、语语句的句的结结构构层层次。次。目前的目前的COBOLCOBOL国国际标际标准版本是准版本是ISO COBOL 1
42、989-1985ISO COBOL 1989-1985。直到今直到今天,仍然有天,仍然有许许多用多用COBOLCOBOL编编制的程序在大型机上运行。制的程序在大型机上运行。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展4.4.LISP(LISt Processing)LISP(LISt Processing)语言语言 用于用于用于用于处处处处理被称理被称理被称理被称为为为为“表表表表”的特殊数据集的函数式程序的特殊数据集的函数式程序的特殊数据集的函数式程序的特殊数据集的函数式程序设计语设计语设计语设计语言,言,言,言,J.McCarthyJ.McCarthyJ.McCarthyJ
43、.McCarthy于于于于1960196019601960年年年年创创创创立。在人工智能立。在人工智能立。在人工智能立。在人工智能领领领领域内曾被广泛使用。域内曾被广泛使用。域内曾被广泛使用。域内曾被广泛使用。LISPLISP的主要特点:的主要特点:程序的通常形式是一串函数定程序的通常形式是一串函数定程序的通常形式是一串函数定程序的通常形式是一串函数定义义义义,其后跟着一串,其后跟着一串,其后跟着一串,其后跟着一串带带带带有参数的函有参数的函有参数的函有参数的函数数数数调调调调用,函数之用,函数之用,函数之用,函数之间间间间的关系只是在的关系只是在的关系只是在的关系只是在调调调调用用用用执执执
44、执行行行行时时时时才体才体才体才体现现现现出来。出来。出来。出来。LISPLISPLISPLISP中中中中没有没有没有没有语语语语句概念,也没有分程序句概念,也没有分程序句概念,也没有分程序句概念,也没有分程序结结结结构或其它构或其它构或其它构或其它语语语语法法法法结结结结构。构。构。构。语语语语言中的一言中的一言中的一言中的一切成份都是以函数的形式切成份都是以函数的形式切成份都是以函数的形式切成份都是以函数的形式给给给给出。出。出。出。在在在在标标标标准准准准LISPLISPLISPLISP中只有很少几个原始函数,中只有很少几个原始函数,中只有很少几个原始函数,中只有很少几个原始函数,虽虽虽
45、虽然然然然现现现现有的有的有的有的LISPLISPLISPLISP系系系系统统统统已已已已增加了大量的内部函数,但增加了大量的内部函数,但增加了大量的内部函数,但增加了大量的内部函数,但这这这这些新增加的函数都可以用最初的原些新增加的函数都可以用最初的原些新增加的函数都可以用最初的原些新增加的函数都可以用最初的原始函数来表示。始函数来表示。始函数来表示。始函数来表示。在在在在LISPLISPLISPLISP中,程序和数据在形式上是等价的。中,程序和数据在形式上是等价的。中,程序和数据在形式上是等价的。中,程序和数据在形式上是等价的。LISPLISPLISPLISP的唯一数据的唯一数据的唯一数据
46、的唯一数据结结结结构是构是构是构是S S S S表达式表达式表达式表达式(表表表表),而程序本身也是用,而程序本身也是用,而程序本身也是用,而程序本身也是用S S S S表达式写的,因此可以表达式写的,因此可以表达式写的,因此可以表达式写的,因此可以把程序当作数据来把程序当作数据来把程序当作数据来把程序当作数据来处处处处理,也可以把数据当作程序来理,也可以把数据当作程序来理,也可以把数据当作程序来理,也可以把数据当作程序来执执执执行。行。行。行。递归递归递归递归是是是是LISPLISPLISPLISP的基的基的基的基础础础础,是,是,是,是语语语语言的主要控制言的主要控制言的主要控制言的主要控
47、制结结结结构,它不象大多数程构,它不象大多数程构,它不象大多数程构,它不象大多数程序序序序设计语设计语设计语设计语言那言那言那言那样样样样以迭代以迭代以迭代以迭代(循循循循环环环环)作作作作为为为为主要的控制主要的控制主要的控制主要的控制结结结结构。构。构。构。LISPLISPLISPLISP的的的的递归处递归处递归处递归处理是基于理是基于理是基于理是基于递归递归递归递归定定定定义义义义的数据的数据的数据的数据结结结结构。构。构。构。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展5.5.BASIC(Beginners All-purpose Symbolic Instructio
48、n Code)BASIC(Beginners All-purpose Symbolic Instruction Code)最简单易学的交互式高级程序设计语言。最简单易学的交互式高级程序设计语言。由由美国美国DartmouthDartmouth学院数学系的学院数学系的Thomas E.KurtzThomas E.Kurtz和和John.G.KemenyJohn.G.Kemeny两位教授于两位教授于1963196419631964年间开始研制,年间开始研制,19641964年年正式推出。正式推出。广泛应用于数值计算、数据处理、实时控制、绘图、游戏等多种领广泛应用于数值计算、数据处理、实时控制、绘图
49、、游戏等多种领域。域。19781978年美国发布最小年美国发布最小BASICBASIC国家标准国家标准(ANSI X3.60-78)(ANSI X3.60-78),19841984年年又被定为国际标准又被定为国际标准(IS0 6373-84)(IS0 6373-84),19871987年美国发布全年美国发布全BASICBASIC国家国家标准标准(ANSI X3.113-87)(ANSI X3.113-87)。我国于我国于19911991年发布了年发布了BASICBASIC子集国家标子集国家标准准(GB 12856-91)(GB 12856-91)。MicrosoftMicrosoft于于199
50、11991年推出年推出VBVB(Visual BasicVisual Basic)语言,称为语言,称为“可视可视化化BASIC”BASIC”,是重要的多媒体编程工具语言。它是以结构化是重要的多媒体编程工具语言。它是以结构化BASICBASIC语言为基础,以事件驱动作为运行机制的新一代可视化程序语言为基础,以事件驱动作为运行机制的新一代可视化程序设计语言。设计语言。VBVB既保留了既保留了BASICBASIC语言简单易用的优点,又充分利用语言简单易用的优点,又充分利用了了WindowsWindows提供的图形环境。提供的图形环境。5.1.2 5.1.2 程序设计语言的发展程序设计语言的发展6.6