目录
九、程序设计语言
9.1 演化
对计算机而言,要编写程序就要使用计算机语言。计算机语言是指编写程序时,根据事先定义的规则(语法)写出的预定语句集合。计算机语言经过多年的发展已经从机器语言演化到高级语言。
9.1.1 机器语言
在计算机发展的早期,机器语言是唯一的编程语言。每台计算机都有自己的机器语言,这种语言由“0”和“1”的序列组成。机器语言是计算机唯一能理解识别的语言,它由具有两种状态的电子开关构成:开(表示1)、关(表示0)。
虽然机器语言编写的程序真实的表示了数据是如何被计算机操作的,但是它至少有两个缺点:首先,它依赖于计算机,两个计算机如果使用的硬件不同,它们的机器语言就不同;其次,这种语言编写程序是非常乏味的,而且容易出错。现在我们将机器语言时代称为编程语言的第一代。
下图为假想计算机进行两个数加法的机器语言代码:
9.1.2 汇编语言
编程语言接下来的发展伴随着使用带符号或助记符的指令和地址来代替二进制码而发生的。因为它们使用符号,所以这些语言首先被称为符号语言。汇编程序用于将汇编语言代码翻译成机器语言。
下图是假想计算机进行两个数加法的汇编语言代码:
9.1.3 高级语言
汇编语言提高了编程的效率,但是程序员仍然需要了解所使用的硬件,并且汇编语言与机器语言类似,每条机器指令都需要编码。为了使程序员更关注问题本身,促进了高级语言的发展。高级语言必须通过编译或解释转化为机器语言才能被计算机执行。
9.2 翻译
高级语言要被计算机执行,需要转化为机器语言。高级语言程序被称为源程序,被翻译成的机器语言程序称为目标程序。有两种方法用来转换:编译和解释。
9.2.1 编译
编译程序通常把整个源程序翻译为目标程序。
9.2.2 解释
有些计算机使用解释器把源程序翻译为目标程序。解释是指把源程序的每一行翻译成目标程序中相应的行,并执行它的过程。解释有两种方式:在Java语言以前的部分语言使用的解释和Java使用的解释。
1. 解释程序的第一种方法
这种方法是一个慢的过程,在这种方法中,源程序的每一行被翻译为目标程序的相应行并执行。如果在翻译或执行中出现错误,就会报错,并中止后续过程。当修改源程序后,再次从头开始执行。
2. 解释程序的第二种方法
Java使用另一种方法来解释程序,源程序到目标程序的翻译分为两步:编译和解释。Java源程序首先被编译,创建Java的字节代码,字节代码看起来像机器语言中的代码,但它并不是目标代码,它是一种虚拟机的目标代码,这个虚拟机称为Java虚拟机或JVM。字节代码能被任何能运行JVM的计算机编译或解释。
9.2.3 翻译过程
编译在执行前翻译整个源程序,而解释一次只翻译执行一行,但它们翻译的过程是相同的。
词法分析器:分析源程序中的符号,并创建助记符表。例如,将源程序中的 f、o、r组合起来,形成for助记符。
语法分析器:通过助记符表,对源程序进行分析,找出指令。例如,将 "x" "=" "0",三个助记符组合成"x=0"这条指令。
语义分析器:检查语法分析器创建的句子,确保它们没有二义性。由于当前的编程语言通常没有二义性,所以这个步骤要么被删除,要么责任最小化。
代码生成器:由指令生成能在该计算机上运行的机器语言(二进制代码)。
9.3 编程模式
9.3.1 面向过程模式
在面向过程模式(强制性模式)中,我们把程序看成是操纵被动对象的主动主体。
在面向过程模式中有两个实体:

1664

被折叠的 条评论
为什么被折叠?



