已经有太多的语言了,从C/C++、Java、#C、php、ruby、php、perl ...,这个列表会非常的长。
一些语言用的人多,一些语言用的人少。一些语言如日中天,一些语言正在走向死亡。
首先,应该讨论语言的选择吗?
有人认为,不同的语言均能完成相同的功能,所以花太多的时间讨论这个问题是无谓的。有点道理,但也不是绝对的,比如你要写windows的驱动程序,你能选择的语言是有范围的。
就算实现功能不是问题,其他因素也会影响你对语言的选择,如客户的爱好,性能的考虑,实现的简易性,功能的复杂度等。
所以,我们在实现一个不同的东西时,还是会讨论语言的选择问题。
比如,我曾经反复的思考,是选择Rails呢,还是继续使用Java。
如何选择语言?
1、理解语言的使用环境和特性最为关键。的确,有不少语言是为一个特定的目的而诞生的。
2、有时,你选择的不是语言,而是平台。如Java EE和 .Net,它们不仅仅是一个语言。对于企业应用,这是不二的选择。
3、许多大型网站选择了php, perl, python, java等,是因为它们免费,大规模部署时,你不等不考虑软件的成本。
4、如果有多种选择,应选择团队最熟悉的语言。通常,开发效率不会应语言而不同,如果你觉得Rails就是比java开发快,这可能是你只看了那个简单的例子,真实的应用由于大量易变的逻辑,大量的时间都花在逻辑处理上了。如果逻辑是不变的,明确的,少敲几行代码才能体现出效率的高低。
5、语言的细微特性值得考虑。如,rails基于ruby, 为啥DHH不基于perl或python开发呢?一定有深层次的原因。可能和元数据处理能力有关。
6、对由多个子系统组成的系统,可以多种语言混合使用。如,用脚本语言做子系统间的黏合剂。
7、性能问题。只有出现性能问题的时候,它才是问题。不同的语言性能有很大差异,脚本语言通常性能不太好。不过,这不是选择的主要依据,所有这些主流语言都有人成功的开发的高性能的网站。另外,有个大网站开发了个把php编译成机器码的工具,性能一下子提升了很多,好处就是可以少部署很多机器,尤其是对于大网站而言。当然,有些语言如erlang等就是号称使用于开发高并发的应用。
只有理解了这些语言的特性和应用环境才能更好的选择语言。没有一种语言是通吃天下的,只有适合和不适合,没有好和不好。