苹果的重大突破几乎无人知晓:Swift 代码 - 彭博社
Joshua Brustein
如果你问普通的苹果粉丝列出过去一年左右公司做出的重要举措,这份名单可能会以苹果手表开始,然后列出 更大iPhone的巨大销量 和 30亿美元收购Beats Electronics的交易。一位特别了解新闻的粉丝甚至可能会提到 关于苹果汽车的传闻。如果把同样的问题问给一位苹果开发者,这份里程碑的名单几乎肯定会包括一些大多数忠实苹果用户未曾关注的内容:Swift,这是一种公司在一年前推出的新计算机语言。
当苹果软件工程高级副总裁Craig Federighi首次介绍类型推断、闭包和多个命名空间等功能时,开发者们惊叹并鼓掌。“你知道有多少人在家里说,‘这些家伙到底在说什么?’”Federighi在去年全球开发者大会上揭晓Swift时开玩笑说。那些不关心,比如说,RC4加密速度的人很快就忘记了那几分钟的困惑。而程序员们则没有。许多参加今年WWDC的人(将于6月8日开始)在过去一年里一直在学习如何使用Swift编写应用程序。
Red Monk,这是一家在过去五年中定期对编程语言进行排名的公司,形容这种语言的增长为“实质上是前所未有的。”在其诞生仅七个月后,Swift已成为数百种主要语言中第22种最受欢迎的语言。
大学和非正式教育机构迅速填补了学习Swift的需求。Ray Wenderlich,一位运营着一个受欢迎的编程教程网站的开发者,表示他几乎立即将注意力几乎完全转向了这门新语言。“对Swift的反应非常疯狂,”他说。“这就是人们想要的全部。”
几乎没有任何理由Swift不会吸引大量开发者。苹果决定哪些语言可以用于为iOS设备编写应用程序,而大量的编码者对此非常关注,因为平均每位苹果用户为开发者创造的收入是平均每位安卓用户的四倍。Swift是否优秀几乎无关紧要。
但事实证明,苹果的新软件语言还实现了一项令人印象深刻的成就:它在程序员中推出了一种新语言,而没有引发广泛的仇恨。对这门语言的早期评价 overwhelmingly positive,Stack Overflow进行的一项针对26000多名开发者的调查将Swift评选为全球最受欢迎的计算机编程语言。
“对Swift的反应非常疯狂。这就是人们想要的全部。”
在Swift之前,苹果开发者唯一的选择是Objective C,这是一种最初在1980年代构建的语言。开发者们开始抱怨Objective C现在感觉有些过时,称其冗长、老旧或简直丑陋。当然,每种值得一提的计算机语言都有支持者和反对者——一些程序员甚至不愿表达对特定语言的看法,担心在Hacker News上受到攻击。当被问及Objective C是否是一种难以编码的语言时,叫车应用Lyft的工程副总裁Peter Morelli回避了这个问题。“我认为这有点像宗教战争,”他说。“很多人在其中非常高效。”
是什么驱动了对Swift的热烈反应?编程语言之间的差异 notoriously 难以向只讲英语的观众传达。开发者对Swift的评价很高,因为它的安全性(使得在代码中添加错误变得困难)和现代性(提供与其他流行语言相同的功能和特性)。另一个关键因素是表达能力,程序员用它来描述向计算机解释你想要它做什么的容易程度。Swift被广泛认为比Objective C更具表达性,因为程序员可以用更少的代码行获得相同的结果。“如果你看所有的波浪线和分号,Objective C的代码量会多出四倍,”Treehouse的开发者Myers Carpenter说,该公司提供各种技术主题的教育课程。
Lyft在大约六个月前让一位工程师开始尝试Swift。它很快决定用这种语言重写整个应用程序,并预计在七月完成这一过程。用Swift编写的打车应用程序的代码行数仅为其之前版本的五分之一,后续更新也将花费更少的时间。“从几个月缩短到几天真不错,”Morelli说。“这就是主要的好处。”
SlideShare是LinkedIn拥有的一个文档共享服务,也是另一个早期采用者。虽然公司里的开发者表示向Swift的过渡是成功的,但他们也承认了一些成长的烦恼。一个问题是:将Swift转换为计算机可读格式的程序使用了如此多的处理能力,以至于使得较不强大的13英寸Macbook Pro笔记本电脑不堪重负。“我的同事们使用配备四核i7的15英寸型号时体验要好得多,”该公司的软件工程师Kyle Sherman在LinkedIn的工程博客上写道。“无论如何,编译时风扇的声音都很大。”
这是语言成熟过程中会解决的问题。然而,Swift的采用发生在语言仍在快速演变的过程中,这使得情况变得如此不稳定,以至于一些开发者更愿意等待。软件开发公司Scott Logic的技术总监Colin Eberhardt表示,Swift的更新经常会破坏他的代码。“如果你正在构建生产代码,现在你真的不想使用Swift,”他说。苹果公司对此报道拒绝发表评论。
目前,Objective C的使用仍然远远超过Swift。但如果新语言的成功持续下去,这可能意味着其前身的死亡。一旦语言稳定并确立,苹果可能会决定不再支持两种语言,并开始要求开发者在某些编码方面使用Swift。这可能需要几年时间,但Wenderlich表示他预计在某个时刻会发生。“然后人们将开始迁移到Swift,”他说,“最终Objective C将消失。”
有关代码的更多信息,请阅读以下内容:
摄影师:Asger Carlsen,来自彭博商业周刊;布景设计:Dave Bryant此外,我们的特别报告: 世界属于那些编码的人