第1章 工欲善其事,必先利其器——Swift语言基础
Swift开发实战
Swift是苹果公司在WWDC2014大会上所发布的一门全新的编程语言,用于编写OS X和iOS应用程序。苹果公司在设计Swift语言时,就有意让其和Objective-C共存,Objective-C是苹果操作系统在导入Swift前使用的编程语言。本章将带领大家初步认识Swift这门神奇的开发语言,让读者为学习本书后面的知识打下基础。
1.1 Swift概述
Swift是一种为开发iOS和OS X应用程序而推出的全新编程语言,是建立在C语言和Objective-C语言基础之上的,并且没有C语言的兼容性限制。Swift采用安全模型的编程架构模式,并且使整个编程过程变得更容易、更灵活、更有趣。另外,Swift完全支持市面上的主流框架——Cocoa和Cocoa Touch,这为开发人员重新构建软件和提高开发效率带来了巨大的帮助。本节将带领大家一起探寻Swift的诞生历程。
1.1.1 Swift的创造者
苹果公司的Swift语言的创造者是苹果开发者工具部门总监Chris Lattner(1978年出生)。Chris Lattner是LLVM项目的主要发起人与作者之一,也是Clang编译器的作者。Chris Lattner曾经开发了LLVM,这是一种用于优化编译器的基础框架,能将高级语言转换为机器语言。LLVM极大地提高了高级语言的效率,Chris Lattner也因此获得了首届SIGPLAN奖。
2005年,Chris加入LLVM开发团队,正式成为苹果的一名员工。在苹果公司的9年间,他由一名架构师一路升职为苹果开发者工具部门总监。目前,Chris Lattner主要负责Xcode项目,这也为Swift的开发提供了灵感。
Chris Lattner从2010年7月才开始开发Swift语言,当时它在苹果内部属于机密项目,只有很少人知道这一语言的存在。Chris Lattner在个人博客上称,Swift 的底层架构大多是他自己开发完成的。2011年,其他工程师开始参与项目开发,Swift 也逐渐获得苹果内部重视,直到2013年成为苹果主推的开发工具。
Swift的开发结合了众多工程师的心血,包括语言专家、编译器优化专家等,苹果其他团队也为改进产品提供了很大帮助。同时Swift也借鉴了其他语言(如Objective-C、Rust、Ruby等)的优点。
Swift语言的核心吸引力在于Xcode Playgrounds功能和REPL,它们使开发过程具有更好的交互性,也更容易上手。Playgrounds在很大程度上受到了Bret Victor的理念和其他互动系统的启发。同样,具有实时预览功能的 Swift 使编程变得更简单,学习起来也更加容易,目前已经引起了开发者的极大兴趣。这有助于苹果吸引更多的开发者,甚至将改变计算机科学的教学方式。图1-1是Chris Lattner在WWDC2014大会上对Swift进行演示。
1.1.2 Swift的优势
在WWDC2014大会中,苹果公司展示了如何能让开发人员更快进行代码编写及显示结果的“Swift Playground”,在左侧输入代码的同时,可以在右侧实时显示结果。苹果公司表示,Swift是基于Cocoa和Cocoa Touch专门设计的。由于Swift可以与Objective-C兼容使用,因此,开发人员可以在开发过程中进行无缝切换。
具体来说,Swift语言的突出优势如下所示。
(1)易学。
作为一门苹果独立发布的支持型开发语言,Swift语言的语法内容混合了Objective-C、JavsScript和Python,其语法简单、使用方便、易学,大大降低了开发者入门的门槛。同时Swift语言可以与Objective-C混合使用,对于用惯了高难度Objective-C语言的开发者来说,Swift语言更加易学。
(2)功能强大。
Swift允许开发者通过更简洁的代码来实现更多的内容。在WWDC2014发布会上,苹果演示了如何只通过一行简单的代码,完成一个完整图片列表加载的过程。另外,Swift还可以让开发人员一边编写程序,一边预览自己的应用程序。
(3)提升性能。
Swift语言可以提升程序性能,并同时降低开发难度,没有开发者不喜欢这样的编程语言。
(4)简洁、精良、高效。
Swift是一种非常简洁的语言。与Python类似,不必编写大量代码即可实现强大的功能,并且也有利于提高应用开发速度。Swift可以更快捷有效地编译出高质量的应用程序。
(5)执行速度快。
Swift的执行速度比Objective-C更快,这样会在游戏中看见更引人入胜的画面(需要苹果新的Metal界面的帮助),而其他应用也会有更好的响应性。
(6)全面融合。
苹果对全新的Swift语言的代码进行了大量简化,在更快、更安全、更好的交互、更现代的同时,开发者们可以在同一款软件中同时用Objective-C、Swift、C3种语言,这样便实现了3类开发人员的完美融合。