谷歌打算要改变我们这个世界写软件的方法。近年来,这个搜索引擎巨头试图在这个星球中已经最广泛使用的编程语言上做改进,已经推出了2种新的编程语言。通过一种叫Go的语言,谷歌试图拿它来替换年事已高的C或C++语言,希望它能提供一种更加快捷的在数据中心里开发大型软件平台的方法。而通过一种叫Dart的语言,谷歌想用它来替代JavaScript,改进我们开发运行在Web浏览器里的软件的方法。
但是,不管这些新的编程语言多么的具有吸引力,我们不得不问一句,它们需要多久才能真正的流行起来——如果能够的话。毕竟,新的编程语言不停的诞生。但只有很少一部分能被广泛的接受。
在普林斯顿大学和伯克利的加州大学,两位研究人员试图在为什么有些编程语言能走进它们的黄金时代而众多余下的却不能的原因上贡献出自己的智慧。在一个他们自称为“业余研究”里,Leo Meyerovich 和 Ari Rabkin 调查了数万个程序员,梳理了流行的代码库SourceForge上超过30万个项目——所有的这些努力都是为了能清楚为什么老的编程语言仍然处于霸权地位。
“为什么没有语言能够真正的超越C语言?”Rabkin问道。自从C语言诞生以来的35年里,我们操作系统和软件设计都获得了巨大的飞跃,但是,虽说C语言中这段时间里有了加强,但也有很多新的非常成功的语言出现,可C语言仍然是开发语言中的中坚力量。
“为什么我们不能真正的超越C语言?”
— Ari Rabkin
部分的原因,他说,是因为语言的设计者并不都具有一个让这些语言实用化的目标。“学院派人的一个习惯就是喜欢去研究解决没有人真正遇到过的问题,”Rabkin说。 Rabkin最近刚刚获得了伯克利加州大学的计算机科学博士学位,现在在普林斯顿大学做博士后研究工作。
Rabkin说,学院派的人经常想要开发出一种不同凡响的语言,但他们却从来不思考如何能让这种语言变的实用。在一些案例中,他们在一些最简单的事情上都做的很失败,比如说为这种新语言写文档。在另一些案例中,设计者不停的往一种语言里添加新的特征,成功的使试图使用这种语言的技术人员的大脑因超载而宕机。
“这样的问题的解决办法并非都是技术范畴,”Meyerovich说。“我们需要去发明一些能够被“大众了解”的语言。
张扬(Yang Zhang),Slice-Data分析公司的共同创始人,曾在攻读麻省理工博士学位中途退学,他曾是众多的追随一种新的叫做Scala的语言的信徒之一,但他承认,这种语言之初糟糕的文档和只能从语言的设计者哪里获得帮助的情况给学习者造成了巨大的障碍。“我当时真是一个受虐狂,”他这样描述2006年学习这种语言经历。
Meyerovich说,他和Rabkin收集到的数据显示,程序员在开始使用一种新的语言时并不总是去花时间好好学习它们——这使得他们的编程过程跌跌绊绊。例如,他举例个例子,ActionScript,这是一个由Adobe公司开发的一个面向对象的编程语言。根据Meyerovich统计的数据显示,程序员都认为ActionScript很容易。但是,当他们开始使用这种语言开发一些新的东西——比如他们从多媒体开发转到游戏开发——问题就出现了。
另外一个问题是程序员的自满。大部分的程序员都会学习3到4种编程语言,然后他们就停步了,这两位研究者说。“随着阅历的增加,你会认为这些程序员年龄在增长,他们会变得更加智慧,他们会学更多的语言。但是我们发现这不是实情。他们在停步不前。”Meyerovich说。
部分的原因是,当程序员的年龄达到35、40年龄段时,他们通常会从亲自动手编程的角色上转移去管理其他的程序员。从这点上看,他们学习或实现新的编程语言的动机减少了。
Meyerovich认为,我们的编程语言还有很多问题,需要整个开发社区继续为之奋斗和探索。正向他和Rabkin挖掘这些数据一样(你可以在网上分类查询它们),他们不仅希望能找到产生这些问题的根源,还希望能在如何解决这些问题的方法是发现一些新的视角。
“这是一个很热门的问题,我们甚至不认为从分析这些数据的过程中看到了事情的真相。”Meyerovich说。