汇编语言和高级编程语言区别与联系
2017-06-30沈大智
摘 要:C语言是作为一个程序员来说,必须要掌握也是最基础的编程语言。在编程语言发展的历史长河里,出现了各种各样的编程语言,他们由不同的人开发又在不同的领域得到发展,从而发展到现今编程语言领域的百花齐放百家争鸣。作为机器码之上的汇编语言无疑是每个软件工程师必须要了解的编程语言。本文简述了编程语言的发展史,以及汇编语言和高级编程语言的区别和联系。在对比中对编程语言有更深入的理解。
关键词:汇编语言 高级编程语言 历史 趋势
中图分类号:TP313 文献标识码:A 文章编号:1003-9082(2017)06-0002-02
一、编程语言的发展历程
自从1946年世界上第一台电子计算机问世,人类和机器的交流方式和语言就成为了软件工程师和计算机从业者的主要研究方向,更有效更简便的编程语言成为了软件工程师的新宠儿,伴随着计算机的飞速发展,计算机的硬件升级速度也越来越快,对编程语言的要求也日益严格。在过去的几十年,编程语言有了长足的发展,至今已经有四代语言问世。大量的编程语言为了满足不同领域的编程要求和软件功能,经历了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试图寻找一个能够适应所有编程环境的通用语言,但是却没有一次成功。程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。
1.机器语言
计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0”和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表或者手册才能理解,使用的时候非常痛苦,尤其当你需要修改已经完成的程序时,这种看起来无序的机器语言会让你无从下手,也很难找到程序的错误。而且,不同计算机的运行环境不同,指令方式操作方式也不尽相同,所以当你在这种机器语言就有了特定性,只能在特定的计算机上执行,而一旦换了机器就需要重新编程,这极大的降低了程序的使用和推广效率。但由于机器语言具有特定性,完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。
2.汇编语言
通过我对机器语言的介绍,不难看出机器语言作为一种编程语言,灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言,即第二代计算机语言。但是这时候,计算机的硬件还是那些硬件,所以计算机还是不认识那些字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
3.高级语言
在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。在计算机还很稀缺的50年代,誕生了第一个高级编程语言。当时计算机的造价不菲,但是每天的计算量有有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。同时,因为资源的稀缺,计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简的编程语言的追求。用高级编程语言编写的程序需要经过翻译,翻译成机器所能识别的二进制数才能由计算机去执行。虽然,高级编程语言编写的程序需要一些时间去翻译代码,从而降低了计算机的执行效率,但是实践证明,高级编程语言为工程师带来的便利远远大于降低的执行效率。经过各软件工程师和专家的不懈努力,1954年,第一个完全意义的高级编程语言—FORTRAN问世了,他完全脱离了特定机器的局限性,是第一个通用性的编程语言。从第一个编程语言问世到现今,共有几百种高级编程语言出现,很多语言成为了编程语言发展道路上的里程碑,影响很大。比如:FORTRAN、BASIC、JAVA、C、C++、python等。高级编程语言也从早期的控制信号变成了现在的有结构有格式的程序编写工具,C++等语言的出现更是开启了面向对象编程语言的新章。同时伴随着软件编写效率的提高,软件开发也逐渐变成了有规模、有产业的商业项目。
二、高级编程语言、汇编语言和机器语言的区别
根据上面的简单介绍,我们可以说作为编程语言的一种划分,高级编程语言和低级语言构成了一般意义上的计算机语言。而高级编程语言又是和汇编语言对比而言。高级编程语言作为一种通用的编程语言,它的语言结构和计算机本身的硬件以及指令系统无关,它的可阅读性更强,能够方便的表达程序的功能,更好的描述使用的算法。同时,它更容易被初学者所掌握,很容易学习。而且容易学习掌握。但是高级编程语言因为是一种编译语言,所以他的运行速度比汇编程序要低,同时因为高级语言比较冗长,所以代码的执行速度也要慢一些。所以说汇编语言更适合编写一些需要高效率运行的程序或者对程序代码的长度又要求的程序,同时在直接控制硬件方面也能够起到很好的作用。
高级编程语言,作为用户层面的編程工具,用户并不需要去了解硬件的结构,而是去用逻辑的语言去实现想要的目标,但是因为高级编程语言的架构高于汇编,所以不能编写直接访问硬件资源的系统程序,因次,高级编程语言必须要调用汇编语言编写的程序来访问硬件地址。
机器语言(machine language)就是一种指令集了,它是一串数据代码,也可以叫做机器码。他能够由硬件直接读取,同时硬件返回的数据也是这种二进制代码。机器语言是作为直接控制硬件的桥梁,连接这软件和硬件两个不同领域的技术。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言执行速度是上述语言中最快的,而且无需编译直接执行。用机器语言编写程序,编程人员不仅要对所有二进制数字所指代的指令烂熟于心,而且还要手动为程序分配存储空间以及输入和输入。所以这是一个十分复杂的过程,即使编写简单程序也好耗费大量的人力。而且不论是代码还是输出,全是“0”和“1”的数字串,在后期的阅读和维护也会非常困难,所以机器语言已经慢慢的推出了主流编程语言的领域。
三、汇编语言和高级编程语言的优缺点
1.汇编语言的优缺点
汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:
1)可以轻松的读取存储器状态以及硬件I/O接口情况
2)编写的代码因为少了很多编译的环节,可以能够准备的被执行
3)作为一种低级语言,可扩展性很高
缺点:
1)因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长已经编写的困难
2)因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG而且调试起来也不容易
3)就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4)因为机器的特殊性造成了代码兼容性差的缺陷。
2.高级编程语言的优点
因为高级编程语言很多,我们就拿C语言展开论述。C语言是一个面向过程的语言,用户根据自己的需求来调用函数或创建目标。因为明确的目标性以及理解容易,一个新手很容易去学习C语言。同时C语言因为发展的历史,拥有很多函数库,用户可以根据自身的需求在代码中加入头文件来调用这些函数来实现自己的功能,当然使用者也可以根据自己的喜好编写函数来在后续的代码中调用,关键字像if,else,return,main,end等这些简单易懂的单词也使得C语言记忆和理解起来更加容易。作为一个通用性很高的编程语言,C语言的可移植性是它出色的优点之一,你可以在任意一台电脑、一个设备上运行程序而不需要重新编译。
四、对未来编程语言的展望
通过上面的介绍,我们不难发现面向对象思想在编程设计中占有很重要的地位,同时现在编程语言的多元化也告诉我们,未来的语言发展不会是一枝独秀,也不会是单纯的语言发展,而是以完全面向对象的姿态你展现我们的现实世界。它将更容易被工程师学习和使用,人们完全可以通过简单的操作来完成复杂的编程。这就得出了未来语言发展的第一个趋势--面向对象,由计算机来提供现有的函数功能、封装结构。而工程师只需要去拿现成的函数来调用,大大提高了代码的利用率。同时简单性也成为未来追求的目标,如果一个有简单计算机知识的人只需学习一些基本的操作就能编写适合于各种情况的应用程序,这样创造和编写的成本将会大大降低。在互联网高速发展的今天,安全也将成为了代码编写中必不可少的因素,一个更安全更具有保密性的语言也是未来的需求。综上在这样一个“百花齐放百家争鸣”的编程语言环境,只有能真正给使用者带来便利的语言才会走的更远走的更好。
参考文献
[1]张祎蕊,C++教学方法及学习方法的调研与分析,计算机教育第23期
[2]王文东,李竹林,尚建人,汇编语言与C语言的混合程序设计技术,计算机发展第十六卷第八期
[3]路士兵,浅谈计算机汇编语言的特点和学习方法,科技创新导报2014NO.20
[4]曲瑞超,学习汇编语言的重要性,赤峰学院学报(自然科学版)第26卷第一期
作者简介:沈大智,男,汉,2000年02月10日出生,籍贯:河北省保定市涞源县,高中在读,就读学校:衡水第一中学。