2007年07月19日

我该学什么编程语言?

作者 非鱼

编程语言之争,自古有之,而且延绵至今。新手最喜欢到编辑论坛上发帖子问别人自己应该学什么,而每次这种帖子出来都会成为热门贴,因为下面会有N多人开始对战,互相贬低别人,力图说明自己所使用的语言才是最优秀的,其它的都是劣等民族。似乎只有这样才能说明自己的眼光和能力。而新手则每次都得不到自己所需要的答案,最终仍然难以选择,只好跑到书店去,找到一本满足自己审美观的书,便买回来,算是入了这个门,时间一长,便开始寻找其它语言的缺点,用来证明自己的选择是多么的明智。越是对其它语言了解的少的人,越是喜欢评论各种语言的优缺点。

当然,对于新手来说,不同的语言的确会带来不同的开发效率,而程序员本身却并不以开发效率来评定语言,因为一个开发效率高的语言,通常会被认识是傻瓜化的,并不适合程序员这个行业。因此,大家喜欢说自己选择的语言的执行效率高。这是一个很有趣的问题。

有些语言直接保存源代码,在执行的时候由该语言的编译器边解释边执行,因为每次执行都要进行一个编译的动作,所以执行效率当然会有一定的影响,部分脚本语言把代码编译成自己的二进制格式,再次启用的时候可以省掉一部分编译工作,直接跳到解释执行的步骤。而C,C++,Delphi之类的,则直接把自己编译成机器码,运行的时候,直接加载进CPU进行执行。而Java和C#使用了跟脚本语言相似的原理,把自己的源代码编译成二进制代码,执行的时候由自己的解释器调用执行。从这方面来看,各种语言的执行效率的差异,就是由不同的解释器在解释代码,传给CPU,再获取结果这一差异所造成的。

事实上,不同的语言,只是不同的武器而已,能力的高下,并不仅仅是由武器所决定的,更重要的,是内力的大小。在高手的眼中,落叶飞花皆为兵器。有人用VB操作指针写系统核心程序,也有人用Java写出整套的操作系统。网上也有人用同样的算法比较各种语言的执行效率,得到C比Python数学运算快20倍的结论,结果就有高手出来修改了Python的代码,充分利用Python自己的专有函数,从而使得同样的计算过程速度提高达60倍,反而得到比C快3倍的结论。

因此,什么语言都可以达到最终的目的,只是看使用它的是谁。当然,对于新人来说,有一个好的开发工具可以起到事半功倍的效果。Visual Studio的自动完成功能能够让你省去大量记忆函数和类名的时间,完善的编译时警告也能让你节约大量调试的时间,当然,用Eclipse写Java也可以达到基本一样的效果,但是其它语言就没这么容易了。没有好的开发工具支持,对新人会造成严重的打击,可能会造成放弃学习的念头。另外,如果选择一个比较偏门的语言,对找工作可能会造成影响。所以如果不是特别必要,就按照自己对微软和开源的喜好,从C#和Java中随便挑一个吧。至于说大型项目要用J2EE之类的话,纯属误导,不必相信。(淘宝是Java的,招商银行网上银行是Asp.net的)。