尽管苹果一年一度的开发者大会(WWDC)有不少吸引人眼球的东西,但是最切题的无疑是新的编程语言Swift的推出。
在 iOS 8 发布之前一直处在 beta 版的 Swift,是苹果已使用 20 多年,已经老掉牙的开发语言 Objective-C 的替代品。苹果宣称,这款新的编程语言要比后者快得多,好用得多,且支持闭包、泛型、类型推理、多种返回类型及命名空间等许多现代编程概念。
苹果指出,已开发多年的 Swift 将适合于新老开发者。对于老开发者来说,Swift 显得很熟悉;对于新开发者来说,Swift 显得很友好。苹果称赞这款编程语言为开发者打造了一个“互动的游乐场”。
不过社交网络上面对 Swift 的评价是好坏参半。
杰出的 iOS 开发者 Steve Streza 对苹果开始这一转变感到兴奋,说 Swift 继承了 Objective-C 的优点(如引用计数内存管理)的同时也改进了语法和样式管理。这促使他要对自己的 API 设计进行重新思考,要更加强调类型传递。不过他认为在跨越了新语言学习的驼峰曲线之后,Swift 不会对他的工作产生很大的影响。
Streza 对 Swift 的最大担忧是 Objective-C 和 Swift 的相互协作方式,因为双方似乎对代码编写方式和 API 数据返回方式作出了颇为不同的假设,尚不清楚这些假设发生冲突时会如何处理。
Streza 的另一个担忧是有多少人会采用新语言(苹果仍承诺继续支持 Objective-C),因为很多人都拒绝改变,而分裂可能会导致在这个平台上开发的人沮丧。但 Streza 本人预计会完全接受 Swift 并用它来开发新应用。并且他认为 iOS 及 Mac 开发者要是对这门新语言缺乏基本的了解的话是很愚蠢的。
另一位旧金山的 web 开发者 Kevin Ingersoll 则认为,对于 web 开发者来说 Swift 的进入壁垒要比 Objective-C 低得多,以前他曾经想写 app,但是 Objective-C 的学习障碍令他望而却步,现在这个障碍消失了。
澳大利亚的开发者 Quentin Zervaas 认为,Swift 证明苹果的确看重开发者工具和开发工作流的易用,并且不断在努力采取措施来从设备榨取额外的性能。Zervaas 很期待 Swift 的代码实时评估和调试功能,认为这可以简化大量的语法。
在 Hacker news 上面的用户也感到兴奋,网友 nln 说 Swift 让他这个非开发者也感觉有信心去学习如何开发 iOS app。
资深 Objective-C 开发者 Mike 则对 Swift 的推出感到烦恼。因为他喜欢 Objective-C,不想学新语言。对于他来说 Swift 对 Objective-C 的优势尚不明朗。他对 Swift 的第一印象是为了创新而创新,害怕这会在新老开发者之间造成分裂(老的坚持 Objective-C,新的用 Swift)。
在知乎上对Swift的讨论也很热烈,其中获赞同最多的是yue wang同学的:
它更像一種讓人快速做原型的 toy language。…… 以 Apple 目前給出的各種資料來看,這語言不會替代掉 ObjC,它不是下一代的 ObjC。
yue wang 列举的 Swift 的缺点包括标准库太差、缺乏保护机制、只能与 ObjectIve-C 互动、不能捕捉 Objective-C 的例外也没有自己的例外机制等。所以他认为苹果对 Swift 的定位是降低学习曲线的玩具语言。
赵冬毓在读完 Swift 开发者指南之后,对后者的评价是:
这是一个阉割掉了很多精 髓,添加了一些语法糖的 C#和 Scala 的结合体,有一些 Golang 的方便特性,附带 Golang 和 JS 诸多坑人陷阱的,语法与 JavaFX 接近的,对非 UI 部分不够严肃的,除了 ARC 之外没有 GC 的一种表达能力较强但是设计能力较弱的语言……换句话说,对于大型项目而言是个坑……更适合 PM 和小作坊快速推出创意原型,不适合追求高质量应用开发。
但知乎上也有反驳的意见。孙竟认 为,Swift 的功能丰富,绝非一门玩具语言。而且他以 Swift 重写 Cocoa API 封装为例说明,如果苹果不是想取代 Objective-C,为什么还要如此费事。其观点是 Swift 的一些缺点用 Objective-C 只会更坑,对于想转行做 iOS 或 OS X 的开发者来说,Swift 是个很好的 Objective-C 替代者。
当然,现在就来评判 Swift 的采用率还为时尚早。但 Craig Federighi 宣布 Swift 时,观众的反应是,掌声未起,就先听到一阵“哇哦!”所以,Swift 造成的冲击值得预期: