谈到同一类型中语言的选择,对很多人来说都是不一样的,这里说说我的观点。

排除掉被迫的,不由自主的选择,这些不由自主的选择有的是团队要求的,有些是客户要求,更多是由平台决定的。排除掉这些因素的作用,就是自己的感受了。

某些思想在语言级的支持是一个很重要的因素,比如说OO的支持。尽管要在语言中应用某种思想,对像C这样的语言也是可以办到的,但在语言级的支持会使得实现变得更加自然。现在不仅仅是OO思想,还有一些谈论得较多的特性在不同的语言有着不同程度的支持,这也是目前对于各种语言争论最多的部分。然而,还有一些很朴素东西被人们忽视,如结构化和并发的思想,这些很早就有的东西,随着OO思想的鼓吹,被很多人所忽视。我在看到Verilog HDL语言的时候,就被这种语言的这两种特性所吸引,印象最深的就是Wire变量和持续赋值的概念。随着OO万能的思想被怀疑,很多朴素的东西成为新的语言特性,如函数语言的一些特性。但这些特性本来朴素的面孔由于激烈的辩论和宣扬,变得光彩夺目,好像反而成了语言的根本。我常常和人说,你知道为什么“常量”作为语言的第一课吗,因为面对的现实世界中常量是如此的重要,所以放在第一课,但是很多人在忽视它的存在,仿佛他的世界只有变量。。

现代语言的一个特点是很多“重量级”的成员往往会有一个库在支持,这些库提供了很多可重用的便捷的调用以完成某些功能。使用这些库时有两种方式,显式调用和隐含调用。显示调用比较容易理解,这里就不解释了。而隐含调用可能是语言和库融为一体的方式如linq。当这些库专注于某个领域时,我们感觉不是在操作计算机这种冷冰冰的硬件,这种体验是非常不错的。然而当语言变得无穷大时,库也变得巨大,这个感觉就不好了,我们不知道我们面对的是一个什么东西,不是你能够在地球上看见的任何一种东西,甚至连恐龙都不是。

我早先使用VI编辑程序,当时用的时候很激动,觉得功能非常强劲。然而自从到了Windows平台,原来熟悉的操作已经不会了。这时候编程工具有点像我以前学的五笔,尽管打得快,但是一段时间不用,忘得也快。那么简单的记事本是不是很好呢,有的时候是的,写几行脚本无疑很方便。

当您面对一个系统开发时,开发工具也成了选择语言的一个考量。没有人会用记事本去开发一个大的系统,开发工具是否足够智能,是否足够简单易用决定您是否能够将主要精力用在解决问题上。VC6的感觉是痛苦的,而VS2008的感觉是美妙的。对于非W平台,很难用一个工具去处理大部分的编程问题,我往往都是多管齐下,写脚本的用Jedit,写XML的用XML编辑器,写工作量的用JaWE,写Java的用E...,我实在是拼不出这许多单词的名字,但我知道就是它,名字不重要。

对于语言来说,我实在讲不出更多的东西了,但我是诚恳的,我以Hello World为网名是因为我们认识每一个语言时,我们和它打招呼的方式都是一样的。尊重每一种语言从Hello World开始。