根据程序设计语言发展的历程,可将其大致分为4类:机器语言、汇编语言、高级语言和4GL语言。
(1)机器语言
机器语言是指直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。例如,某台计算机字长为16位,即有16个二进制数组成一条指令或其他信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。不同处理器类型的计算机,其机器语言是不同的,按照一种计算机的机器指令编制的程序,不能在指令系统不同的计算机中执行。机器语言的缺点:难记忆、难书写、难编程、易出错、可读性差和可执行性差。
(2)汇编语言
为了克服机器语言的缺点,人们采用了与二进制代码指令实际含义相近的英文缩写词、字母和数字等符号来取代二进制指令代码,比如,用“ADD”代表加法,“MOV”代表数据传递等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。
汇编语言是由助记符代替操作码,用地址符号或标号代替地址码所组成的指令系统。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序称为汇编程序,汇编程序是系统软件中的语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言的全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
(3)高级语言
机器语言和汇编语言统称为低级语言,由于其二者依赖于硬件体系,且汇编语言中的助记符量大、难记,于是人们又发明了更加方便易用的高级语言。在这种语言下,其语法和结构更类似普通英语,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以进行编程。高级语言是有效地使用计算机与计算机执行效率之间的一个很好的折中手段。经过努力,1954年,第一个完全脱离机器硬件的高级语言——FORTRAN问世了,60多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、BASIC、LISP、Pascal、C、C﹢﹢、C#、VC、VB、Delphi、Java等。高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
20世纪60年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是各自为战,缺乏科学规范的系统规划与测试、评估标准。其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失。软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切极大地震动了计算机界,史称“软件危机”。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言——Pascal语言出现,标志着结构化程序设计时期的开始。
20世纪80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(object)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C,VB,Delphi就是典型代表。高级语言的下一个发展目标是面向应用,也就是说,只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。
展望计算机未来的发展方向,面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,未来语言的发展将不再是一种单纯的语言标准,将会完全面向对象,更易表达现实世界,更易为人编写,其使用将不再只是专业的编程人员,人们完全可以用订制真实生活中一项工作流程的简单方式来完成编程。计算机语言发展的特性:
①简单性:提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。
②面向对象:提供简单的类机制以及动态的接口模型。对象中封装状态变量以及相应的方法,实现了模块化和信息隐藏,提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现代码的复用。
③安全性:用于网络、分布环境时有安全机制保证。
④平台无关性:与平台无关的特性使程序可以方便地被移植到网络上的不同机器、不同平台。
(4)4GL语言
4GL即第四代语言(Fourth-Generation Language),它是一个简洁的、高效的非过程编程语言,如ADA,MODULA-2,SMALLTALK-80等。在第四代语言中,用户定义“做什么”而不是“如何做”。第四代语言依靠更高级的第四代工具,用户可以使用这个工具定义参数来生成应用程序。
4GL这个词最早是在20世纪80年代初期出现在软件厂商的广告和产品介绍中的。因此,这些厂商的4GL产品不论从形式上看还是从功能上看,差别都很大。但是人们很快发现这类语言由于具有“面向问题”“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。
1)4GL判断标准
确定一个语言是否是一个4GL,主要从以下标准来进行判定:
①生产率标准:4GL一出现,就是以大幅度提高软件生产率为己任的,4GL应比3GL提高生产率在一个数量级以上。
②非过程化标准:4GL基本上应该是面向问题的,即只需告知计算机“做什么”,而不必告知计算机“怎么做”。当然4GL为了适应复杂的应用,而这些应用是无法“非过程化”的,就允许保留过程化的语言成分,但非过程化应是4GL的主要特色。
③用户界面标准:4GL应具有良好的用户界面,应该简单、易学、易掌握,使用方便、灵活。(www.daowen.com)
④功能标准:4GL要具有生命力,不能适用范围太窄,在某一范围内应具有通用性。
2)4GL缺点
虽然4GL具有很多优点,成为了应用开发的主流工具,但也存在着以下严重不足:
①4GL虽然功能强大,但在其整体能力上却与3GL有一定的差距。这一方面是语言抽象级别提高以后不可避免的(正如高级语言不能做某些汇编语言做的事情);另一方面是人为带来的,许多4GL只面向专项应用。有的4GL为了提高对问题的表达能力,提供了同3GL的接口,以弥补其能力上的不足。如Oracle提供了可将SQL语句嵌入C程序中的工具PRO∗C。
②4GL由于其抽象级别较高的原因,不可避免地带来系统开销庞大,运行效率低下(正如高级语言运行效率没有汇编语言高一样),对软硬件资源消耗严重,应用受硬件限制。
③由于缺乏统一的工业标准,4GL产品花样繁多,用户界面差异很大,与具体的机器联系紧密,语言的独立性较差(SQL稍好),影响了应用软件的移植与推广。
④4GL主要面向基于数据库应用的领域,不宜用于科学计算、高速的实时系统和系统软件开发。
3)4GL发展趋势
在今后相当一段时期内,4GL仍然是应用开发的主流工具。但其功能、表现形式、用户界面、所支持的开发方法将会发生一系列深刻的变化。主要表现在以下几个方面:
①4GL与面向对象技术将进一步结合。
面向对象技术集数据抽象、抽象数据类型和类继承为一体,使软件工程公认的模块化、信息隐蔽、抽象、局部化、软件重用等原则在面向对象机制下得到了充分的体现。它追求自然地刻划和求解现实世界中的问题,即追求问题结构与软件结构的一致性,使得开发人员可以把主要精力放在系统一级上,按照自己的意图创建对象并将问题映射到该对象上。面向对象技术所追求的目标和4GL所追求的目标实际上是一致的。目前有代表性的4GL普遍具有面向对象的特征,但这些特征都很有限。所采用的实现技术往往是在传统的关系型数据库管理系统的基础上再加上一层面向对象的开发工具,而这层工具未能完全与数据库管理系统有机结合在一起,对抽象数据类型和继承性的表达也很有限,极大地限制了面向对象开发技术对4GL的支持。相信随着面向对象数据库管理系统研究的深入,建立在其上的4GL将会以崭新的面貌出现在应用开发者面前。
②4GL将全面支持以Internet为代表的网络分布式应用开发。
随着Internet为代表的网络技术的广泛普及,4GL又有了新的活动空间。出现类似于Java,但比Java抽象级更高的4GL不仅是可能的,而且是完全必要的。
③4GL将出现事实上的工业标准。
4GL产品很不统一,给软件的可移植性和应用范围带来了极大的影响。但基于SQL的4GL已成为主流产品。随着竞争和发展,有可能出现以SQL为引擎的事实上的工业标准。
④4GL将以受限的自然语言加图形作为用户界面。
4GL基本上还是以传统的程序设计语言或交互方式为用户界面的。前者表达能力强,但难于学习使用;后者易于学习使用,但表达能力弱。在自然语言理解未能彻底解决之前,4GL将以受限的自然语言加图形作为用户界面,以大大提高用户界面的友好性。
⑤4GL将进一步与人工智能相结合。
4GL主流产品基本上与人工智能技术无关。随着4GL非过程化程度和语言抽象级的不断提高,将出现功能级的4GL(4GL流行产品还处于实现级),必然要求人工智能技术的支持才能很好地实现,使4GL与人工智能广泛结合。
⑥4GL需要数据库管理系统的支持。
4GL的主要应用领域是商务。商务处理领域中需要大量的数据,没有数据库管理系统的支持是很难想象的。事实上大多数4GL是数据库管理系统功能的扩展,它们建立在某种数据库管理系统的基础之上。
⑦4GL要求软件开发方法发生变革。
由于传统的结构化方法已无法适应4GL的软件开发,工业界客观上又需要支持4GL的软件开发方法来指导他们的开发活动。预计面向对象的开发方法将居主导地位,再配之以一些辅助性的方法,如快速原型方法、并行式软件开发、协同式软件开发等,以加快软件的开发速度,提高软件的质量。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。