多媒体和网络时代中,C++,Delphi,Java,还是C#?[8D]
在应用领域,C/C++不算高级语言,对硬件和系统程序员才算。虽然C++首脑任务坚称C++
的地位不会有太大变化,但.NET和Java的对抗很可能最终将其踢出主赛局。
在多媒体、游戏等领域,据gamedev.net的资料,此领域以C++为主流。PS2,XBox等纯游
戏机上只有C/C++可用,几乎所有的大游戏公司用C++,但近两年有一些采用其他语言的尝
试。总的来说,大部分是C++,有一些是用的Delphi,一小部分是VB,很少的Java。从很
久之前起,个人和小团体开发用VB的就较多,基本上都是不喜欢C/C++的人,现在因为考
虑移植能力而转向Delphi和Java,当然也有转用C++的。最近由于新技术出现较多,基于
C++的支持库变得更为复杂,于是出现很多对于Java替代C++的可行性的讨论,有比较可靠
的说法是在较好的优化下配合最新的JIT,可以达到同等C++程序速度的1/4,图形密集程
序在使用OpenGL生接口时与同等C++程序速度差不多,但Java3D接口很慢。现在有微软在
力推.NET平台,C++在此没有什么优势,可能对今后的局势有较大的影响。
Pascal前途难料,苹果出了基于FreeBSD核心的MacOS X,这回是彻底的C/C++系统了,
CodeWarrior放弃了Pascal编译器的开发,主推C++、Objective-C、Java,只剩下Pascal社
区和民间的编译器在撑腰呐喊。Borland的OP倒是火得很,可惜Pascal没有严格标准,没有
其他编译器能很好的兼容Borland的OP。
网络,当前商家的淘金之地,继浏览器之争之后,微软又被Sun的Java抢了先,不得不和与
他一样的behemoth抢夺地盘。C++默默地筑造着网络的基础。
C++:在传统领域,如算法研究、数据计算、各种底层系统,几乎就是C/C++的天下,尤其
在Unix类机器上。由于编程资源非常集中,以致很难不选择C++。C++有统一的标准,各种
硬件平台都有它的编译器。有几年历史的大公司的软件也大多是基于C++的,大量的编程
库资源也是基于C/C++的。理论上,C++能做任何事情。C++有强大的类型定义能力,如无
所不包的对象模型、算符重载、模版、宏,可以对自己做扩充和定义;另一方面,也导致
C++异常复杂、难维护,且编译速度很慢。因此也有很多人把C++当成更好的C用,不用C++
中的复杂功能,这在游戏编程中很常见,因为他们更愿意把大部分精力放在实现感兴趣的
功能而不是代码上。而兴趣在程式上的人则偏爱竭尽语言的能力,写出各种高明的代码,
很可能是非常难懂的代码,但非常高效好用,例如C++标准模版库。在新兴领域,C++的处
境就比较艰难,没有统一的高层工具库,而且工作量很大,而且是不必要又不得不的大。
而且C++背后的权威人物Bjarne Stroustrup(就是在C++中加入dynamic_case<type>“这
种丑陋语法”的人,用他自己的话说
)拒绝改进C++语言,只推动改进C++库。所以C++
的地位基本稳定的固定,既不会消亡,也不会扩大。其他评价:黑客级人物必用,不适合
入门教学用途。
Delphi:确切的说是Object Pascal。简单直观而又强大是最直接的理由。不需要去花多少
心思考虑语言实现,想什么写什么,而又不失C++的高效,甚至某些部分执行速度快过C++
,如部分字符串操作和文件读写缓冲等,编译速度狂快(由语言特性决定)。包含大量
好的新语言特性,拥有既简洁又强大的运行库和对象库,直接集成COM、Corba、网络组件
、数据库,支持Windows、Linux,并即将支持.NET平台。在Delphi社区,对Delphi的支持
是近乎狂热的,成员们拿出自己最得意的源代码来共享,如果你是新手,又想快速成为高
手,Delphi是最佳选择。但你来自C++背景,你会对begin
..end、不能随处声明变量、没有
++运算符等感到反感;如果你喜欢复杂的代码且很熟悉STL并大量使用,你会因Delphi没有
模版而失望。Delphi提供了大部分的系统API接口,但也有很多欠缺,Delphi社区提供了
大量的API接口或封装,如DirectX(Delphi不需要导入库和静态库,百兆的C/C++SDK的
Delphi版只有几兆
)、OpenGL1.2的接口和封装,但一般会有几种不同的版本,质量好坏
不一,当然也未必比Borland提供的差,事实上Borland也用社区提供的源代码。只有
Borland一家做OP的编译器,没有业内标准,没有其他选择,虽有可部分兼容OP的
FreePascal,可没有了Delphi的库的编译器的吸引力就少了大半。由于Delphi刚兴起没几
年,使用它的公司还不多,组织倒有不少。如果你将找工作,一定弄清你要工作的领域是
否多用Delphi,如数据库领域就是。其他评价:节省你一大笔时间,可以给你充分的机会
改进你的程序或出去玩
。
Java:由C++简化而来。Sun对Java语言的设计上的确有很大创新,当年博得一致的喝采。
语言并不必须复杂才能强大,就像在微软还是英雄的年代Bill Gates说他能用Basic做到
C能做到的任何事情。Java也正是如此。由虚拟机执行Java程序,不依赖于平台,这是给
程序员的一大福音。尤其对于互联网,Java是具有天生的资质。但由于Sun的一些失误,
也使Java有了些不好的名声和导致Java没有达到预期的前景。一是Sun的虚拟机速度太慢
且不好的垃圾收集算法导致宝贵的内存资源极度浪费,除非空闲物理内存大于程序所需
全部内存,否则系统就会严重受垃圾收集的影响,这个弊病遭到强烈的抨击。现在的虚
拟机技术要比以前强了不少,我个人觉得其他厂商提供的Java虚拟机都比Sun的好。二是
糟糕的类库。Sun对PC的了解远不如对他们的高端服务器和工作站,设计的类库也是浓烈
的Sun的味道,而且各部分风格不一,似乎是很多缺少交流的人写出的。熟悉PC编程的人
会觉得极为罗索冗长且怪异低效,以致出现很多其他替代类库(微软就做了两套)。这
个问题到1.2版出台时才有些改善。三是Sun拒将Java交给标准局,做虚拟机需Sun授权。
因此,Java现在集中在电子商务领域,由于其跨平台能力,其地位基本上是不可替代的。
其他评价:网络应用必学。
C#:新品种的C++,被称作C++--。可以说迎合了大部分C++程序员的愿望,即保持C++
的强大又做了适度的简化,同时加入了时髦的语言特性,基于.NET平台,简单的说,
太棒了。但是等等,C#并不完美,如果你是C++程序员,你未必完全喜欢它。而且由于
C#是新东西,还没有多少资源可用。总之,这里还是未开垦的土地,虽然很有吸引力
,但你必须对是否踏进这片土地非常谨慎。如果你是决心跟着微软走的,而且已有编程
经验,那么可以放心地拿起C#。其他评价:将来很可能是Java的劲敌,微软的主要开发
工具。