您正在使用IE低版浏览器,为了您的雷峰网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
专栏 正文
发私信给图灵访谈
发送

0

拥抱Swift吧,Objective-C已经是过去时

本文作者: 图灵访谈 2015-09-23 18:09
导语:只需要五年,Swift就会取代Objective-C了,你信吗?

Swift是苹果在WWDC2014发布的一门编程语言,用来撰写OS X和iOS应用程序。2010年7月,LLVM编译器的原作者暨苹果开发者工具部门总监克里斯·拉特纳(Chris Lattner)开始着手Swift编程语言的工作。除此之外,还有一个dogfooding 团队也大力参与其中。历时四年,Swift才得以与用户见面。

苹果宣称,Swift编程语言具有“快速、现代、安全、互动”的特点,它基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣,而它的界面则基于Cocoa和Cocoa Touch框架,展示了软件开发的新方向。

Xcode Playgrounds功能是Swift为苹果开发工具带来的最大创新,该功能提供强大的互动效果,能让Swift源代码在撰写过程中能实时显示出其运行结果。

拥抱Swift吧,Objective-C已经是过去时

作为资深苹果开发专家的Boisy G. Pitre曾任Siri语音识别技术提供方Nuance公司Mac产品小组的资深软件工程师,参与开发了语音识别软件Dragon Dictate。如今,他在情绪识别公司Affectiva任职移动远景规划师。

Boisy Pitre十分青睐Swift语言,他还撰写了一本针对初学者的《Swift基础教程》,从变量、类型、函数、闭包等基本概念入手,结合Swift示例,一步步指导读者使用Swift开发App,他在书的最后还给出了一个App开发全流程。

Swift语言对iOS和Android开发的影响

当苹果引入Swift时,我就知道这门语言会在几年之内成为计算机语言版图中的重要一块。

我很难预测作为开源语言的Swift会如何影响Android开发。Google在语言初创方面有Go语言,Go对于Android来说就像是Swift之于iOS。不过我很期待会有人用Swift写Android应用,这就像是有人用Go写iOS应用一样。

一种语言会比另一种语言更成功吗?各自平台的语言一定会依附在它们本来的平台上吗?只有时间能告诉我们。但是苹果开源Swift语言的决定肯定会让各种变化朝更好的方向发展。

Objective-C很不错,但它已经过时了

所有计算机语言都会从其他语言身上借鉴一些东西。对于Swift来说也是如此。从语法和存储模型的角度上说,Swift上就有很多Rust的影子。此外,Swift对于安全的强调使其与C和C++保持了一定距离,所以它们之间的共同点比较少。我相信苹果很努力想让Swift成为自己的语言。

目前iOS中的很多应用框架都还是Objective-C的,调用的方式是使用桥接头文件,但未来会出现更多基于Swift的框架,今后的调用也会变为更加简洁的方式,苹果正在努力实现这个艰巨的任务,因为需要转换的框架有很多。不过很快,我们就会看到专属于Swift的新框架,这样的框架在Objective-C中甚至都找不到同类。这种情况的发生也会对Objective-C的后续使用造成很大的影响。

拥抱Swift吧,Objective-C已经是过去时

我认为Swift在未来有可能会取代Objective-C,没有人知道这会花多长时间,但是应该是在5年之内。不过,计算机语言的生命很长,C语言到现在已经有40岁了,所以Objective-C也不会彻底消失,它只是将在语言世界中所占的份额变得非常小。

Objective-C是一门很不错的语言,但是它带有C语言的遗留问题和包袱。对于编写应用来说,Objective-C在未来会变得越来越脱节。拿我自己举例来说,我现在就已经不再用Objective-C来开启任何一个新的iOS或OS X项目了,对于新项目来说,我只使用Swift来开发。

如何选择学习哪种编程语言?

初学者完全可以先学习Swift。Swift最让我青睐的特性是其语法的清晰度。用关键字“let”建立一个常量变量,和用关键字“var”建立一个可变变量相比,很大程度上简化了C/C++风格的语法。用执行命名参数可以清晰地写函数(如Objective-C),而创建和使用闭包也变得更简单。

而对于已经掌握一两门编程语言的程序员来说,他的选择则要取决于“已有的一两种语言”是什么。如果这两种语言是Objective-C和Swift,或者C和C++,或者其中任何组合,为了挑战思维,他可以去学习一种完全不同的语言,比如一种函数式语言(举例:Scheme)。

C、C++、Objective-C以及Swift这样的命令式语言都遵循着相同的模型,学习同类语言很简单,因此就需要让自己多接触不同的语言泛型。虽然他可能并不会用这种语言来写应用,但这会有利于全面开启他对于计算机语言的理解。

拥抱Swift吧,Objective-C已经是过去时

有必要掌握所有API吗?

关于何时接触大量的库和API,以及是否需要学习所有API的问题,我经常会用木匠的工具腰带做类比。

大家可以想象一下,一个木匠的工具腰带中会装有所有你能想象得到的工具吗?结论当然是否,他只会装上那些经常使用的工具。当他需要特殊工具的时候,他会来到卡车前或者库房里,打开里面的大工具箱,把需要的特殊工具找出来使用,然后再把它放回去。而这种使用频率往往在很长一段时间里也只有一次到两次。

对于编程语言和API来说也是如此。虽然知道的API越多,你就越能更好地解决问题,但是有多少人能完整地了解所有的API呢?我的建议是,先比较完整地学习一门语言,然后再继续研究这种语言的细微之处,也就是开始接触这门语言中可以用来创建有用应用的框架和API。然后可以按照一定频率(比如每周一次,每次3-5小时)去选择一个新的API来学习它的功能。你可能并不会经常使用这个API,但是你了解它,当需要用到时,你就会知道“从哪里把它取出来使用”。

iOS开发专家的知识框架是什么样的?

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

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

  2. 对创建软件的工具的控制(Xcode);

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

  4. 鉴别好的UI设计的能力。

他可能要经历很多应用和上百小时的编程才能达到这个水平,每个应用都有自身的要求和需要的API。只要你写的应用越多,就能越广地接触到各式苹果框架,UI设计技巧也会越来越好。

雷峰网原创文章,未经授权禁止转载。详情见转载须知

拥抱Swift吧,Objective-C已经是过去时

分享:
相关文章

知情人士

对话国外知名技术作者,讲述国内码农精彩人生。你听得见他们,他们也听得见你。
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说