原始出处:王薇(@onevcat)虽然我4:30起床排队入场,但还是要坐在后面看大屏才能参加这个年的主题演讲。其实今年OSX和iOS的更新亮点不少,但很明显,风头和光芒都被横空出世的Swift抢走了。由于这部分不是NDA,可以提前谈。Swift是Apple自己专门为Cocoa和CocoaTouch设计的语言,意在取代Xcode。早上发布的时候,很多朋友都说自己其实写Swift很久了,还给了一个网站。这里首先要说明的是,本站的Swift并行脚本语言和Apple的Swift不是一回事。可以说与它无关。Apple还在其Swift介绍页面的末尾很好地放置了一个指向Swift并行脚本语言的链接,以提醒那些真正想搜索另一个Swift但被SEO误导的可怜孩子。就个人而言,在玩了几个小时Swift之后,我爱上了这门新语言。本文从初学者的角度(其实现在大家都是初学者)简单介绍一下Swift,因为现在大家其实都在同一起跑线上,所以理解上可能会有很多不准确的地方,如果我说错了,请轻喷指正!什么是Swift很多人看到Swift的第一印象就是它是一种脚本语言。因为Swift在很多语法特性上确实和一些脚本非常相似。但首先需要明确的是,至少在Apple开发中,Swift并不是作为脚本语言运行的。所有的Swift代码都会被LLVM编译成原生代码,并以极高的效率运行。根据今天官方给出的benchmark数据,运行时比Python快9倍,比objc快3倍左右(可能有误)。相信官方的数据肯定有点水,但即便如此,Swift也带来不少遐想和期待。Swift和最初的objc一样,是一种类型安全的语言。变量和方法有明确的返回,变量在使用前需要初始化。在语法方面,Swift已经迁移到了业界公认的非常先进的语法体系,其中包括闭包、多重返回、泛型和大量的函数式编程概念。函数终于成为一等公民,可以保存为变量(虽然具体的实现和用法好像和js的传统意义不一样)。乍一看,语法上借鉴了很多Ruby的人性化设计,但是借助苹果自己强大的LLVM,性能肯定比Ruby落后一两个数量级以上。另一方面,Swift代码可以被Interactive“解释”和执行。所谓的Playground是在新的Xcode中加入的,用来交互响应开发者输入的Swift代码,开发者也可以使用swift命令行工具来交互执行swift语句。细心的朋友可能注意到了,我在这里把“解释”这个词用双引号括起来了。这是因为即使在命令行中,Swift也不是真正的被解释执行,而是在每条指令之后,从头开始的swift代码被编译然后执行。这种做法还是可以让人“感觉”到是在做交互式的解释和执行,从这门语言的编译速度和优化水平就可以看出。同时,Playground还记录了每条语句执行过程中的各种情况,称为一组时间线。可以使用时间线一步步查看代码的执行情况,省去了断点调试的时间,也很方便。Swift的语法等更详细的信息可以参考Apple在iBooks中发布的TheSwiftProgrammingLanguage,如果你是开发者也可以参考预发布的参考文档。太棒了,我现在可以使用Swift了吗?作为Apple指定的objc的继承者,作为iOS/Mac开发者的Swift觉得它必须也值得学习和使用。现在Swift可以和原来的objc或者c代码混合了(注意不像objc和c++或者c混合在同一个.mm文件里,swift文件不能和objc代码写在同一个文件里,需要分开代码)。编译后的二进制文件可以在iOS7和iOS8设备上运行(不支持iOS6及更早版本)。虽然没试过,但是用新的clang编译swift的app二进制包,只要你的target是iOS7以上的,现在应该可以提交到AppStore了。好消息是,在Xcode6中,所有文档都应该同时有objc和swift语言版本,所以在文档支持上应该不会有问题。按照苹果开发者社区一贯的跟进速度,有理由相信在不久的将来,苹果很有可能会果断放弃对objc的支持,全面转向swift。所以,对于题中问题的回答,我个人的建议是尽快学习,尽快开始使用。如果你有一定的脚本语言基础(Ruby最好,Python或者JS也很好),并且对Cocoa框架的思想比较了解,那么过渡到一门新的语言应该不是问题.你会发现很多以前实现起来很郁闷的objc东西,在新语言里都变得容易了。我毫不犹豫地说,在无数苹果工程师和语言设计天才的努力下,Swift吸取了众多语言的精华。应该是世界上最新的(这不是废话吗)最先进的编程语言(其中之一)。而我认为,正是因为苹果对这种语言如此自信,可以说在公司还处于鼎盛时期的时候,才会如此大胆地改变语言,不墨守成规。因为苹果肯定比你我都精打细算,切换语言的好处肯定远远大于坏处才值得冒这么大的风险。从这个意义上说,今天的发布会堪称程序开发界的一鸣惊人,必将载入史册,而你我也都身在其中,成为了这段历史的见证者。如何开始很简单,虽然多年来WWDC一直处于NDA的控制之下,以至于我们不能讨论太多的内容,但这次Swift第一次脱离了NDA。Apple已经发布了足够的资源让我们开始。首先是官方的Swift介绍页面,在这里你可以了解Swift的一些基本特性和细节。然后是从iBooks下载的Swift书籍。您不必阅读整本书,只需快速浏览一下第35页之前的Tour部分的内容,您就可以开始将其应用到您的开发中。由于不受NDA限制,StackOverflow的swifttag和google应该第一时间填上相关问题和内容。及时跟进,相信和其他开发者一起从零开始学习进步,你会很快上手并熟练使用Swift进行开发。(因为真的,太好用了,很难想象当我写出一个漂亮的闭包或者嵌套函数或者多个return时,我内心的激动和喜悦……)总结一下,这次WWDC可以说是苹果之前的几年布局的总结与爆破。从一开始的Mac整合电话和短信,以及无处不在的Handoff,到通知中心widget和系统框架扩展,甚至FamilyShare等等,可以说是苹果通过自己对行业的掌控链条和生态圈的完善,前所未有地提升了iDevice或Mac的用户黏度。对于一个人来说,购买了一台苹果设备后,他可能会很容易地购买第二台和第三台;对于一个家庭来说,在一个成员拥有苹果设备后,其他人也会受到宣传和便利的驱使。这是苹果近年来一直在做的一个妙招和趋势。罗马不是一天建成的。在语言开发方面,苹果其实已经精心打造了很多年。在语言方面,此前在这方面毫无经验的苹果公司毅然选择脱离GCC阵营,另起炉灶对Clang和LLVM进行布局。终于在objc经过几年的小修后,迎来了革命性的爆发。在每天进步的黄金时期,放弃成熟的开发社区,转向新的编程语言,做出这样的决定,对于这家公司的勇气,只能说是令人信服和敬佩。另一方面,苹果这样做的另一个原因应该是为了吸引更多的开发者加入苹果的开发阵营,因为相比于objc的语法和学习曲线,Swift显然要容易得多。这将是一个很好的进入机会。为了响应本次WWDC的口号,苹果为我们提供了更好的工具。我们为什么不继续我们的旅程并实现我们的梦想呢?编写代码。改变世界。
