编程语言的昨天、今天和明天 刘宁 2000年 第38期   又是八月桂花香飘时节。回想当年满怀理想,踏入象牙塔,开始漫长的程序员之路的时候,至今仍是感慨良多。当一名程序员,带着执着的信念和年轻的心,在字母和数字的海洋里寻找那份或有或无的成功的喜悦和激情,是不少年轻人的梦想。   路,是遥远而漫长甚至痛苦的,然而,无论结果会如何,追求,本身就是一种快乐,不是吗?   来吧,让我们搭乘这班“编程大巴”,开始我们的程序员之路吧! #1 四世同堂   要明白计算机语言是怎么回事?它是不是就像我们平常说话那样的语言?计算机语言说白了就是我们与计算机打交道的一套规则而已。按这种规则计算机就能听你的话,否则它只能当你是个外国人,你说什么它都不会理你。   计算机是靠无数的逻辑电路开开合合来运行的,稍微有些物理常识的人都知道,这些物理元器件根本没有智慧,它们识别的只是高、低电位,用二进制的方法来表示,刚好就是1和0。所有我们发给计算机的指令,以及我们保存在计算机内的数据,都要最终转换成一系列的由0和1组成数字串,计算机才看得明白。这些0与1构成的东东就是我们所说的机器语言。   直接使用机器语言几乎是不可能的,人们于是用一些特定的符号来代替某些操作,然后由专门的转换程序将这些符号转换为机器语言。这种语言相对于机器语言来说,比较容易记忆和学习,被称为符号语言,或汇编语言。   我们现在经常所说的编程语言,如VB等等,不属于上面所述的范畴,它们被称为高级语言。在这些语言中我们可以写这样的句子:c=a+b,一看就明白,就是将a与b相加,然后将结果给c,非常方便和自然。高级语言不再是面向机器的了。使用它,人们就不用考虑不同机器内部构造的细节,只需关心希望完成的任务的实现方法。显然,计算机肯定不能直接执行这些语言,这里需要编译程序来作转换工作,将这些语言写成的代码转换成机器指令,然后由计算机来执行。高级语言的出现使得计算机软件开发变得更容易,同时推动了计算机的普及。   还有一种被称为第四代语言的程序语言,这种语言是非过程的。上面所说的几种语言都是过程化语言,意思就是说你想完成什么任务,怎么完成,加减乘除都需要你一步一步地写清楚。而非过程语言就是你只用说做什么,具体怎么做由它来完成。这种语言的代表就是数据库查询语言SQL。 #1 简单家谱   在基础知识内我们介绍了计算机语言的分类,实际上就是计算机语言的发展简史,这里着重介绍一下高级语言的发展历史。   世界上最早出现的高级语言是FORTRAN,它适合于数值计算。对于很多初学者来说,这种语言或许非常陌生,高校也逐渐取消了FORTRAN语言的教学。后来出现了很多高级语言,比较流行的有BASIC、COBOL、PASCAL、PL/1和ADA等等,它们中有些只是用于大型机的。实际上在早期,根本没有我们目前所说的PC,后来随着PC的发展,一些语言才有了PC上可以运行的编译器。   高级语言发展过程中,六十年代末出现的PASCAL是一个重要的里程碑。PASCAL语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。结构化程序设计是程序设计发展史中一个比较重要思想。   随着计算机的不断普及,软件应用领域也在急剧扩大,已从传统的科学计算和事务处理扩展到了诸如人工智能、计算机辅助设计和辅助制造等等很多方面,所需处理的数据也已从简单的数字和字符串发展为记录在各种介质上、并且有多种格式的多媒体数据,如数字、正文、图形、声音和影像等。数据量和数据类型的空前激增导致了许多程序的规模和复杂性均接近或达到了用结构化程序设计方法无法管理的程度。为了最大限度地使用已有的资源和减少程序开发的工作量,需要有一种比传统的过程式结构化程序设计方法抽象能力更强的新方法,面向对象的程序设计方法正是在这种背景下诞生的。AT&T公司Bell实验室推出的C++,成为最广泛使用的面向对象编程语言的代表。   C/C++具有很大灵活性,但这是以开发效率为代价的。一般来说,相同的功能,C/C++开发周期要比其它的语言长。人们一直在寻找一种可以在功能和开发效率之间达到更好平衡的语言。好的替代语言应该能对现存和潜在平台上的开发提供更高效率,可以方便地与现存应用结合,并且在必要时可以使用底层代码。针对这种需求,微软推出了一种称为C#的开发语言。C#在更高层次上重新实现了C/C++,是一种先进的、面向对象的语言,通过C#可以让开发人员快速建立基于微软网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。 #1 热点追踪   现在比较流行的编程工具有Visual Basic、VisualC++、Delphi、Power Build、Java等等。下面我们做个简单的介绍。   BASIC的语言与我们日常使用的语言比较相似,语法比较简单、随意,例如简单变量不需要预先定义等等。Visual Basic保持了BASIC一贯拥有的简单、容易学习的风格,加上微软提供了功能强大、使用方便的图形设计界面,并可通过动态数据交换(DDE)、动态链接(DLL)技术,使VB应用程序可以调用Windows操作系统资源,从而使得VB可实现超过BASIC语言自身的功能。   C/C++几乎是业界的标准。Visual C++是微软推出的开发基于Windows平台的程序的开发工具,它包含了功能强大的Windows应用框架。Visual C++一向以灵活著称,理论上使用Visual C++可以完成任何任务,并且不会让你的代码因为庞大而变得乱成一团。   Delphi是Inprise(原Borland)出品的开发工具。Delphi的强大生命力来自Pascal,它是以Object Pascal为设计语言的开发工具。它为用户提供了一个快速开发32位Windows程序的集成开发环境,强大丰富的可视化组件库(VCL)方便了程序员的开发。在Delphi中可以直接调用Windows API,以满足用户的特殊需求。   Java是1995年推出的一种新型面向对象的Internet编程语言,它具有简单、动态、可移植、与平台无关和高性能等优点。Java一推出就在业界引起轰动,迅速成为Internet/Intranet应用开发的主要语言。Java是一种纯面向对象语言,它的语法与C++很相似,因此很容易被C++程序员接受。   PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司(现已被Sybase收购)推出的产品。PowerBuilder不同于其它的程序开发工具,它完全按照客户/服务器体系结构,为开发信息管理系统而研制设计的开发工具。在客户/服务器机构中,PowerBuilder被作为数据库应用程序的开发工具而放在客户端。 #1 发展趋势   网络应该是这几年发展最快的了,Internet现在几乎是妇孺皆知,它极大影响了人们的生活,对各行各业都带来了一次革命。当然,它对程序语言的发展也产生了巨大的影响。非常明显的例子就是Java的出现,可以说Java语言的出现是网络对程序语言发展影响最大的事件之一。概括来说,编程语言未来会着重发展在以下几个方面: #1 易用性   这一直是计算机编程语言的主要发展趋势,从机器语言——符号语言——高级语言这个发展过程就可以明显看出这个趋势。随着Internet的普及,越来越多的用户,不管他们的计算机知识基础如何,都会有按照自己需要定制软件的需求。这样一来,提供更高层次的开发方法便成为主要需求之一。 #1 高效与安全性   在IT业的发展过程中,社会对软件的需求增长得更快。这就要求软件开发具有一定的时效性,从而导致对高效程序语言的需求,这可以从几个方面来加以促进,例如可以消除传统开发语言容易引起错的地方,保证语言开发的应用安全性。 #1 可移植性   Internet的精神是自由、开放和共享,然而全世界的计算机各种各样,传统高级语言只能做到代码级可移植,不同的程序到不同的计算机或操作系统平台上还需要重新编译,这远远不能满足现在的需要。“一次编译,到处执行”,一直是人们的目标,Java语言从某方面上实现了这种功能。 #1 网络性   随着Internet的发展,越来越多的网络编程语言得到重视,比如说目前比较流行的Perl语言,就是作网站的首选语言之一。而那些简单易学的VBScript、JavaScript也是很火。微软新推出的C#语言,紧密与现有的Web开发标准结合,能将任何组件转变为WEB服务,并且可以被运行于Internet上的任何平台的任何应用所调用。在未来网络的需求下,还会有更好的网络编程语言面世。