我们为什么更需要多元化的程序员?
太多的程序员把自己限制在C++和Java中,而错过了众多的新选择。
美国人自我感觉良好,他们只喜欢讲本土语言,这已经众人皆知了。那么,美国程序员也差不多。如今的计算机科学研究生往往在离开学校时只精通一门编程语言--通常是一门主流系统语言,比如Java或C++--然后在整个职业生涯中几乎完全离不开它。
从表面上看这是有道理的。C++和Java都是功能强大的复杂语言,它们两个中任何一个的语法学习书籍都摆满了学校的图书馆,更不要说这两种语言的用途极为广泛。正如51CTO.com此前发布的编程语言排行榜历期榜单中,Java和C++总是遥遥领先,如果你对任何一个不熟悉的话,将来找工作的时候就会不得不错过无数的机会。
但是,如果整个软件开发领域都几乎完全基于两种语言--况且实际上是两种非常相似的语言--这也是十分危险的,容易导致停滞不前。萨皮尔-沃尔夫假说认为,人类的思维模式受到语言的深刻影响。语言学家们对他的假说到底有多大效果还存在争执,但是对计算机程序语言这个人类真实语言的抽象版来说,假说似乎特别恰当。这些年来,虽然软件开发的理念一直在前进着,比如功能性和面向方面编程,但是主流语言始终围绕着几十年前就出现的面向对象思想缓慢变化。
然而在主流之外,我们经常看到各式各样的火花。每年都有新的编程语言出现--51CTO.com曾介绍过很多新兴语言,如面向分布与并发的Erlang、具有动态性的函数对象混合型语言Scala、类似Java和C#的新语言Fan等--其中许多是非常有价值的,也有许多真实的项目因为采用了它们得到了良好的回报。是不是应该也让软件开发者们离开一下Java和C++这两间屋子,出去看看外面的世界?
CLI - 新语言的聚宝盆
优秀的程序员并不一定要是优秀的计算机科学家。同样的,并不是所有的编程语言都一定要是异常严密的。微软的.Net平台,它的CLI(Common Language Infrastructure,通用语言基础结构)是新语言的丰富来源。维基百科上说该平台现在至少支持55种语言,而且它们之间拥有充分的互操作性。
更有趣的新东西来自微软本身,新出现的Axum语言可以让开发者在多核心和多重处理的硬件上更容易的编写程序。你可能还记得去年我写过Sun的Fortress语言,它有类似的目的。而Axum更有趣些,因为它并非想全部复制Java或C++等系统语言的所有功能,而是专门为并行化设计。在Axum里你甚至不能定义对象,这和一些其他的CLI语言比如C#是不同的。Axum所作的一切就是简化多重处理,让工作变得更友好,而这个任务传统语言做起来却很棘手。在51CTO.com与有着Windows编程教父之称Jeffrey的一次关于未来编程语言的发展方向的对话中,Jeffrey也提到:未来编程语言的发展将更加自动化,智能化。
在.NET平台之后,开放的JVM也收到了广泛的欢迎。许多开发语言现在已经可以编译为Java字节码,其中一些相当有趣。比如已经拥有不少支持者的Groovy,它提供了类似Java的语法但实际上是一种动态语言,和Perl、Python和Ruby类似。它们提供给开发者Java运行时的安全性与稳定性,但编写起来不像Java语法那么严格。
还有一些语言并不在现有的平台之中,但也已经在商业应用上得到接受。例如Lua,一种轻重量级嵌入式脚本语言,已经在很多商业项目包括视频游戏开发中得到应用,比如魔兽世界,还有其他许多游戏。
主流之外的成功
在大多数情况下,这些非主流的语言只有在特殊用途、小项目和研究时才会出现。但是,并非每个企业都不敢迈出跨越Java和C++这一步。例如,博客领导者Twitter最近就宣布,计划放弃其目前的架构,基于Scala语言进行全新的设计。Scala和Groovy有些相似,在JVM上运行。Twitter的工程师Alex Payne说,"我们知道人们能够用C++写出性能完美的代码……但我们真的喜爱Scala,值得为它赌一下。"
提醒你一下,Twitter可能并不是个好的参考案例。因为它的原始架构是用Ruby写的,当时也几乎没有人敢用Ruby来赌一下。况且考虑到Twitter的坎坷经历,他实在是想换成什么架构都不过分。
当然了,Twitter的例子还是值得考虑。而Scala这样的语言要想得到风险投资家和行政管理层的信任还有待时间的考验,在此之前,它们还是不得不屈尊在几个"充满激情"的程序员之间,就像Twitter刚创业时一样,无论它们的潜力有多大。
现在,在开发经理在各种不同的语言之间做出选择之前,他们需要让自己的团队多了解几种开发语言。这就是为什么我希望看到更多的计算机科学系学生能成为"多元化程序员",而不是某一种语言的专家。我担心那些把大部分时间都花在学习语法上的程序员会错过更大的场面。良好的语言技巧永远是最重要的工具,但全面扎实的软件设计基础将帮助你成为一个了不起的程序员,无论你使用什么语言。
- 为什么Oracle有时会用索引来查找数据(10-04)
- 脚本语言占据半壁江山(03-12)
- 野心时代-中国互联网年度最佳雇主评选结果揭晓(01-03)
- Facebook放大招:RNN让语言翻译快九倍(05-06)
- SYSTRAN发布最大化提升用户便利度的多语言处理技术(06-04)
- 工程师特烦恼 | 码农有多苦,听我数一数(01-10)