《Swift基础教程》做者Boisy Pitre:Objective-C很不错,但它已是过去时

非商业转载请注明做译者、出处,并保留本文的原始连接:http://www.ituring.com.cn/article/203600程序员

Boisy G. Pitre是一位资深苹果开发专家,曾任Siri语音识别技术提供方Nuance公司Mac产品小组的资深软件工程师,参与开发了语音识别软件Dragon Dictate。MacTech杂志“Developer to Developer”月度专栏做家,曾屡次在MacTech和CocoaConf等会议上发表技术演讲。现任情绪识别公司Affectiva的移动远景规划师,领导团队致力于将公司的表情分析技术迁移到移动平台。Boisy著有《Swift基础教程》一书。编程

图片描述

问:你写做《Swift基础教程》的目的是什么?安全

当苹果引入Swift时,我就知道这门语言会在几年以内成为计算机语言版图中的重要一块。个人目标是以有趣而轻松的方式向读者们介绍这门新语言,让读者们抢先起步,并在以后的学习中迅速加速。写做这本书很具备挑战性,由于这门语言能够讨论的东西实在是太多了,而我不想让读者们感到不知所措。这本书是我为初学者设计的,从这个角度上说,这本书很成功。微信

问:你可否向读者们介绍一下你在Affectiva从事的工做?闭包

固然。Affectiva是一家在数字体验中引入情绪智力的科技公司。咱们的技术根据实时面部分析来判断一我的的情绪状态。我是这家公司的移动远景规划师,个人责任是把技术和移动世界链接起来。咱们已经实现了这个目标,而我如今正在努力提升移动平台的技术,这些平台包括iOS和Android。咱们有一个能够供开发者使用的SDK,用于把情绪智能整合到他们的应用中。框架

问:在你看来,开源Swift会改变iOS的生态环境以及iOS和Android之间的关系吗?编程语言

很难预测做为开源语言的Swift会如何影响Android开发。Google在语言初创方面有Go语言,它对于Android来讲就像是Swift之于iOS。我期待会有人用Swift写Android应用,就像是有人用Go写iOS应用同样。一种语言会比另外一种语言更成功吗?各自平台的语言会依附在它们原本的平台上吗?只有时间能告诉咱们。可是话说回来,苹果开源Swift语言的决定确定会让各类变化朝更好的方向发展。函数

问:Swift从其余语言中整合了哪些特性?其中你最喜欢的特性是什么?工具

全部计算机语言都会从其余语言身上借鉴一些东西。对于Swift来讲也是如此。从语法和存储模型的角度上说,我在Swift上能看到不少Rust的影子。很明显,Swift对于安全的强调使其与C和C++保持了必定距离,因此它们之间的共同点比较少。我相信苹果很努力想让Swift听从本身的主张,成为本身的语言。对于将来,咱们拭目以待。学习

到目前为止,我最喜欢的Swift特性是语法的清晰度。用关键字‘let’创建一个常量变量,和用关键字‘var’创建一个可变变量相比,很大程度上简化了C/C++风格的语法。用执行命名参数能够清晰地写函数(如Objective-C),而建立和使用闭包也变得更简单。

问:Swift在将来有可能会取代Objective-C吗?

固然。可是没人知道会用多长时间,可是我认为应该是在5年以内。咱们很容易就忘记计算机语言的生命有多长(如今C语言已经40岁了)。Objective-C不会完全消失,可是我能预见在将来的某一个时刻,它在语言世界中的份额将变得很是小。

问:iOS中的不少应用框架都仍是Objective-C的,目前调用的方式是使用桥接头文件,从此的调用是否有可能变为更加简洁的方式?将来是否会出现更多基于Swift的框架?

几乎能够确定是这样的,并且我相信苹果正在努力实现这件事。可是咱们得记住,这是一个艰巨的任务,须要转换的框架可不在少数。可是我相信这些工做不会花费过久的时间,并且咱们很快就会看到专属于Swift的新框架,这样的框架在Objective-C中甚至都找不到同类。这种状况的发生确定会对Objective-C的后续使用形成很大的影响。

问:你建议初学者应该先学Objective-C仍是Swift?

确定是Swift。Objective-C是一门很不错的语言,可是它带有C语言的遗留问题和包袱。对于编写应用来讲,Objective-C在将来会变得愈来愈脱节。事实上,我如今不会用Objective-C来开启任何一个新的iOS或OS X项目。对于新项目来讲我只使用Swift来开发。

问:对于已经掌握一两门编程语言的程序员来讲,你认为他们怎样才能快速有效地学习一门新语言?

这取决于已有的一两种语言是什么。若是这两种语言是Objective-C和Swift,或者C和C++,或者其中任何组合,为了挑战思惟,我会推荐你学习一种彻底不一样的语言。像C, C++, Objective-C,以及Swift这样的命令式语言都遵循着相同的模型,因此要学习同类语言很简单。你必定要让本身多接触不一样的语言泛型,因此我会推荐你学一种函数式语言,好比Scheme。虽然你不会用这种语言来写应用,可是它会全面打开你对计算机语言的理解。

问:在学习编程语言的过程当中,你认为何时候接触大量的库和API比较合适?对于某个平台的开发者来讲,他有必要掌握全部可能用到的API吗?

我常常会用木匠的工具腰带作类比。他的腰带中会装有全部想象获得的工具吗?不……只有那些常用的工具。当他须要特殊工具的时候,他会走到他的卡车前,打开放在里面的大工具箱,而后使用某种工具一次到两次,而后把它放起来。

对于编程语言和API来讲也是如此。你没法完整地了解全部API,可是你知道得越多,你就越能更好地解决问题。我会建议你先比较完整地学习一门语言,而后再继续研究这种语言的细微之处,也就是开始接触这门语言中能够用来建立有用应用的框架和API。而后你能够每周一次,选择一个新的API,投入3-5个小时来学习它的功能。你可能并不会常用这个API,可是你知道它就在那,当遇到适当的时机时,你就会准备好用它来完成特定的任务了。

问:对于一位iOS开发专家来讲,他的知识框架是什么样的?

一个全面的iOS专家必须掌握这四样东西:

  • (1) 用来写应用的语言(Swift / Objective-C);

  • (2) 对建立软件的工具的控制(Xcode);

  • (3) 关于iOS应用基础框架和API的强大知识储备;

  • (4) 鉴别好的UI设计的能力。

要经历不少应用和上百小时的编程才能达到这个水平。每一个应用都会带来自身的要求和须要的API,因此你写的应用越多,就能越广地接触到各式苹果框架的,而你的UI设计技巧也会愈来愈好。


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

图片描述

相关文章
相关标签/搜索