首页 > 代码库 > 编程语言,一路走来
编程语言,一路走来
人类发明了编程语言,本是为了能控制机器。计算机越来越强大,编程语言也不断革新。于是我大胆地认为,编程语言的意义将超越对机器的控制,它或许是一种文明的出发点——机器人文明。为了能更好地展望编程语言,让我们先来回顾一下它的发展历程。
1 程序设计语言的发展经历了五代:
第一代语言:机器语言
第二代语言:汇编语言(亦称符号语言)
第三代语言:高级语言
|__ 面向过程(如C、BASIC、Pascal)
|__ 面向对象(如C++、java、C#)
第四代语言:数据库编程语言(也叫非过程化语言)
第五代语言:被称为人工智能语言
2 编程思想的发展:
面向机器
面向过程
面向对象
面向主体
面向应用
面向语言
3 程序设计语言的类型:
3.1 命令式语言 :
现代流行的大多数语言都是这一类型,比如 Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C# 等。
3.2 函数式语言 :
这种语言非常适合于进行人工智能等工作的计算。如 Lisp。
3.3 逻辑式语言 :
这种语言主要用在专家系统的实现中。如Prolog。
3.4 面向对象语言 :
现代语言中的大多数都提供面向对象的支持,主要的纯面向对象语言是 Smalltalk。
在有了一个概括的印象后,让我们来细细品味一下那些了不起的智慧结晶。
4 机器语言与汇编语言
它们都面向机器,优点效率高,缺点太繁琐。
机器语言真的是机器的语言,但却是目前所有编程语言的本质。可以说,它老了,但它的精神犹在。
汇编语言略施小计,用符号代替二进制码,简化程序,但治标不治本,它依然是一种低级语言、依然让人感到繁重不堪。但在我看来,正是它启发了此后的高级语言。依然是,老了,精神犹在。
现在着重谈一下汇编语言.
由于具有简捷、占用内存少、直接控制硬件、执行速度快的优势,它宝刀还未老,经常与高级语言配合使用。
它能够完成许多其它语言所无法完成的功能。就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在Linux的启动部分。由于这部分代码与硬件的关系非常密切,即使是C语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。
通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点。
5 高级语言
高级语言,也称算法语言,是一种与自然语言相近、面向用户的语言。计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方和解释方式。
5.1 FORTRAN(1954)
亦译为福传, 是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。早在1951年,美国IBM公司约翰·贝克斯(John Backus)针对汇编语言的缺点着手研究开发FORTRAN语言,并于1954年在纽约正式对外发布。Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性. Fortran语言是一种极具发展潜力的语言,在全球范围内流行过程中,Fortran语言的标准化不断吸收现代化编程语言的新特性,并且在工程计算领域仍然占有重要地位。 不可否认,Fortran语言与目前流行的JAVA,C#等高级语言相比,它缺乏创造力。但是,工科学生必须注意到,由于Fortran在工程计算领域长期处于统治地位,很多优秀的工程计算软件都是运用fortran语言编写,为了能够使用这些商业软件的高级功能,必须先学会fortran语言,才能编写应用程序接口。
5.2 ALGOL(1958)
ALGOL是计算机发展史上首批产生的高级语言,当时还是晶体管计算机流行的时代,由于ALGOL语句和普通语言表达式接近,更适于数值计算,所以ALGOL多用于科学计算机。ALGOL是第一个清晰定义的语言,其语法是用严格公式化的方法说明的。ALGOL语言并没有被广泛的使用,但它是许多现代程序语言的概念基础。Algol 58(1958), Algol 60(1960), Algol W(1966)都是这一家族的成员.其中,Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。
5.3 COBOL(1959)
在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,于1959年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言COBOL。COBOL语言使用了300多个英语保留字,大量采用普通英语词汇和句型,COBOL程序通俗易懂,素有“英语语言”之称。目前COBOL语言主要应用于情报检索、商业数据处理等管理领域。
5.4 BASIC(1964)
它拥有以下特点:
5.4.1 构成简单。 BASIC语言的最基本语句只有17种,而且它们都是常见的英文单词或其变形,如READ、END等。
5.4.2 是一种“人机会话”式的语言。通过键盘操作,用BASIC语言编写完的程序,可以在计算机上边编写、边修改、边运行。
5.4.3 功能较全、适用面广。BASIC语言除了能进行科学计算和数据处理外,还能进行字符处理、图形处理、音乐演奏等。
5.5 LOGO(1968)
LOGO语言是一种早期的编程语言,也是一种与自然语言非常接近的编程语言,它通过“绘图”的方式来学习编程,对初学者特别是儿童进行寓教于乐的教学方式。 LOGO语言创始于1968年,是美国国家科学基金会所资助的一项专案研究,在麻省理工学院(MIT)的人工智能研究室完成。一名叫佩伯特的心理学家在从事儿童学习的研究中,发现一些与他的想法相反的教学方法,并在一个假日中出外散步时,偶然间看到一个像海龟的机械装置触发灵感,于是利用他广博的知识及聪明的才智而最终完成了LOGO语言的设计。绘图是LOGO语言中最主要的功能,佩伯特博士就是希望能通过绘图的方式来培养学生学习电脑的兴趣和正确的学习观念。中文LOGO语言 最近已经有人开发出了flash版LOGO语言,还挻好用,不仅可以实现常用命令,还自行开发了一些机器人智能命令。LOGO语言之所以是儿童学习计算机编程最好的一种语言,就因为它是针对儿童而制作的编程语言,能使儿童在认知与技能上得到较大的发展。
5.6 PASCAL (1971)
在讲Pascal语言之前,不得不提到软件发展中第三个里程碑——结构化程序设计。结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。咦,这我们很熟悉啊,if判断,for循环。原来,这也是人类智慧的结晶。为了应对所谓的“软件危机”,人们开始对程序设计方法进行研究,寻求一种新的,能适应简明性,可靠性和易修改性要求的程序设计方法。荷兰著名计算机科学家,图灵奖得主E.W.Dijkstra提出了“结构化程序设计”这一方法。为适应这一新的程序设计方法,人们在积极研制相应的程序设计语言。Pascal语言就是在这种情况下产生的,并被认为是第一个实现结构化程序设计的语言。(另外,QuickBASIC也是一种结构化程序设计语言)(注软件危机:60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 )PASCAL由瑞士苏黎世联邦工业大学的沃斯(N.Wirth)教授研制,于1971年正式发表。PASCAL语言有利于在程序设计方面顺利入门,有利于培养学生严谨、清晰的程序设计风格和良好的习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一。
5.7 C语言(1972)
由美国贝尔研究所的D.M.Ritchie于1972年推出。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言是美国AT&T(电报与电话)公司为了实现UNIX系统的设计思想而发展起来的语言工具。C语言的主要特色是兼顾了高级语言和汇编语言的特点,简洁、丰富、可移植。作为一种通用编程语言,C正被越来越多的计算机用户所推崇。使用C语言编写程序,既感觉到使用高级语言的自然,也体会到利用计算机硬件指令的直接,而程序员却无需卷入汇编语言的繁琐。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。指针是C语言的一大特色,可以说C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。接下来,让我们看一看,这门盛久不衰的语言是如何建立起来的。C语言的祖先是BCPL语言。1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL语言(CPL也是高级语言)。1970年,美国贝尔实验室的 Ken Thompson以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现,所以很快被淘汰。C语言即保持 BCPL 语言和 B 语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。自从被C语言取代之后,B语言几乎已遭弃置。C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
5.8 C++(20世纪80年代)
美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现了C++。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性,如多重继承。C++语言发展大概可以分为三个阶段: 第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额; 第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击; 第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。(注泛型:泛型是程序设计语言的一种特性。一些强类型编程语言支援泛型,其主要目的是加强类型安全及减少类转换的次数)
5.9 C# VS JAVA(20世纪90年代)
C#是一种最新的、面向对象的编程语言,是微软为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能(微软C#语言定义主要是从C和C++继承而来的)以及Visual Basic简易使用的特性,是第一个组件导向程序语言,和C++与Java一样亦为对象导向程序语言。JAVA是由Sun公司于1995年5月推出的一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。C#看起来与Java有着惊人的相似,但是C#与Java有着明显的不同。下面简单地把C#和Java的相似处列出来,虽然在这里我们重点讨论的是C#和Java的不同点,但是了解一下二者的相同之处也是很有必要的。a.跨平台 b.消除了指针(在C#中可以使用指针,不过必须注明unsafe关键字)c. 所有的类都是从对象派生出来,并且必须使用New关键字分配内存d .都具有接口(interface)的概念。C#最引人入胜的地方是它和Java的不同,而不是相似的地方。自C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍。虽说两个语言有着"90%的重叠",但那另外"10%的较量"也往往能够左右一个天平的方向。但在大刀阔斧地对C++进行改革的同时,C#显得更为保守,它对很多原来C++中很好的性质予以了保留,在Java中都被很可惜地丢掉了。在基本类型和单根继承的对象之间的类型统一方面C#提出的box/unbox要比Java的包装类显得高明,效率也要好。对C++不安全的指针及内存分配方式,C#和Java都提出了托管执行环境。效率问题是托管执行环境一直以来令人诟病的地方,Java虚拟机(JVM)的解释执行方式曾经让很多开发者"慢的不可忍受"。C#的JIT编译方式为C#在这块战场上赢得赞声一片,在异常处理方面,不管从内置支持,还是从执行效率来讲,C#都较Java略胜一筹。"一次编程,多处执行"是程序设计一直以来的一个诉求,尤其是在现代互联网络时代。在跨平台方面,Java的支持和实现都是为人称道的,虽然JVM的速度仍然让人备感头疼。而C#虽然在底层构造方面对移植性进行了充分的考虑,但至少目前还没有成熟的,经过检验的产品。在C#中类的声明与Java很相似.这是合理的因为经验告诉我们Java模型工作得很好。从纯技术角度来讲,C#无疑较Java更具竞争力. 但它还太不成熟,不可能挤垮JAVA. C#还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是:“这是对JAVA的反击” 。"语言选择乃艺术而非技术问题". C#和Java都提出了对传统C++艰深,晦涩的语法语义的现代改良。JAVA所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用JAVA)。由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的JAVA电话)。C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席KALPATHI S. SURESH指出来的那样:"我发现所有这些都是渐进的。如果C#不存在,我们总能回到JAVA或C和C++。这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。"
5.10 第四代语言(4GL)
目前,程序设计语言及编程环境正向面向对象语言及可视化编程环境方向发展,出现了许多第四代语言及其开发工具。如:微软公司(Microsoft)开发的Visual系列(VC++、VB、FoxPro)编程工具及Power Builder等。关于第四代语言,主要特征是 : 只需要告诉计算机需要做什么, 而如何做,不需要告诉计算机,这是与之前语言的主要区别 。由于近代软件工程实践所提出的大部分技术和方法并未受到普遍的欢迎和采用,软件供求矛盾进一步恶化,软件的开发成本日益增长,导致了所谓“新软件危机”。这既暴露了传统开发模型的不足,又说明了单纯以劳动力密集的形式来支持软件生产,已不再适应社会信息化的要求,必须寻求更高效、自动化程度更高的软件开发工具来支持软件生产。4GL就是在这种背景下应运而生并发展壮大的。这一类语言由于具有“面向问题”、“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。4GL以数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境.它提供了功能强大的非过程化问题定义手段,用户只需告知系统做什么,而无需说明怎么做,因此可大大提高软件生产率。4GL基本上应该是面向问题的,即只需告知计算机“做什么”,而不必告知计算机“怎么做”。当然4GL为了适应复杂的应用,而这些应用是无法“非过程化”的,就允许保留过程化的语言成分,但非过程化应是4GL的主要特色。目前4GL主要面向基于数据库应用的领域,不宜于科学计算、高速的实时系统和系统软件开发。4GL虽然功能强大,但在其整体能力上却与3GL有一定的差距。这一方面是语言抽象级别提高以后不可避免地带来的(正如高级语言不能做某些汇编语言做的事情);另一方面是人为带来的,许多4GL只面向专项应用。有的4GL为了提高对问题的表达能力,提供了同3GL的接口,以弥补其能力上的不足。如Oracle提供了可将SQL语句嵌入C程序中的工具PRO*C。随着Internet为代表的网络技术的广泛普及,4GL又有了新的活动空间。出现类似于Java,但比Java抽象级更高的4GL不仅是可能的,而且是完全必要的。4GL将进一步与人工智能相结合。目前4GL主流产品基本上与人工智能技术无关。随着4GL非过程化程度和语言抽象级的不断提高,将出现功能级的4GL(目前的4GL流行产品还处于实现级),必然要求人工智能技术的支持才能很好地实现,使4GL与人工智能广泛结合。(小资料:“真正的程序员用c,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB (vb是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言) 相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。它一直是程序员至爱的编程工具。)
5.11 第五代语言
第五代语言就是自然语言又被称为知识库语言或人工智能语言,人工智能语言主要有LISP、Prolog、Smalltalk、C++。目标是最接近日常生活所用语言的程序语言。目前并没有真正意义上的第五代语言,LISP和PROLOG号称第五代语言,其实还远远不能达到自然语言的要求。人们可能会问,用人工智能语言解决问题与传统的方法有什么区别呢?传统方法通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。对于人工智能技术要解决的问题,往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库(包含事实和推理规则),程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些条件和目标不大明确或不完备,(即不能很好地形式化,不好描述)的非结构化问题比传统方法好,它通常采用启发式、试探法策略来解决问题。Lisp 语言最早是在 20 世纪 50 年代末由麻省理工学院(MIT)为研究人工智能而开发的。约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如欧几里德对几何的贡献. 他向我们展示了,在只给定几个简单的操作符和一个表示函数的记号的基础上, 如何构造出一个完整的编程语言. 麦卡锡称这种语言为Lisp, 意为List Processing, 因为他的主要思想之一是用一种简单的数据结构表(list)来代表代码和数据。值得注意的是,麦卡锡所作的发现,不仅是计算机史上划时代的大事, 而且是一种在我们这个时代编程越来越趋向的模式.我认为目前为止只有两种真正干净利落, 始终如一的编程模式:C语言模式和Lisp语言模式.此二者就象两座高地, 在它们中间是尤如沼泽的低地.随着计算机变得越来越强大,新开发的语言一直在坚定地趋向于Lisp模式. 二十年来,开发新编程语言的一个流行的秘诀是,取C语言的计算模式,逐渐地往上加Lisp模式的特性,例如运行时类型和无用单元收集。Prolog语言是为处理人工智能中也是大量出现的逻辑推理问题(首先是为解决自然语言理解问题)而设计的。一般来说,LISP可以称为人工智能的汇编语言, Prolog是人工智能更高级的语言。近年来出现了具有人工智能特色面向对象程序设计,称为面向主体(Agent,亦称活体)程序设计。往一个对象中增加更多的智能,使它能根据环境的变化进行推理并规划自己的行为,就得到主体(Agent)。面向主体的程序设计语言也已经有了一些,如OZ等(小资料第五代计算机:上个世纪五十年代中期,科学家发明了第一代真空管计算机,紧接着在五十年代末期,科学家们发明了第二代晶体管计算机,在六十年代中期又发明了第三代集成电路计算机,六十年代末期有了第四代的大规模集成电路计算机,短短的十来年,计算机硬件的发展就发展了四代,从真空管发展成了大规模集成电路。但是在后来的时间内,第五代计算机却迟迟未能出现,即使到现在,三四十年过去了,我们也没能见到它的影子。什么是第五代计算机?第五代计算机可以说就是我们前面介绍过的人工智能机,或者机器人。它能理解人的自然语言,使用它的人不需要编写程序,不需要敲打键盘或移动鼠标来指挥它,靠讲话就能对计算机下达命令,命令它各种工作。它可能是具有渊博知识的专家,它可能成为人们从任何工作的助手和参谋。它还可能"思考",帮助人进行推理、判断,具有逻辑思维能力。它如果安装在机器人身上,就成为名副其实的机器人。但是,第五代计算机还是没能出现,为什么?因为它在处理人的自然语言的问题上出现了困难,它如何理解人的语言,如何自己说出人的语言(绝对不是录音),在这些问题上,计算机学家一时手足无措。)
6 尾声
80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(Object)。高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。另外,在巴塞罗那举行的Server Side‘s Java专题讨论会上,Martin Fowler和Neal Ford做了一场展示面向语言编程的重要报告。Fowler曾撰文将面向语言编程定义为“围绕一组领域特定语言来构建软件的编程风格”。Fowler和Ford又进一步发展了其中的一些想法,并提出了“超越面向对象编程的革命性进步”的可能性。按照Martin Fowler的说法,面向对象的领域建模让我们得以“汇集词汇”,但语法——将词汇组合起来的方法——却是缺失的;DSL(领域特定语言)补足了语法的方面。因此面向语言编程引导我们“从思考词汇,即对象,走向一种结合了词汇和语法的语言观念。” 微软的Jeffrey 认为,未来编程语言的发展将沿着C#语言的方向,更加自动化,智能化。编程语言最初的目的是为了让人可以控制机器,从机器语言、汇编语言直到现在的高级语言和运行在虚拟机上具有更多面向对象和动态特性的语言,编程语言最初的目的一直没有改变,只是我们现在可以利用高级语言更加方便、轻松的开发我们的应用来控制机器。因此,未来的编程语言将会让开发人员更轻松的控制机器,高度的自动化和智能化将是未来编程语言发展的方向。走向能让机器人智能化的编程语言的路还很漫长,但它的趋势已不言而喻,让我们相约22世纪,等待那属于机器人的时代。(小资料:中国计算机应用的发展在经过操作系统汉化显示环境,中文输入法的两次较大跨越后,正在经历一个重要的历史时期:中文化编程已成为当务之急。好在易语言已经担当起领头羊的重任。)