克里斯·拉特纳(Chris Lattner)花了一年半时间打造了一套新的编程语言。他没有向任何人提起这件事,甚至连他最亲密的朋友和同事也不知道。
他利用晚上和周末的时间进行这项工作,从2010年夏天开始一直干到第二年年末,将这门编程语言的骨架搭建完毕,然后向公司高管透露了自己的秘密。 这个项目得到了高管们的重视,数名资深工程师加入了进来。18个月之后,该项目成为了公司主要关注的对象,项目团队规模扩大了不少。
拉特纳工作的公司,就是苹果。
这门语言叫做“Swift”。苹果认为这是一个更快速、更有效开发iPhone、iPad以及Mac电脑软件应用的工具。今年6月2日,苹果向公司 外部的程序员发布了一个测试版本。即便是在这个时候,也就是在拉特纳首次设想这门语言4年之后,它也只是在苹果内部圈子里产生了影响。拉特纳在伊利诺伊大 学香槟分校的研究生导师维克拉姆·艾德福(Vikram Adve)帮助他完善了Swift语言的基础。和其他人一样,艾德福对自己的学生花了这么长的时间打造一门新的编程语言这件事也感到吃惊。“苹果公司口风 很紧,克里斯真是贯彻了这一点,”艾德福笑着说。“我知道他在一个项目上花了很多时间,仅此而已。”
通常来说,像这样面世的一款新编程语言,通常需要多年时间才能获得大规模采用——即便有苹果这种规模的科技巨头支持也不例外。谷歌在2009年推出过一门名叫“Go”的语言。虽然这门语言的设计者在业内鼎鼎有名,但它仍然没有在全球范围内成为主流。
不过Swift就是另一回事了。等到今年秋天正式发布时,它可能会以前所未见的速度很快获得程序员的青睐,甚至有可能超越Sun的Java语言,以及微软的C#语言在20世纪90年代末与21世纪初的风头。
Swift的部分优势在于,它是为普通程序员打造的。这门语言设计用来编写最简单的手机应用,而且配有一个被苹果称之为“操场”(Playground)的智能工具。该工具提供了一种相当有效的“自学”编程方式。
此外,Swift之所以可能风靡起来,还有一个更直接的理由。在今天,成千上万的开发者使用一种名叫“Objective-C”的语言,为 iPhone和iPad打造应用,考虑到苹果设备的普及程度,这些程序员会一直开发此类应用。而和Objective-C相比,Swift在很多方面提供 了重大的改进,这意味着庞大的苹果开发者社区肯定会在未来数月接受这种新语言。
Tiobe指数(这是一个用来衡量编程语言流行程度的指标)的编纂者、关注编程语言发展近15年的保罗·詹森(Paul Jansen)表示:“就谷歌Go来说,没有什么真正的激励因素来使用它。相比之下Swift可以提供这样的激励。”
到目前为止,即便使用的人数非常有限,在流行的编程网站GitHub上,与Swift相关的项目也超过了2400个。而且在本月,Swift在 Tiobe全球编程语言热门排行榜上排名第16。谷歌Go在2009年发布时的情况与之类似,不过在之后排名便下降了很多。但就Swift来说,詹森口中 的激励因素只会推高其排名。
Facebook的开发元老安德雷·亚历山德雷斯库(Andrei Alexandrescu)指出,考虑到Swift在苹果产业链中独一无二的核心地位,“只要不胡搞”肯定就不会失败。何况这门语言的学习门槛非常低。 “人们会抢着学习这门新语言,因为用它变成很容易,”詹森表示。“程序员可以用Objective-C,也可以用Swift,大部分人都将转向 Swift。”
不只是一门语言
拉特纳负责监督苹果所有的开发工具——正是这些工具让苹果的工程师和外部的程序员为这家公司的电脑、笔记本、智能手机与平板电脑开发软件。在艾德福 的指导下,这位伊利诺伊大学香槟分校的研究生曾设计过一套名为LLVM的元编程工具。该工具是苹果软件开发主要工具Xcode的基础,后者最新版本的下载 次数已经超过了1400万。简单说,LLVM是生成并运行新应用的一种方式,可以和所有编程语言配套使用。
拉特纳在2005年加入苹果。这之后苹果用LLVM重塑了开发者使用Objective-C开发应用的方式。5年后,拉特纳又把LLVM作为 Swift的基础。拉特纳拒绝了媒体的采访,但在他的个人主页上有对Swift演化过程的简要介绍。不管这个长期项目多么与众不同,实际上Swift还是 要与苹果现有的开发工具共同工作——虽说它提供了一种替代Objective-C的选择。
换言之,Swift不光是一门编程语言。它与开发人员打造软件所需要的所有东西都紧密地结合在一起。这里不光是指集成开发环境(IDE),也包括调 试器这样的其他工具。这些工具大多被苹果开发者所熟悉。换言之,对成千上万为iPhone、iPad以及Mac电脑开发应用的程序员来说,Swift很容 易上手。
还是要有充分的理由才能让程序员从Objective-C转投Swift,毕竟他们过去从未用过Swift。“我是第一个,也是唯一一个具备4年 Swift编程经验的人,”拉特纳在Twitter上写到。学习这样一门语言是需要牺牲一定时间的,这通常是个大障碍。为苹果硬件开发了15年软件产品的 麦克·艾什(Mike Ash)说道:“只有很少一些语言能获得足够关注,大部分语言吸引使用者的时间都很长。”艾什现在正在钻研公司的这门新语言。
好在拉特纳和苹果已经给出了充分的理由。就其本身来说,Swift和C#、Ruby、Python等编程语言比起来没有太多吸引力,但与 Objective-C相比有很大的进步。后者的历史可以追溯到上世纪80年代中期,平心而论不如更现代的编程语言易用。艾什表示:“许多人因为 Objective-C和它那不常见的语法放弃了。Swift的语法更标准、更常见,这有助于吸引感兴趣的人。”
对现在的程序员来说,Swift不仅更熟悉——它有“泛型”这样的设计,也就是可以重复使用的基础模组——而且还有用来避免程序员出错的工具。它能 提供一种叫做“推测输入”的功能,凭借这种功能程序员就不用花费太多时间来定义所用变量的类型。艾什表示:“它可以提供很多帮助,可以更好地理解你在做什 么,也能让电脑帮助你把事情想得更清楚。它能让程序员更有效率,用更短的时间完成更多的事情。”
还有就是“Playground”,包括艾德福在内的很多人都认为,这是该语言中最有趣的地方。
Playground
按照拉特纳个人主页上的说法,“操场”是要让编程“更具交互性更直观。”他解释称,“操场”在很大程度上受到了苹果设计师布雷特·维克多(Bret Victor)以及一个叫做Light Table的交互编程系统的影响。和Light Table类似,Swift的“操场”可以让用户在屏幕一侧写代码,在另一侧看到运行的效果。
在6月初苹果开发者大会上介绍Swift的时候,拉特纳演示了如何用“操场”实时修改一款游戏。简单说,该工具可以向软件中加入新代码,而不用重新 编译或让整个程序重启。Light Table的创建者克里斯·格朗阁(Chris Granger)表示:“它可以把修改的东西注入到一个正在运行的进程中——放到正在运行的程序中。”
这做不仅是让编程更容易,而且提供了一种更好的学习编程的方法——让人人都学会这种技能。“希望更直观有趣的编程工作可以吸引下一代程序员,并重新定义计算机科学的教学方式,”拉特纳写到。
Light Table做的事情和这差不多——而且可以用多种语言实现这一点,例如Python、Clojure和Javascript。但对格朗阁来说,“操场”更 为实用,因为Swift为此进行了专门的优化。他说:“因为他们控制了语言——这是他们创建的语言——他们的目标就是做到这一点。他们能做那些我们用其他 语言无法做到的事情。”
这也是一个立竿见影的激励因素。妨碍编程语言普及的一大因素就是程序员没有时间去学习。“操场”则具有减少学习时间的能力。按照艾什的说法,“操 场”现在还有些bug,但具备了让编程更流畅的潜力。“一般来说,编程工作很耗时——要花时间看反馈——弄明白自己在做什么。但‘操场’提供的反馈是实时 的,这可以吸引很多新人。”
速度
“操场”体现出了Swift的另一个优势,那就是反应迅速。它编译起来很快,这意味着从源代码到可执行应用的转变时间很短;编译后出炉的应用执行起来也很快,这意味着程序可以在手机或平板电脑上高速运行。这也是Swift与其他编程语言不同的地方。
过去,像Objective-C和C++这样的编译型语言与Python、Ruby以及PHP这样的解释型语言两者间存在区别。编译型语言在写完代 码之后,必须要等待编译器将其转化为可执行的软件。不过一旦这一工作完成,可执行的软件运行的速度很快。解释型语言则可以几乎实时地测试程序,但成品的运 行速度没有那么快。
Swift取长补短。这种新语言在开发和运行时不会牺牲速度。正如艾什指出的那样,Swift“既对程序员友好,也对机器友好”。他表示:“具体的运行效果如何还要再看,不过到目前为止看上去还不错。”
这一领域并非只有苹果。Facebook也在通过“Hack”语言和“D”语言做类似的尝试,谷歌则是“Go”语言,火狐浏览器的开发商 Mozilla用的是“Rust”。从某些方面看,这些语言的发展都要快过Swift。Facebook已经在使用“Hack”重建自己的大型网络服务, 谷歌则使用“Go”改进内部业务。
更重要的是,这些语言大多数都是开源的。这意味着它们背后的代码可以被全世界免费使用。从理论上说,它们可以更轻松地在其他公司的设备或服务上运 行。Swift并不开源——至少现在还不是——而且考虑到苹果紧紧控制自己软硬件产品的历史,自然会有这家公司是否会限制该语言发展的担忧。艾什表示: “有人担心苹果会限制该语言发展的方向——也就是能否撰写跨平台的代码以及类似的事情。”
即便如此,Swift的普及速度恐怕也是其他语言无法企及的。艾什相信,苹果最终会将Swift开源,而且他也相信该语言会在苹果的控制之外发展壮 大——因为该语言的开发者拉特纳有着很深的开源情节。“有他在掌舵,我觉得他会做出正确的选择”。在开发Swift之前,拉特纳曾打造过一个叫做 “Clang”的编译程序。“Clang”就是开源的,现在被包括谷歌在内的很多公司使用。
就算Swift被苹果牢牢控制,它的影响可能也会超过近年来涌现的其他语言,而且它的普及速度可能也会快过现代历史上所有的语言。这就是拥有iPhone、iPad以及Mac电脑的优势。
的确,Swift能做的事情,其他许多软件也能做——有些甚至做得更好。Light Table甚至就有“操场”的替代品。
但Swift是独一无二的。
本文链接:http://www.cocoachina.com/applenews/apple/2014/0716/9150.html