分享

串和数组

 风箫易水ap72ax 2017-04-17
自从有了计算机,也就有了计算机的编程。最初的计算机编程语言是所谓机器语言( 也称为第一代语言 ),即直接使用机器代码编程。用机器代码编程繁琐、易错,为了提高编程效率,人们引入了助记符,就出现了所谓汇编语言( 也称为第二代语言 ),汇编语言同机器语言相比,并没有本质的区别,只不过是把机器指令用助记符号代替。但这已是很大的进步,它提高了编程效率,改进了程序的可读性和可维护性。直到今天,仍然有人在用汇编语言编程。

   机器语言即是机器指令的集合。每种计算机都有自己的指令集合,计算机能直接执行用机器语言所编的程序。机器语言包括:指令系统、数的形式、通道指令、中断字、屏蔽字、控制寄存器的信息等。机器码是计算机能理解和执行的唯一语言。机种不同,其机器码组合方式也不一样。同一个题目到不同的计算机上计算时,必须编写不同机器语言的程序。机器语言是最低级的语言。
  由于机器码指令是用许多二进制数表示的,用机器语言编程必然很繁琐,非常消耗精力和时间,难记忆,易弄错,并且难以检查程序和调试程序,工作效率低。例如, 字母A表示为1010,数字9表示为1001。机器语言的加法指令码有三种形式,又要考虑进位,符号还要考虑溢出等情况。

  用汇编语言编程效率是提高了,但执行效率降低了。因为它运行之前,还需要一个专门的翻译程序(称为assembler汇编程序)将其翻译为机器语言。汇编语言是一种符号语言,它几乎和机器语言一一对应,但在书写时却使用由字符串组成的助记符。例如,加法在汇编语言中用助记符ADD表示,减法用助记符SUB表示等。
  早期的计算机由于速度慢、内存小,衡量程序质量高低最重要的指标是机器执行的效率。但是,随着计算机技术的发展,机器硬件的性能大幅度提高,程序的复杂度也在增加,人们越来越要求把简单、重复性的工作交给机器去做,而人更多地从事创造性的工作。程序的可读性和可维护性渐渐成为衡量程序质量高低的最重要的指标。很显然,汇编语言取代机器语言是必然的结果。
  虽然汇编语言较机器语言已有很大的改进,但仍是低级语言,它有两个主要缺点:
   ◇ 涉及太多的细节;
   ◇ 与具体的计算机相关。
  所以,汇编语言也被称为面向机器的语言。为了进一步提高编程效率,改进程序的可读性、可维护性,又出现了许多高级语言(也称为第三代语言),例如:Fortran、Basic、Pascal、Java、C和C++等,其中C/C++是当今最流行的高级程序设计语言。
   高级语言比低级语言更加抽象、简洁:
   ◇ 一条高级语言的指令相当于几条机器语言的指令。
   ◇ 用高级语言编写的程序同自然英语语言非常接近,易于学习。
   ◇ 用高级语言编写程序并不需要某种计算机的专门知识。
   同汇编语言类似,高级语言也需要专门的翻译程序(称为compiler编译器或interpreter解释器),将它翻译成机器语言后,才能运行。

   既然机器语言和汇编语言都是计算机可以理解的语言,使用它们可以完全控制计算机的行为,那么为什么人们还要创造并使用高级程序设计语言呢?
   因为机器语言和汇编语言都是低级语言,是面向机器的,与具体的计算机相关。学习起来困难,编程效率也低,可读性、可维护性也差。还是举个例子来说明。一个中国北方人想要去欧洲旅行,可是他不懂任何一门欧洲语言;恰好,一个懂得德语、英语、法语、西班牙语等所有欧洲语言的中国南方人也去欧洲旅行,他们结伴同行。中国北方人想要同欧洲人交流,有两种方式:一是学习各种欧洲语言,然后同各个国家的人直接交流;二是让那个南方人当翻译,将自己的意思讲给欧洲人听,并将欧洲人的回答反馈给自己。如果您是那个北方人,您选择哪种方式?我想答案是确定的,肯定要请南方人当翻译。虽然北方和南方在语言上也有一定的差异,但是比起同欧洲语言的差异来,这种差异显然太小了。况且,如果直接同欧洲人交流,需要学习多少门语言?
   高级语言和计算机的关系,与北方人的语言和欧洲人的关系相似。高级语言编写的程序借助于编译器就可以在特定的机器上运行,那些不同的欧洲人相当于不同的计算机,那个南方人相当于编译器,而那个南方人所熟悉的汉语则相当于计算机高级语言。高级语言编写的程序是由一系列语句(或函数)组成的,其中每一个语句都对应着几条、几十条甚至上百条机器指令的序列,这样的一条语句功能显然增强了,所以用它开发程序比用低级语言开发效率高得多。同时,由于高级语言的编写方式更接近人们的思维习惯,这样的程序易读、易懂、易于维护。
   高级语言的另一个优点,是它编写的程序具有一定的通用性。低级语言涉及到计算机硬件细节,所以不具有通用性。要使用高级语言编写的程序在某一计算机上运行,只要该计算机提供该语言的翻译系统即可。
   既然高级语言有着低级语言无法比拟的优势,是不是可以完全放弃低级语言呢?回答是否定的。首先,机器语言是最终操作计算机硬件的语言,任何高级语言程序想要在计算机上执行,首先必须翻译成机器指令;其次,虽然高级语言具有众多优点,但是执行速度比不上同样功能的低级语言,并且在对硬件的操作上,也不如低级语言灵活,所以在对程序速度要求高的场合如过程控制那样的实时系统中,或者编写某种新硬件的驱动程序时,仍然可以看到低级语言(主要是汇编语言)的影子。

语言处理程序的基础知识
   仍然是前述中国人到欧洲旅行的例子,那个中国南方人扮演了什么角色呢?它将北方人的意思翻译成欧洲某国人可以理解的当地语言,也就是扮演了翻译家的角色。语言处理程序完成的是相同的功能,在人和计算机系统之间扮演了相同的角色。语言处理程序主要包括汇编程序、解释程序和编译程序三种:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多