【IT168 评论】选择使用什么样编程语言对于一个项目来说是一个最关键的技术决策。因为这项决策会影响到项目框架结构和你所能够利用上的资源,以及雇佣员工。既然如此,你是如何去选择编程语言的呢?
事实上,你很有可能采取一些大众化的做法,去引用在上个项目里所使用过的一些语言。或许你是一位对新鲜事物比较敏感的潮人,你会选择一些最新最酷的语言。几年前,很多很棒的年轻人已经蓄意待发。而现在他们让我意识到他们创造的节点是多么的棒,以及clojures已经达到了一定的程度。上次我还注意到,他们图灵完备的语言跟我的已经具有相同的解决问题的能力。实际上,他们还坚持认为他们的语言给了图灵语言更强的表现力,更快的编写以及更低成本的维护。
合适的工具,合适的工作
古人云:工欲善其事,必先利其器。如果你需要自动运行一些命令执行的维护任务,可使用一些擅长脚本编程的语言:如bash,perl,,hell even ruby;不要用Java. 如果你要解决的问题需要一个在微软操作系统的环境里能够无缝整合的桌面客户端,可以使用C#,不要用Java (Java桌面的粉丝,先冷静一下)。如果解决的问题需要处理大量的XML,以及你喜欢处理层积追踪,那当然要使用Java。
通常来说最大的区别归结为规则系统的复杂性。如果你从事的工作具有很多规则系统算法上的复杂性,使用一些能够擅长于表达的东西:一种函数式语言,像haskell 或者F#。或者就像90%的网页应用那样,做的就是数据的输入和输出,你需要一种具有较好的面向对象能力的语言去尝试塑造你的领域:Java 和 C# 都是很好的选择,以及还有几乎所有的其它的现代语言。
Scala
或许你非常痛恨自己想要妥协:为什么当你能选择两个的时候,而只选择函数的或程序的其中一个?为什么会遗漏这些语言的特色,要知道在过去的50年里你能拥有它们全部,而现在是煎熬在一团糟的语言上?是的,如果这听起来像你,你可能认为你是一位对新鲜事物敏感的潮人,但是,事实上你错失了数年的良机:是时候去了解一些Scalas 了。
我猜测Scala 能够如此流行的大部分原因是它最终为所有沮丧的Java开发者带来了它们想要的语言工具。现在Java实在是一种超级反应迟钝的语言,使用它工作时感觉非常的失望。有些人转换去使用C#,我也开始喜欢使用新的华而不实的语言工具。它们有让代码变得更好吗?很多的新语言的引进,提升了复杂性和增加了丰富性,但也使得代码很难被理解和不容易后期的维护。
重点是,Java是一种玩具语言:白痴都可以写出像样的合乎规范的Java. 不过麻烦是,Java这类玩具语言,编程的人无论他们有多牛,每个人还是被迫去编写冗长的愚蠢的Java 代码。这也使得很多技术牛人不能通过编写难以破解的废物来证明他们的水平。我也担心Lambdas将对Java代码库的可维护性带来冲击,以致每个人开始寻找新的令人困惑的方式来表达一切。