二级C++精品课程第一章第一节计算机语言及其发展 |
|
www.nanhushi.com 佚名 不详 |
计算机是一个有用的工具,它能做许多事情,例如矩阵计算、方程求解、辅助设计等。要让计算机解决某一个问题之前,必须先把求解问题的步骤描述出来,这便称之为算法。下面是一个一元二次方程求根的算法实例: ◇ 计算方程的判别式 ◇ 如判别式小于零,则输出方程没有实根的信息 ◇ 否则,计算方程的实根,并输出计算结果 我们不能直接将算法输入到计算机,因为用这种自然语言表达的算法,计算机并不理解。正象我们人之间通过语言进行沟通一样,我们要计算机做事,要用计算机能够理解的语言,称之为计算机语言。将算法用某种特定的计算机语言表达出来,输入到计算机,这便是计算机编程,用计算机语言表达出的算法称之为计算机程序(或程序)。 计算机是无知觉无生命的机器,要使它能够按照人们的意图工作,就必须使计算机懂得人的意图,接受人向它发出的命令和信息,这就要解决一个"语言"的问题。打个比方,一个中国人想要同一个美国人进行交流,首先需要学习英语,因为英语是美国人可以理解的语言,美国人不理解中国人的汉语。同样,计算机也不懂人类的语言,无论是汉语还是英语,计算机都不能接受,因此要求人们用特定的计算机可以理解的语言与计算机交流,这就是计算机语言。这种语言同英语、汉语等等人类长期使用的自然语言有很大的不同,它有严格的定义,并且一般没有二义性,因为人们在使用自然语言交谈时,很容易根据语境确定具有二义性的对话的含义;但是计算机却做不到这一点,至少现在它还没有这么聪明。 自从有了计算机,也就有了计算机的编程。最初的计算机编程语言是所谓机器语言( 也称为第一代语言 ),即直接使用机器代码编程。用机器代码编程繁琐、易错,为了提高编程效率,人们引入了助记符,就出现了所谓汇编语言( 也称为第二代语言 ),汇编语言同机器语言相比,并没有本质的区别,只不过是把机器指令用助记符号代替。但这已是很大的进步,它提高了编程效率,改进了程序的可读性和可维护性。直到今天,仍然有人在用汇编语言编程。 机器语言即是机器指令的集合。每种计算机都有自己的指令集合,计算机能直接执行用机器语言所编的程序。机器语言包括:指令系统、数的形式、通道指令、中断字、屏蔽字、控制寄存器的信息等。机器码是计算机能理解和执行的唯一语言。机种不同,其机器码组合方式也不一样。同一个题目到不同的计算机上计算时,必须编写不同机器语言的程序。机器语言是最低级的语言。 由于机器码指令是用许多二进制数表示的,用机器语言编程必然很繁琐,非常消耗精力和时间,难记忆,易弄错,并且难以检查程序和调试程序,工作效率低。例如, 字母A表示为1010,数字9表示为1001。机器语言的加法指令码有三种形式,又要考虑进位,符号还要考虑溢出等情况。 用汇编语言编程效率是提高了,但执行效率降低了。因为它运行之前,还需要一个专门的翻译程序(称为assembler汇编程序)将其翻译为机器语言。汇编语言是一种符号语言,它几乎和机器语言一一对应,但在书写时却使用由字符串组成的助记符。例如,加法在汇编语言中用助记符ADD表示,减法用助记符SUB表示等。 早期的计算机由于速度慢、内存小,衡量程序质量高低最重要的指标是机器执行的效率。但是,随着计算机技术的发展,机器硬件的性能大幅度提高,程序的复杂度也在增加,人们越来越要求把简单、重复性的工作交给机器去做,而人更多地从事创造性的工作。程序的可读性和可维护性渐渐成为衡量程序质量高低的最重要的指标。很显然,汇编语言取代机器语言是必然的结果。 虽然汇编语言较机器语言已有很大的改进,但仍是低级语言,它有两个主要缺点: ◇ 涉及太多的细节; ◇ 与具体的计算机相关。 所以,汇编语言也被称为面向机器的语言。为了进一步提高编程效率,改进程序的可读性、可维护性,又出现了许多高级语言(也称为第三代语言),例如:Fortran、Basic、Pascal、Java、C和C++等,其中C/C++是当今最流行的高级程序设计语言。 高级语言比低级语言更加抽象、简洁: ◇ 一条高级语言的指令相当于几条机器语言的指令。 ◇ 用高级语言编写的程序同自然英语语言非常接近,易于学习。 ◇ 用高级语言编写程序并不需要某种计算机的专门知识。 同汇编语言类似,高级语言也需要专门的翻译程序(称为compiler编译器或interpreter解释器),将它翻译成机器语言后,才能运行。 既然机器语言和汇编语言都是计算机可以理解的语言,使用它们可以完全控制计算机的行为,那么为什么人们还要创造并使用高级程序设计语言呢? 因为机器语言和汇编语言都是低级语言,是面向机器的,与具体的计算机相关。学习起来困难,编程效率也低,可读性、可维护性也差。还是举个例子来说明。一个中国北方人想要去欧洲旅行,可是他不懂任何一门欧洲语言;恰好,一个懂得德语、英语、法语、西班牙语等所有欧洲语言的中国南方人也去欧洲旅行,他们结伴同行。中国北方人想要同欧洲人交流,有两种方式:一是学习各种欧洲语言,然后同各个国家的人直接交流;二是让那个南方人当翻译,将自己的意思讲给欧洲人听,并将欧洲人的回答反馈给自己。如果您是那个北方人,您选择哪种方式?我想答案是确定的,肯定要请南方人当翻译。虽然北方和南方在语言上也有一定的差异,但是比起同欧洲语言的差异来,这种差异显然太小了。况且,如果直接同欧洲人交流,需要学习多少门语言?
高级语言和计算机的关系,与北方人的语言和欧洲人的关系相似。高级语言编写的程序借助于编译器就可以在特定的机器上运行,那些不同的欧洲人相当于不同的计算机,那个南方人相当于编译器,而那个南方人所熟悉的汉语则相当于计算机高级语言。高级语言编写的程序是由一系列语句(或函数)组成的,其中每一个语句都对应着几条、几十条甚至上百条机器指令的序列,这样的一条语句功能显然增强了,所以用它开发程序比用低级语言开发效率高得多。同时,由于高级语言的编写方式更接近人们的思维习惯,这样的程序易读、易懂、易于维护。 高级语言的另一个优点,是它编写的程序具有一定的通用性。低级语言涉及到计算机硬件细节,所以不具有通用性。要使用高级语言编写的程序在某一计算机上运行,只要该计算机提供该语言的翻译系统即可。 既然高级语言有着低级语言无法比拟的优势,是不是可以完全放弃低级语言呢?回答是否定的。首先,机器语言是最终操作计算机硬件的语言,任何高级语言程序想要在计算机上执行,首先必须翻译成机器指令;其次,虽然高级语言具有众多优点,但是执行速度比不上同样功能的低级语言,并且在对硬件的操作上,也不如低级语言灵活,所以在对程序速度要求高的场合如过程控制那样的实时系统中,或者编写某种新硬件的驱动程序时,仍然可以看到低级语言(主要是汇编语言)的影子。
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: 二级C++精品课程第一章引言-课前索引 下一篇文章: 二级C++精品课程第一章第二节程序设计方法 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|