技术开发 频道

D语言能否成为明日之星



    【IT168 专稿】在计算机刚问世之初,并没有象我们现在丰富而且强大的计算机语言,甚至连汇编语言都没有。完全要靠着编程人员的毅力和耐心一点一点地输入机器二进制码来编写程序。但自从面向过程、面向对象乃至更灵活的动态语言的出现,使计算机这个曾经陌生的巨人变成了我们今天亲密的朋友。长久以来,实现计算机语言都需要很深的技术功底,但不知怎么,最近几年计算机语言突然变得多了起来,已经不再局限于传统的C/C++、Pascal、Java等。

    而这些新诞生的语言大多都表现出了更高的灵活性。尤其是大名鼎鼎的Symantec C++ 编译器的作者最近又推出了一种D语言,据说是集C++、Java、C#、PHP等众多语言的优势于一身。除了这种D语言外,国内国外也推出了很多的其他计算机语言。现在计算机语言虽然变得越来越多,但就象论语中所说的那样,人们往往在不知所措时都会一种“惑”的感觉,这种感觉不是源于没有选择,而是我们的选择太多。正所谓“多而惑”。那么这个世界上真的需要这么多的计算机语言吗?未来的计算机语言将会走向何方呢?

    一、计算机语言迅速繁殖,大有百家争鸣的态势

    这个世界上的软件有很多种类,但这其中被认为最难实现的有三类:操作系统、数据库(如SQL Server、Oracle等)以及编译器(将计算机语言编译成机器码)。这些软件不仅在实现上有难度,而且在实现时需要大量的人力和物力。在这三种软件中编译器的规模是最小的,也就是说,靠一个人的力量是在短时间内是可以做出一个优秀的编译器的。

    虽然编译器在实现规模上不大,但在实现难度上并不次于另外两类软件。比如要实现一个编译器,需要对数据结构、编译原理、算法等很了解,而且还要熟悉操作系统。在编译器诞生最初的几十年里,设计编译器的工作基本都是由计算机专家来完成的。那时的编译器必须将源代码编译成机器码,因此,实现起来的难度很大。

    自从进入21世纪以来,好象计算机语言一下子多了起来。尤其是基于Java的开源脚本语言,更是多如牛毛。我们可以在   sourceforge或其他的开源代码网站查到如下一些常见的开源脚本语言:
    Groovy
    Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。 Groovy可以直接编译成Java字节码。
   Jython
    Jython是Python的纯Java实现。她无缝地结合了Java类与Python,使用户能以Python语言的语法编写在Java虚拟机上运行的软件。
    Beanshell
    Beanshell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。
    JRuby
   JRuby是一个Ruby脚本语言的纯Java实现。JRuby可以嵌入任到Java应用程序并可以在脚本中使Java类。

   类似的语言还很多,这里不再一一列举。这些脚本语言之所以如雨后春笋般地诞生,我想最主要的原因可能是现在新出现的语言基本都是解释型的,因此,实现难度没那么大了。

    除了这些脚本语言外,另一类象C#、Java一样的计算机语言也开始产生,其中最著名的可能要算D语言了,它是Symantec C++编译器作者的最新力作。据作者在他的网站(http://www.digitalmars.com/d/)上介绍这种D语言来时说:“D语言是一种系统级的编程语言,它同时拥有C或C++的高效以及Ruby和Python一样的高生产率的语言”。

    D语言还不仅拥有以上特性,它还具有如C#、Java一样的高级特性,如垃圾回收、模板等。但D语言目前有一些特性还不支持,如类的动态装载。D语言虽然有一些不足,但由于它出自于这位优异的C++大师之手,因此,它在未来还是会受到非常多的关注的。

    除此之外,国内也掀起了发明计算机语言的热潮。如最早的易语言。这是一种可以使用汉字来编程的语言。虽然这种语言看上去很不错,但由于它将if、for等关键字都换成了汉字,因此,可能这并不符合大多数人的编程习惯。至于它将走向何方,还得让时间来证明。
    另外,还有如太极语言等一些杂七杂八的语言也不断地涌现。这些语言和主流语言共同形式了类似于先秦时百家争鸣的局面。

    二、D语言成为强势新语言,它会成为明日之星吗


    自从2004年开始,D语言才开始开发,现在已经推出第一个正式版本V1.0。可能正是由于D语言是Walter Bright这位C++大师一个人开发的,因此,它才会受到如此的关注。从一般的经验来讲,越是后面出的语言,在功能上就会吸取以前各种语言的优势,并且尽量弥补它们的不足。

    有很多人经常拿C++、C#和Java来进行比较。在使用感觉上,可能后两种语言会使程序员更舒服一些,但在效率上C++会更胜一筹。这在有时会形成两难的选择。在D语言诞生之前是不可能在效率和易用性兼得的。但如果看一下D语言的介绍之后,心中会砰然一动,“Great, just what I need.”。 D语言正是结合了C#、Java和C++以及PHP、Python等动态语言的特性于一身。尤其是它提供的垃圾收集器并不同于Java和C#的垃圾回收。它的垃圾回收器并不依赖于虚拟机,而是作为可执行程序单独来运行的。这样它的效率非常高。这也意味着这个类似C++语法的计算机语言再也不用释放内存了,只要按需来分配内存即可。

    下面是D语言和C/C++、C#和Java的部分特性比较,从中可以看出,D语言中和了这些语言中几乎所有的特性,而且还有一些新特性,如合并数组,是其他语言都不具备的。

特性

D

C

C++

C#

Java

垃圾回收

动态改变数组大小

数组边界核对

合并数组

别名

面向对象

 

接口

操作符重载

模块

类的动态装载

嵌套类

属性

嵌入汇编语言

直接访问硬件

模板

约束


    下面是一个简单的D语言程序片段:

import std.stdio; void main(char[][] args) { writefln("Hello World, Reloaded"); foreach (argc, argv; args) { CmdLin cl = new CmdLin(argc, argv); writefln(cl.argnum, cl.suffix, " arg: %s", cl.argv); delete cl; } struct specs { int count, allocated; } specs argspecs() { specs* s = new specs; s.count = args.length; s.allocated = typeof(args).sizeof; foreach (argv; args) s.allocated += argv.length * typeof(argv[0]).sizeof; return *s; } writefln("argc = %d, " ~ "allocated = %d", argspecs().count, argspecs().allocated); } 从上面的程序中可以看出,D语言从程序主体上非常类似C或C++语言,但它的语言和这两种语言有着很大的不同。如程序
一开始的foreach循环。这是非常巧妙的设计,使用了这种方法来代替所下的for语句:
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) ... ... ... ...
    从上面的种种特性来看,D语言的确是一种非常新颖、奇特的语言。但现在D语言还在发展过程中,更新很快,在不同版本中有很大差异。现在说它会取代C++、C#、Java,还是会在未来消失,都为时尚早。但目前D语言对于想领略未来新语言的人来说,无疑是一个很好的选择,但最好不要用它来开发正式的程序,否则分带来很大的风险。


    三、人们真的需要这么多计算机语言吗?未来的计算机语言会是什么样呢?

    对于计算机语言来说,一般人会一两种就足以应付自己的工作了。但现在世界上各种层次的语言有上千种。而且几乎每年都会有很多新的语言诞生。那么这将预示着什么?越来越多的计算机语言能使我们的工作变得更轻松吗?这些问题的答案也许并不是简单的能用是或否来回答的。我们应该从多角度立体地去看问题。

    首先,从正面去看。计算机语言多了,开发人员会有更多的选择。我想总会从中选出一两种适合自己的开发语言。但这么多的计算机语言。可能会使一些开发人员无所持从。不知道选哪个好。而且各种开发语言在性能、功能上都有很大的差异,可能无法找到一种适合我们所有需求的语言。而D语言的诞生可能从某种程度上解决了这个问题。但由于D语言刚刚起步。可能在稳定性上还有待考验。

    那么计算机语言按这样的发展势头,在未来的若干年后,我们会看到什么样的语言呢?我想也许会出现一种可以写一次,并可编译成各种形式的代码的语言。如我们用这种语言写一个程序,可以将它编译成Java的字节码,这样它就可以很容易跨平台了。如果只在微软的平台上运行,那么可以将它编译成.net的中间语言,这样它在Windows平台上会有非常好的表现。甚至可以将它编译成本地代码,这样它的效率会更高。

    上面的语言只是一种幻想,不过,最近Sun正打算邀请IBM和Cray开发一种利用Sun在Java方面的优势开发一种可以充分利用CPU的计算能力的新语言。这种语言将被编译成Java的字节码,并运行在JVM上。

    不仅如此,在不久前,美国国家标准与技术局(NIST)称,他们将与法国、德国、日本和英国的同事联合开发出一种新型计算机语言。该语言被称为“程序规范语言软件”,简称“ISO 18629”。这种语言的最大特点是能像人一思考,而并不是简单地执行一条条计算机指令。它可以在计算机执行指令前进行“思考”。这种语言听起来有些象人工智能语言。

    随着计算机技术的飞速发展,计算机语言在未来将会有一个质的变化,也许会往更智能的方向发展。一种会思考的计算机语言,至少可以为开发人员提供一此建议!哈哈,越想越兴奋,但愿我们真能看到这么聪明的人工智能语言。
0
相关文章