苹果的 Swift 编程语言:开发者的新纪元
今年在苹果全球开发者大会(WWDC)上,尽管iOS 8和OS X Yosemite备受瞩目,一项本应成为焦点的新闻却显得有些黯淡,那就是苹果公司向全球发布的全新编程语言——Swift。对于普通用户而言,这似乎无关紧要,然而,对于开发者社区来说,这无疑是一个颠覆性的变革。编程语言之间存在显著差异,有的运行速度更快,有的效率更高,有的则更简洁,有的则极其容易上手。苹果公司继谷歌的Go(Golang)和微软的.Net Framework之后,成为了又一家推出自家编程语言的科技巨头。Swift编程语言汲取了这些语言的优点,同时又保留了其Objective-C前身的精髓。苹果声称,Swift是目前速度最快、功能最强大的高级编程语言。接下来,让我们深入了解一下。
为何需要编程语言?
有多种方法可以让电子设备“做事情”。从现代可穿戴设备到传统计算机,任何设备都可以通过古老的机器语言方式,使用原始的字节码或汇编语言来编写,逐条指令地完成任务。或者,也可以借助高级语言来减少一些繁琐的工作。因此,人们越来越关注如何使开发者语言尽可能地接近自然语言。我们知道,Swift这个名字吸引的开发者远多于旁观者,但我们仍将尽量简化解释,以便帮助您了解这项将主导未来几代苹果产品的技术。
简单来说,电子设备实际上是人类所知的最“愚蠢”的东西,如果没有编程,它们就只能沦为摆设。正是编程赋予了它们真正的功能。从最基本的层面上讲,电子设备需要被告知要做什么,一个接一个的动作。这就是我们过去使用穿孔卡片所做的事情,后来则使用机器语言。随着时间的推移,我们开发出了高级语言,让我们能够以相对更自然的方式与机器进行交流(是的,代码实际上是这种交流方式的简化版本)。我们会编写代码,这些代码会被编译成计算机可以理解的指令,然后执行。总而言之,就是代码-编译-执行的过程。
Swift为何如此重要?
现在,你可能会问一个最关键的问题:“为什么?” C语言起源于20世纪70年代,在当时开辟了新的天地,随后在80年代出现了其分支Objective-C。自那时起,苹果一直使用该平台进行开发。按照逻辑,“如果它没坏,就不要修它”,如果它已经连续工作了30年,那它会有什么问题呢?嗯,确实是这样。苹果已经使用Objective-C数十年了。现在是时候做一些更快、更强大、更容易的事情了。Swift应运而生。
根据官方电子书(可在iTunes上免费获取)的说法,“Swift是一种用于iOS和OS X应用程序的全新编程语言,它建立在C和Objective-C的优点之上,并且不受C兼容性的限制。Swift采用安全的编程模式并添加了现代特性,使得编程更加容易、灵活和有趣。Swift的全新状态,加上成熟且广受欢迎的Cocoa和Cocoa Touch框架,提供了一次重新构想软件开发方式的机会。”
Swift的重要性
尽管苹果希望您相信他们全心全意地进行创新,但“脚本”语言的想法一直存在。传统的代码-编译-执行模式要求您只能在编译后才能看到代码的运行情况。编译过程会准确地展示代码的功能。如果代码有错误,编译会导致不稳定的行为或崩溃。这时,程序员的工作就是找出错误所在,修复它,然后重新开始。这个过程既艰巨又耗时,但这一直是编程世界的常态。而脚本语言则逐行执行代码,因此您可以在编写时就看到结果,从而无需在之后检查代码是否有错误。这使得整个过程更快、更容易。
迄今为止,脚本语言的功能一直受到限制。以Python为例,它速度很快,但只能用于功能有限的简单任务。它就像一辆一级方程式赛车,非常适合赛车,但不适合买菜。
如果您想制作游戏,那么Python不是您的首选环境。但是,Objective-C是(如果在Windows上,则是C++)。现在,Swift承诺将结合两者的优点(实际上是许多优点),它从Objective-C、Rust、Haskell、Ruby、Python、C#、CLU等众多语言中汲取灵感(参考:Swift开发者/专家克里斯·拉特纳)。Swift声称保留了上述语言的优点,并摒弃了其缺点。在关键的基准测试中,它的执行速度比Python更快,比Objective-C快得多,所以它开了一个好头。
Swift还有什么优点?
Swift还引入了一个名为“playground”的实时可视化环境,您可以在其中实时查看编译结果,就像使用脚本语言一样。根据应用程序的设计,这可以将整个过程缩短至几分钟,因为如果出现问题,您将立即知道问题所在,并可以立即解决。这相当于在打印输出上修复错误与在编写过程中修复红色下划线单词的区别。它可以让您更快地创建复杂的应用程序。
更深入一点来说,对于高级语言,无论多么基本,您都需要声明和访问类和库才能使用功能。在C++中,您需要 `iostream.h` 和 `conio.` 才能在代码中使用基本的输入、输出和数据类型。然而,在Swift中,这些都不是必需的。您不需要声明任何库,因为Swift将管理每个数据类型和I/O(输入/输出)函数所需的内容,并使用该库本身。因此,打印像“Hello world”这样简单的内容,从
#include<stdio.h> int main(void) { printf("Hello World\n"); return 0; }
变成了简单的:
println("Hello, world")
这就是需要编译的全部代码。您还会注意到,代码中没有使用可怕的“;”作为结束语句的通用标记。
Swift有哪些缺点?
Swift的出现并不意味着Objective-C及其所有使用方式的立即消亡。仍然可以使用Objective-C来创建应用程序,并且本地Objective-C用户不会感到完全疏远,因为这些环境之间存在相似之处。当然,由于苹果公司确实花费了四年时间来研究一种新的编程语言,他们现在和将来都会专注于推动和支持Swift。也许有一天他们会从苹果公司的编程语言史册中删除Objective-C,但那一天不是今天。尽管如果有一种新的语言问世,一种容易学习且速度更快的语言,那么为什么有人还会坚持使用Objective-C呢?
当然,也存在一些担忧,最直接的就是行业的变化。整个职业生涯都是围绕教人们如何制作iPhone应用程序而建立的,这些职业和他们的学生已经立即过时,在这方面将进行大量重组。我们还将迎来一批新的Swift早期使用者(已经使用Swift创建了Flappy Birds),这既是好事也是坏事。将新鲜血液注入肌体是好事,但坏处是这些新鲜血液缺乏经验,并且可能会在市场上充斥着制作不佳的应用程序。
我们很快将讨论苹果的Metal框架,讨论其优缺点,尤其是在iOS游戏中。
结论
如果您想知道为什么在WWDC大会上没有宣布任何新的硬件,那么我们再次向您推荐我们之前的观点:硬件本身无法做任何事情,直到其背后的软件开始工作。因此,这确实是有史以来最大的新闻。我们正在对软件进行新的处理,这将会在未来改变所有硬件的面貌。要使用Swift,您需要Xcode 6测试版和开发者ID。