Paris Buttfield-AddisonSecret Lab的联合创始人、移动应用工程师,以及游戏设计师。Secret Lab是一家游戏开发公司,他们既为自己开发游戏,也为别人开发游戏,他们致力于使技术变得简单又有趣。Secret Lab制作的游戏包括ABC Play School, Art Maker以及Play Time。

Paris拥有计算学博士学位,同时也是一位历史学士。他之前作为产品经理为硅谷的Meebo公司工作,这家公司在2012年被Google收购。他撰写了一系列关于iOS和游戏开发的技术书,其中包括《学习Objective-C与Cocoa框架》,《iOS游戏开发攻略》,《Swift与Cocoa框架开发》,以及《Unity移动游戏开发》。

从Objective-C到Swift

最初的Macintosh计算机主要用C语言编程,使用一个名为Toolbox(工具箱)的库。苹果公司收购NeXT Computer公司以后,用Max OS X替换了它的操作系统,Toolbox也被Cocoa代替,Cocoa是用Objective-C程序设计语言编写的。

Objective-C与其主要竞争者C++的设计时间大体相同。这两门语言都是C程序设计语言的后代,而且都是面向对象的程序设计语言。这就是说,C语言中的函数和数据结构是独立的,而像C++和Objective-C这样的面向对象语言则将相关的函数和数据合并到对象中。例如,一个名为Car的对象可能包含有关其颜色、速度及开门个数的信息,可能还包含了像drive、stop和openDoor这样的函数。数据与处理数据的函数之间存在着紧密的联系,因而我们可以将软件看作模块化工具的集合,而不是单个大型实体。

Objective-C是一门功能非常强大的语言。它与C++的主要区别是它是一种动态语言。在任何一门面向对象的语言中,都需要将函数绑定到它们处理的具体数据,而这一绑定要么在编译代码时进行(静态绑定),要么在运行时进行(动态绑定)。C++使用静态绑定,这会提高运行时性能,但降低了灵活性。Objective-C采用动态绑定,它要稍慢一些,但大大增强了语言的灵活性。

然而,Objective-C也有自己的问题。因为它是以C语言为基础的,所以它从父语言那里继承了大量古怪的特性,比如预处理器和指针运算(这里只举两例)。这些功能尽管非常强大,但会降低代码的可读性和安全性。苹果公司在保持Objective-C的现代化方面做得非常出色,但即使是这门语言的死忠粉(本书的作者们认为自己就属于这一群体)也认为这门语言有些过时了。

于是Swift应运而生了。Swift是一门新的语言,旨在让iOS和Mac应用程序的开发变得更轻松、更快速、更安全。它的设计目标是更容易掌握,且在防范程序员错误方面比Objective-C做得更好;事实上,苹果公司将它描述为“没有C的Objective-C”。因为Swift是用LLVM(Objective-C使用的工具集)生成和编译的,而且使用了Objective-C运行时,所以我们可以编写一个同时使用C、Objective-C和Swift的App。

Swift有大量现代的程序设计语言特性,包括泛型、类型推理、类型安全、闭包、元组和自动内存管理等。Swift是一门发展中的语言,会随着时间发生变化,但它是苹果平台软件开发的未来!在本书中,我们将学习如何在现实情景中使用Swift,如何利用iOS和OS X中的特性让你的App富有吸引力。

作品选读:Cocoa开发工具

最终入选问题的提问者,将获得图灵社区送出的图灵电子书一本。

往期活动回顾:
《开源软件架构》组织者Michael DiBernardo访谈问题有奖征集,问题入选的获奖者有:好久不见,Likeya,fdy1045,normalme,cage

《你不知道的JavaScript》作者Kyle Simpson访谈问题有奖征集,问题入选的获奖者有:likeya,fdy1045,好久不见,深红,normalme,卞林

向《七周七语言》作者Bruce Tate提问!,问题入选的获奖者有:好久不见,风纪扣v,normalme,likeya,cage,邓国平

《小决心》作者Caroline L. Arnold访谈问题有奖征集,问题入选的获奖者有:cage,normalme,likeya,好久不见,十分之九,fdy1045,Sam.Kwok,华元


更多精彩,加入图灵访谈微信!