2024CTIS-文章详情页顶部

横空出世的Swift到底有多酷

在日进万金的大好时候,抛弃一个成熟开发社区,而转向一种新的编程语言,做出这种决策,只能说这家公司的魄力让人折服和钦佩。另一方面,Apple 这么做的另一个理由应该是吸引更多的开发者加入到 Apple 开发阵营,因为相对于 objc 的语法和学习曲线,Swift 显然要容易很多,对于其他阵营的开发者,这也会是一个很好的入场机会。

虽然四点半就起床去排队等入场,结果还是只能坐在了蛮后面的位置看着大屏幕参加了今年的 Keynote。其实今年 OS X 和 iOS 的更新亮点都不少,但是显然风头和光芒都让横空出世的 Swift 给抢走了。这部分内容因为不是 NDA,所以可以提前说一说。

Swift 是 Apple 自创的一门专门为 Cocoa 和 CocoaTouch 设计的语言,意在用来替代 Xcode。早上发布的时候有很多朋友说其实他们已经写了很久的 Swift,而且还给了一个网站,在这里首先需要说明的是,这个网站的 Swift parallel scripting language 和 Apple 的 Swift 并不是一个东西,两者可以说毫无关系。Apple 还在自己的 Swift 介绍页面后面很有好地放上了 Swift parallel scripting language 的网站链接,以提示那些真的想搜另一个 Swift 却被 SEO 误导过来的可怜的孩子。

就我个人来说,在把玩了 Swift 几个小时之后,深深地喜欢上了这门新的语言。这篇文章以一个初学者(其实现在大家都是初学者)的角度来对 Swift 做一个简单的介绍,因为现在大家其实是在同一个起跑线上,所以理解上可能会有很多不精确的地方,出错了也请大家轻喷指正!

 

什么是 Swift

很多人在看到 Swift 第一眼的感觉是,这丫是个脚本语言啊。因为在很多语法特性上 Swift 确实和一些脚本非常相似。但是首先需要明确的是,至少在 Apple 开发中,Swift 不是以一种脚本语言来运行的,所有的 Swift 代码都将被 LLVM 编译为 native code,以极高的效率运行。按照官方今天给出的 benchmark 数据,运行时比 Python 快 9 倍,比 objc 快 3 倍左右(有可能记错)。我相信官方数据肯定是有些水分,但是即使这样,Swift 也给人带来很多遐想和期待。Swift 和原来的 objc 一样,是类型安全的语言,变量和方法都有明确的返回,并且变量在使用前需要进行初始化需。而在语法方面,Swift 迁移到了业界公认的非常先进的语法体系,其中包含了闭包,多返回,泛型和大量的函数式编程的理念,函数也终于成为一等公民可以作为变量保存了(虽然具体实现和用法上来看和 js 那种传统意义的好像不太一样)。初步看下来语法上借鉴了很多 Ruby 的人性化的设计,但是借助于 Apple 自己手中 强大的 LLVM,性能上必须要甩开 Ruby 不止一两个量级。

另一方面,Swift 的代码又是可以 Interactive 来“解释”执行的。新的 Xcode 中加入了所谓的 Playground 来对开发者输入的 Swift 代码进行交互式的相应,开发者也可是使用 swift 的命令行工具来交互式地执行 swift 语句。细心的朋友可能注意到了,我在这里把“解释”两个字打上了双引号。这是因为即使在命令行中, Swift 其实也不是被解释执行的,而是在每个指令后进对从开始以来的 swift 代码行了一遍编译,然后执行的。这样的做法下依然可以让人“感到”是在做交互解释执行,这门语言的编译速度和优化水平,可见一斑。同时 Playground 还顺便记录了每条语句的执行时候的各种情况,叫做一组 timeline。可以使用 timeline 对代码的执行逐步检查,省去了断点 debug 的时间,也非常方便。

至于更详细的比如 Swift 的语法之类的,可以参见 Apple 在 iBooks 放出的 The Swift Programming Language,或者你是开发者的话,也可以看看 pre-release 的参考文档

 

Cool,我可以现在就使用 Swift 么?

Swift 作为 Apple 钦定的 objc 的继承者,作为 iOS/Mac 开发者的话,是觉得必须和值得学习和使用的。现在 Swift 可以和原来的 objc 或者 c 系的代码混用(注意,不同于 objc 和 c++ 或者 c 在同一个 .mm 文件中的混编,swift 文件不能和 objc 代码写在同一个文件中,你需要将两种代码分开)。编译出来的二进制文件是可以运行在 iOS 7 和 iOS 8 的设备上的(iOS 6 及之前的是不支持的)。虽然我没有尝试过,但是使用新的 clang 对 swift 进行编译的 app 二进制包,只要你的 target 是 iOS 7 及以上的话,应该现在就可以忘 App Store 进行提交。

一个很好的消息是 Xcode 6 中应该是所有的文档都有 objc 和 swift 两种语言版本了,所以在文档支持上应该不是问题。而按照 Apple 开发者社区的一贯的跟进速度,有理由相信在不久的将来,Apple 很可能会果断 drop 掉 objc 的支持,而全面转向 swift。所以,关于标题里的这个问题的答案,我个人的建议是,尽快学习,尽快开始使用。如果你有一定的脚本语言的基础(Ruby 最好,Python 或者 JS 什么的也很不错),又比较了解 Cocoa 框架的思想的话,转型到新的语言应该完全不是问题。你会发现以前很多 objc 实现起来很郁闷的事情,在新语言下都易如反掌。我毫不忌讳地说,在 Apple 无数工程师和语言设计天才的努力下,Swift 吸收了众多语言的精华,应该是现在这个世界上最新(这不是废话么),也是最先进的一门编程语言(之一)了。而我认为,也正是 Apple 对这门语言有这样的自信,才会在这么一个可以说公司还在全盛的时候,不守陈规地如此大胆的进行语言的更换。因为 Apple 必定比你我都精于算计,切换语言带来的利益必须远大于弊端,才会值得冒如此大的风险。在这个意义上来说,今天的发布会就是程序开发业界的一枚重磅炸弹,也必将写入史册,而你我其实真的身在其中,变成了这段历史的见证者。

如何开始?

很简单,虽然历年的 WWDC 都在 NDA 的控制之下使得我们无法讨论过多的内容,但是这次的 Swift 破天荒地是在 NDA 之外的内容。Apple 已经放出了足够多的资源让我们开始学习。首先是官方的 Swift 的介绍页面,你可以了解一些 Swift 的基本特性和细节。然后就是从 iBooks 下载 Swift 的书籍。你可以不必通读全书,而只需要快速浏览一下 35 页之前的 Tour 部分的内容,就可以开始将其运用到开发中了。因为不受 NDA 限制,所以 StackOverflow 的 swift 标签和 Google 上应该会马上充斥满相关的问题和内容。及时跟进,相信和其他开发者一同从零开始学习和进步,你会很快上手并熟练使用 Swift 进行开发。

(因为真的太好用了。你很难想象我在写一个漂亮的闭包或者嵌套函数或者多返回时,那种内心的激动和喜悦…)

 

总结

这次的 WWDC 可以说是 Apple 之前几年布局的一个汇总和爆发。从一开始的 Mac 整合电话和短信,以及无处不在的 Handoff,到后面的通知中心 widget 和系统 framework 的 extension,以及更甚的 Family Share 等等,可以说 Apple 通过自己对产业链的控制和生态圈的完善,让 iDevice 或者 Mac 的用户粘度得到了前所未有的加强。对一个人来说,可能一台苹果设备之后他会很容易购买第二台第三台;对于一家人来说,可能一个成员拥有苹果设备之后,其他人也会被宣传和便捷带动。这是一手妙招,也是 Apple 最近几年一直在做的趋势。

罗马其实不是一天建成的,在开发语言方面,Apple 其实也精心打造了很多年。在语言而言,之前完全没有这方面经验的苹果,毅然决然地选择离开 GCC 阵营,另起炉灶自己弄 Clang 和 LLVM 的布局,而终于在几年来对 objc 小修小补之后来了一次革命性的爆发。在日进万金的大好时候,抛弃一个成熟开发社区,而转向一种新的编程语言,做出这种决策,只能说这家公司的魄力让人折服和钦佩。另一方面,Apple 这么做的另一个理由应该是吸引更多的开发者加入到 Apple 开发阵营,因为相对于 objc 的语法和学习曲线,Swift 显然要容易很多,对于其他阵营的开发者,这也会是一个很好的入场机会。正应了这次 WWDC 的宣传语,Apple 已经为我们提供了更好的工具,我们有什么理由不继续我们的征途,实现我们的梦想呢?

【本文精选自: 王巍(@onevcat)

本文系作者 精选 授权钛媒体发表,并经钛媒体编辑,转载请注明出处、作者和本文链接
本内容来源于钛媒体钛度号,文章内容仅供参考、交流、学习,不构成投资建议。
想和千万钛媒体用户分享你的新奇观点和发现,点击这里投稿 。创业或融资寻求报道,点击这里

敬原创,有钛度,得赞赏

赞赏支持
发表评论
0 / 300

根据《网络安全法》实名制要求,请绑定手机号后发表评论

登录后输入评论内容

快报

更多

2024-04-26 23:03

大商所、郑商所夜盘收盘,烧碱跌近3%

2024-04-26 23:00

美股半导体股集体走强:英伟达涨超5%,博通涨超4%

2024-04-26 22:43

宝马计划对沈阳生产基地增加投资200亿元

2024-04-26 22:42

现货黄金短线下挫8美元

2024-04-26 22:40

美元兑日元站上157关口,为1990年5月来首次

2024-04-26 22:35

光峰科技:2024年第一季归母净利润4454.33万元,同比大幅增长226.21%

2024-04-26 22:31

花旗现预计美联储将于7月降息

2024-04-26 22:30

昆明优化公积金住房套数认定标准:不再将个人住房商贷记录纳入认定范围

2024-04-26 22:25

中国船舶:第一季度归母净利润4.01亿元,同比增长821.12%

2024-04-26 22:23

纳斯达克指数涨幅扩大至2%,科技巨头全线上涨

2024-04-26 22:18

谷歌大涨超11%,再创历史新高,总市值突破2万亿美元

2024-04-26 22:11

研究显示到2025年底全球利率升幅只会砍一半,重塑投资格局

2024-04-26 22:09

台达电加码印度投资,预计增资6200万美元

2024-04-26 22:08

标普500指数涨1%至盘中高点

2024-04-26 22:07

上海航交所:本周中国出口集装箱运输市场行情表现良好,远洋航线运价上涨

2024-04-26 22:06

中基协:3月证券期货经营机构私募资管产品备案规模环比增长127.51%

2024-04-26 22:05

美国4月密歇根大学消费者信心指数终值为77.2,前值77.9

2024-04-26 22:04

美国消费者4月份对未来一年通胀率预期由2.9%升至3.2%

2024-04-26 22:00

东风着陆场完成最后一次全系统综合演练,准备就绪迎接神十七航天员回家

2024-04-26 21:54

中概股指数涨幅扩大至3.5%,小鹏汽车涨近10%

扫描下载App