Twitter增长的秘密


  近日,在旧金山举行的Web2.0博览会上,Twitter的亚历克斯·佩恩(Alex Payne)在谈论到编程语言的技术细节时表示,他希望编程语言能够帮助自己的公司解决近年来面临的日益严重的网络拥塞现状。他的公司正打算摒弃造成目前痛苦局面的编程语言,转而投向一种叫做Scala的新兴且不太知名的语言。

  相关背景:Twitter,兴起于2006年,是一种供人们向朋友或公众发表140字符左右消息的网络服务。如今,该服务已经拥有大约八百万用户。当用户在Twitter上张贴一条短消息后,该项服务便会将该则消息张贴到网络,并发送给手机和Twitter应用程序。概念虽然简单,但其幕后所需的技术是十分复杂的。

  目前流行的网络编程语言是Ruby on Rails(也称 RoR 或简称 Rails,是一个使用Ruby语言写的开源网络应用框架――译注),它构建了Twitter用户界面的外观和风格,同时也是其他许多网站的编程语言。

  由于常被称作“前端”的用户接口往往基于Ruby构建,所以对于后台操作如信息排队等,也可使用Ruby技术。但随着Twitter日渐流行,基于Ruby的后台已经不能胜任处理自发的海量信息的任务,甚至会造成名为“失败的鲸鱼”――Twitter在服务瘫痪时用来向用户发送的一种错误消息――的消息在网络中的瞬间扩散。

  所以,Twitter的团队转向Scala――这种由瑞士洛桑理工学院(EPFL)的马丁·奥德斯基(Martin Odersky)教授在2003年提出的编程语言。佩恩正在撰写一本该编程语言的书籍,在这次演讲中,佩恩解释到,Scala吸收了许多其他语言的优点并剔掉他们的不足。Scala的一些特点对Twitter极具吸引力,其中包括它的并行处理能力――即不同的指令可以同时使用同样的系统资源。当数百万人同时向全球各地的不同设备发送消息时,这个特点就显得尤为重要。

  佩恩表示,Scala对于程序员来讲灵活实用。如果程序员需要结构化编程,Scala可以提供结构;如果需要自由格式的编程方式,Scala同样支持。重要的是,对于佩恩和Twitter的其他工程师来讲,Scala是一种崭新的、令人兴奋的、“漂亮”的程序语言,可以使团队保持充实且繁忙的状态,使程序员感受到自己有空间在为开发一些新鲜有趣事物做贡献,这点并不像目前已经成熟的语言如Java和C++。

  佩恩也提醒到,Scala并不完美,但它的优点远远超过了其劣势。它最显著的缺点是较难掌握,原因在于它存在大量程序员不熟悉的特性和语法。佩恩补充到,Scala相对较新,这意味着它没有可靠的成功记录。但他和Twitter仍愿意冒险采用,因为这种语言在一些测试中表现得很好。

  佩恩透露,目前Twitter服务采用混合编程语言设计。用户界面使用Ruby on Rails,这更加符合人们“点击网页” 的习惯。但到年底,Twitter希望可以拥有一套后台完全使用Scala语言编写的服务。

  公司也希望所有通过应用程序接口(API)与Twitter相连的第三方服务能适用Scala代码,从而完全绕开Ruby on Rails。佩恩说:“当你在考虑使用大量快速访问API的程序时,我们发现使用Scala,情况可以变得更好。”