测游戏 测游网 ceyouxi 游戏评测论坛 游戏测试交流社区

站内搜索

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

2015-9-29 21:03| 发布者: Howard| 查看: 1375| 评论: 0|原作者: Howard



拥抱 Swift 吧,Objective-C 已经是过去式(1)
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 原始程序码在撰写过程中能即时显示出其运行结果。
做为资深苹果开发专家的 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 已经是过去式(2)

我认为 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),而创建和使用闭包(Closure)也变得更简单。
而对于已经掌握一两门程序设计语言的程序师来说,他的选择则要取决于「已有的一两种语言」是什么。如果这两种语言是 Objective-C 和 Swift,或者 C 和 C++,或者其中任何组合,为了挑战思惟,他可以去学习一种完全不同的语言,比如一种函数式语言(举例:Scheme)。
C、C++、Objective-C 以及 Swift 这样的命令式语言都遵循着相同的模型,学习同类语言很简单,因此就需要让自己多接触不同的语言泛型。虽然他可能并不会用这种语言来写应用,但这会有利于全面开启他对于电脑语言的理解。
拥抱 Swift 吧,Objective-C 已经是过去式(3)


有必要掌握所有 API 吗?
关于何时接触大量的库和 API,以及是否需要学习所有 API 的问题,我经常会用木匠的工具腰带做类比。
大家可以想像一下,一个木匠的工具腰带中会装有所有你能想像得到的工具吗?结论当然是否,他只会装上那些经常使用的工具。当他需要特殊工具的时候,他会来到卡车前或者库房里,打开里面的大工具箱,把需要的特殊工具找出来使用,然后再把它放回去。而这种使用频率往往在很长一段时间里也只有一次到两次。
对于程序设计语言和 API 来说也是如此。虽然知道的 API 越多,你就越能更好地解决问题,但是有多少人能完整地了解所有的 API 呢?我的建议是,先比较完整地学习一门语言,然后再继续研究这种语言的细微之处,也就是开始接触这门语言中可以用来创建有用应用的框架和 API。然后可以按照一定频率(比如每周一次,每次 3-5 小时)去选择一个新的 API 来学习它的功能。你可能并不会经常使用这个 API,但是你了解它,当需要用到时,你就会知道「从哪里把它取出来使用」。

iOS开发专家的知识框架是什么样的?
一个全面的 iOS 专家必须掌握这四样东西:
用来写应用的语言(Swift / Objective-C)。
对创建软件的工具的控制(Xcode)。
关于 iOS 应用基础框架和 API 的强大知识储备。
鉴别好的 UI 设计的能力。
他可能要经历很多应用程序和上百小时的程序设计才能达到这个水准,每个应用都有自身的要求和需要的 API。只要你写的应用程序越多,就能越广地接触到各式苹果框架,UI 设计技巧也会越来越好。

相关阅读

30天内最多顶起

    手机版|小黑屋|测游网 ( 桂ICP备13007413号-1 桂公网安备 45142302000014号 )|

    GMT+8, 2018-12-10 22:57 , Processed in 0.051027 second(s), 13 queries , Memcache On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    返回顶部