文档介绍:第二章程序设计语言
程序设计语言是人—机交换信息的媒体,也是人—人交换信息的工具
高级程序设计语言概述
最初的语言是机器语言,例:AX=AX+46
用容易记忆的英文单词代替约定的指令,易读写程序, 导致了汇编语言的诞生
使用汇编语言编程需要:
直接安排存储,规定寄存器、运算器动作次序
了解数据表示的约定(定点、浮点、双精度)
不同的计算机在指令长度、寻址方式、寄存器数目、指令表示等都时不同,使得汇编程序不仅不可移植而且读起来也很费劲
……> 导致了高级语言的出现
例
汇编:
高级程序设计语言实现计算的方式
高级语言程序必须经过翻译变成机器语言程序
翻译有两种做法:编译和解释,相应的翻译工具分别叫做编译器和解释器
编译器工作原理
首先是识别符号串:关键字、字面量、标识符、运算符、注释行、特殊符号等六类符号,这个过程就是词法分析(Lexical Analysis)
第二步作语法分析(Syntax Analysis)一个语句就作为一串记号流由语法分析器处理。按照语言的文法检查每个语法分析树
第三步作语义分析(Semantic Analysis)对各句子的语法树作检查:运算符两边类型是否相兼容;该作哪些类型转换;控制转移到不该去的地方;是否有重名等等。若有错转出错处理,否则生成执行代码
第四步是中间代码生成。中间代码是向目标码过渡的一种编码,形式尽可能和机器的汇编语言相似,但不涉及具体机器的操作码和地址码。好处是可在中间码上作优化
第五步是优化。对中间码程序作局部和全局优化,使运行更快,占用空间最小
第六步是代码生成。生成目标机器的目标码(或汇编)程序
高级语言源程序经编译后,得到的目标模块还需进行连接。连接程序(即Linker)找出需要连接的外部模块并到模块库中找出被调用的模块,调入内存并连接到目标模块上,形成可执行程序。
高级语言程序的解释执行
解释执行需要有一个解释器(lnterpretor ),它先作词法分析,建立内部符号表;
再作语法和语义分析,即以中间码建立语法树,并作类型检查。
完成检查后把每一语句压入执行堆栈,压入后立即解释执行
操作系统的命令、BASIC、VB、Prolog、LISP、Java、Java Script、Post Script都是解释执行的,各种应用软件提供的界面语言(一般都很小)多半是解释执行的。
解释器不大,工作空间也不大、能根据程序执行情况决定下一步做什么(人工智能经常是这样的)是它的优点,
不过,解释执行难于优化、效率较低,这是这类语言的致命缺点
高级程序设计语言基本特征
变量、表达式、赋值
计算的数据对象特别是计算结果的对象在编程时是不存在的。我们只能用变量表示它
例:已知三角形三边长度求面积:
s := *(a+b+c)
area := sqrt(s*(s-a)*(s-b)*(s-c))
其中a,b,c,s,area是变量,(也是字面量),“+”和“*”是运算符,sqrt是开平方函数
表达式是常量、变量、函数调用或者由它们和运算符组成的序列
:=是赋值号它将右端表达式算出的结果赋给左端的变量