APP下载

基于计算机编程语言的区别、联系及发展前景的讨论

2017-04-06赵晨懿

数字通信世界 2017年8期
关键词:汇编语言编程语言使用者

赵晨懿

(陕西师范大学附属中学,西安 710061)

基于计算机编程语言的区别、联系及发展前景的讨论

赵晨懿

(陕西师范大学附属中学,西安 710061)

本文将通过对机器语言的发展史,与其各自区别和联系的论述,浅析机器语言的发展前景,并预测它如何直接影响人类未来的发展。

编程语言;发展史;区别;联系

1 汇编和编程语言

1.1 编程语言发展史

计算机语言共有机器语言、汇编语言、高级语言三大类,本文将探讨它们在不同场合及不同历史时期的应用。

1.1.1 机器语言

1946年2月14日,世界上第一台通用计算机ENIAC诞生于美国的宾夕法尼亚大学,这个机器上有一种特定的穿孔卡片,可以操作计算机进行工作。不过这种卡片的语言与人类语言差别极大,只有专家才能理解这种由0和1组成的语言,这也就相当于硬件的通电为1无电为0,这种语言被称为机器语言。机器语言是第一个计算机语言,这种语言是只有计算机才能识别的语言,以后的语言都是在其基础上发展变化而来。

机器语言的本质,其实是一群机器指令的整合,它们能直接被用二进制代码表示的机器识别并执行。但不同型号的机器语言是不相通的,用机器语言编写程序,使用者要首先理解所用计算机的全部指令和指令的涵义,编出的程序全是些0,1代码,不易被使用者理解,还易出错,是一件十分繁琐的工作,而这大大激励了人们去寻找更为优秀的计算机语言。

1.1.2 汇编语言

通过科学家们的不懈努力,计算机语言进入了第二阶段,出现了汇编语言。这是一种用于计算机或其他电子设备的计算机语言,也称为符号语言。它用助记符代替了操作码,用标号或地址符号代替了地址码。在不同的机器中,汇编语言对应着不同的机器语言指令集,通过汇编过程对计算机进行操作。

比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。这最终导致了高级语言的出现。

1.1.3 高级编程语言

当计算机语言步入到第三阶段时,就出现了面向使用者的高级语言,是一种被高度封装了的编程语言。与机器语言相反,高级语言以人类的日常用语为基础,是一种接近于人类语言习惯的编程语言。它使用人们易于接受的文字(如英语),程序中的符号也与日常用的数学公式有关,这大大提高了程序的可读性。高级语言还具有易学,易掌握的特点,一般人只需几周的时间的学习,便可上手编程开发出简易的程序。同时高级语言远离机器语言,消除了环境特异性带来的代码移植的困难,利用率高。高级语言作为语言发展的重要里程碑,自动化程度高,表达形式多样且灵活,将繁琐的事务抛给了编译程序,可以说是对程序员的一次解放。

当语言发展到这一阶段时,可以说已经开始开枝散叶。从1954年最早出现的Fortran语言,被科学家们广泛运用,到现在大家熟悉的C#、C++、JAVA。不同高级语言在合适的场合做合适的事,各自发挥各自的优势,皆在自己的领域占有一席之地,高级语言在这一历史时期快速发展。

1.2 汇编语言概述及其意义

虽然汇编语言相对于高级语言,像是一个被打入冷宫的贵妃,但它仍是计算机领域最重要的两类语言之一。在汇编语言还未出现之前,人们为了消除使用机器语言所带来的麻烦和不便,开始用一些简洁的英文字母、符号串来替代一个特定的指令(助记符)。比如,移位指令“SHL、SHR、SAL、SAR”,用于执行算数和逻辑运算的加法指令“ADD/ADC”,通用数据传输指令“MOV”等,这样一来,使用者能够轻松读懂并理解程序设计的意图,纠错及维护都变得简易了许多,这种计算机语言便是汇编语言,即第二阶段计算机语言。然而计算机并不能识别这些符号,而专门负责将这些符号译成二进制数的翻译程序就被称为汇编程序。虽然汇编语言同样非常依赖于硬件,无法跨机器使用,但效率非常高,针对计算机指定硬件而设计的汇编语言程序,能有效提高计算机硬件的功能和特长,程序简捷而质量高,因此汇编语言仍是计算机学习的最佳起点,在计算机学习中占有不可替代的一席之地。

1.3 高级编程语言概述及其意义

由于汇编语言过于依赖机器硬件,且其助记符记忆困难,写出的代码过于冗长,这激励了人类又发明了更加易用的高级语言。这种语言更加类似人类的自然语言,其较为显著的进步是避免了对硬件的直接操作,使得一般人经过短暂的学习之后都就可以进行编程的工作。

人们意识到我们所设计的计算机语言,应该要更接近于人们平时使用的语言,符号最好要类似于数学公式,同时又不那么依赖于机器硬件,编出的程序要能在所有电子设备上通用。经过科学家的不懈努力,40多年来,高级语言可以说是经历了一段“百家争鸣”的时期,共有数百种高级语言横空出世。它们前后经历了从早期语言到结构化程序设计环境,和从过程化程序语言到非过程化程序语言的历程。相应地,程序的研发也由最初的个体户、作坊式的封闭式生产,发展为产业化、流水线式的工业化开发。

回顾高级语言的发展历史,我们可以了解人类的需求是如何影响高级语言发展的规律。高级语言为了解放程序员而诞生,而语言的易用也使越来越多的人参与到编程当中,未来的语言应更是如此,高级语言具有简洁、智能、易表达、易理解的特点必然会是未来语言发展的趋势之一。

2 汇编语言与高级编程语言的区别和联系

2.1 两者的区别

汇编语言的特点是能被计算机直接识别和执行,使用它进行编程可以减少占用空间、提高运行速度,并能直接对硬件实施控制。在需要实时控制的时候,有着不可替代的重要地位,但汇编语言在编程和理解时要复杂、困难一些,尤其是在进行数据处理或是逻辑运算时更加凸显出其劣势。

而高级语言是面向使用者的语言,能更准确地被程序员所理解,它的表达能力强,功能多,编程效率高,上手速度快,自动化程度高,因而更受欢迎。在大部分软件开发中,使用者都采用高级语言编程,以提高编程效率。但在要求存储空间小,执行速度快,需直接对硬件进行控制的场合,则应用汇编语言编程,以达到优化程序速度的目的。

2.2 两者的联系

这样两种看似差别很大的语言,它们之间又有着紧密的联系。在一些程序设计当中,如果把两者结合起来使用,将两种语言的优势同时发挥出来,则可以解决很多特性难题。在许多程序的设计当中,高级语言和汇编语言可以相互交叉调用,进行参数传递,共享数据信息,这便是所谓的混合编程[1]。

程序员往往在高级语言程序中直接嵌入汇编语句,以实现对硬件直接进行控制的功能,这是混合编程中最常见的做法。也可以在高级语言程序中使用汇编语言中定义的变量和常量,或使用内部函数对汇编语句进行调用。

简而言之,这类混合编程的方法可以让高级语言与汇编语言互相取长补短,各自发挥各自优势,同时减少各自缺点所带来的不便,善用这个方法可以使开发和编程工作达到事半功倍的效果。

3 编程语言发展前景

未来电子产业的发展可能会颠覆传统的计算机体系结构,纵观前史,在语言、工具、框架三者中,语言的发展始终是相对缓慢的。但随着计算机运行速率的增加,CPU性能的成倍提高,图像处理、模式识别等技术的日益成熟,在计算机系体结构量变的同时,语言和编程模式也将会发生一些质变。

面向使用者的思想在高级语言的发展与设计中发挥着至关重要的作用。而未来语言的发展趋势,将会完全面向对象,更易表达指令,更易让人编写。编程语言将会更有表现力,可以帮助人们采用最优的数据架构完成更多的工作。因此,方便、快捷将是未来语言发展趋势的关键词之一。

不得不说,即使是在高级语言已得到高速发展的今天,用计算机语言进行编程对大多数人而言还是一个比较陌生或者说比较困难的,只有专业人才才能够熟练运用这些语言进行软件开发。回顾汇编语言与高级语言之间的进化历程,不难发现,随着高级语言的形式愈发向自然语言靠拢,易用与普及也必将是未来编程语言的发展趋势之一,计算机语言的使用将不再仅局限于专业的编程人员。

但人类往往过于看重新事物给自己所带来的便利,但却不曾注意新事物当中未被挖掘出来的有潜力的一面。在计算机语言发展史中容易被忽略的一点,就是所编程出的程序的可移植性。从汇编语言到高级语言的历程,打破了不同机器,语言不相通的尴尬局面。但在今天,形形色色的开发平台中依旧有着无法打破的隔阂。安卓上的应用需要在IOS中重新开发一遍,PS4上的游戏需要大量时间才能移植到PC上。而未来科学家们有可能打破这种局限性,使得程序可以在不同的平台上分享,避免移植程序所花费的精力。

目前常见的编程语言大都是命令式的,例如C#,C++或是Java等,这些语言的特征在于,代码里更多地表现出“如何(How)完成工作”这样的实现细节,例如for循环,i+=1等,这些细节或少或多会掩盖了我们的最终目标。因此,编程语言发展的最后一大趋势,便是让代码包含更多的“What”,让执行环境更加聪明地去适应当前的执行要求,程序员可以直接告诉计算机“做什么”,而不是“怎么做”。未来的使用者完全可以用计算机语言来实现“智能编程”,用真实生活中的工作流程来完成编程。

4 结束语

自高级语言出现以来,其发展的速度是惊人的,不少科学家和经济学家认为,科技的发展速度将按照摩尔定律呈指数型增长。随着科技的高速发展,会出现更多更高级的编程语言,计算机技术也必将会得到更广泛的应用,但随之而来的困难与挑战,也会像雨后春笋般地纷纷涌现出来。不少科学家曾试图对未来进行预测,但其成果大多是不尽如人意。我们利用过去这面镜子,谨慎地预测未来,是为了让人们看到未来更多的可能性,以对充满挑战的未来做好颠覆与变革的准备。

[1] 柴孝.C语言与汇编语言的混合程序设计技术[J].信息与电脑:理论版,2011(11):181-182

[2] 翟乃强.汇编语言与C语言及VisualC_混合编程[J].青岛科技大学学报,2003(9):137-138

[3] 叶连杰.计算机编程语言的发展与应用[J].信息与电脑:理论版,2014(11):191-192

[4] 张莉,韩其睿.浅谈C#编程语言的特点及潜在的新功能[J].仪器仪表用户,2005(5):83-84

[5] 张越男.试析C#编程语言的特点及功能[J].软件,2013(3):145-146

10.3969/J.ISSN.1672-7274.2017.08.020

TP31文献标示码:A

1672-7274(2017)08-0047-03

猜你喜欢

汇编语言编程语言使用者
压力-体积转换在CFC编程语言中的实现解析
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
Java编程语言的特点与应用
汇编语言与C语言的混合程序设计技术研究
新型拼插休闲椅,让人与人的距离更近
浅谈不同编程语言对计算机软件开发的影响
提高《汇编语言程序设计》教学效率的思考与实践
抓拍神器
面向对象Web开发编程语言的的评估方法
试论汇编语言与C语言的混合程序设计技术