为什么选择Swift以及学习Swift参考什么书?
Posted 图灵教育
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么选择Swift以及学习Swift参考什么书?相关的知识,希望对你有一定的参考价值。
Swift源起
苹果公司的全球开发者大会(World Wide Developers Conference,WWDC)是其开发者社区一年一度的盛事。虽然WWDC每年都是大事件,但在2014年尤为特殊:苹果为ios和OS X(现在称为macOS)应用开发推出了一门全新的语言Swift。
作为一门新语言,Swift对macOS和iOS开发者意味着相当巨大的转变。对于资深iOS开发者来说,他们得学些新东西了;而对于新手开发者,也还没有成熟的社区来获取久经考验的答案和解决问题的模式。很自然,这个转变会造成一些不确定性。
但是对macOS和iOS开发者来说,这也是个激动人心的时刻。我们可以从一门新语言中学到很多东西,对Swift而言更是如此。这门语言从2014年夏天发布以来已经进化了不少,而且还在持续进化。
我们都处于这门语言发展的最前沿。随着Swift新特性的增加,使用者可以一起合作来摸索出最佳实践。
为什么选择Swift
如果有过苹果平台上的Objective-C开发经验,你可能会想,苹果为什么还要发布一门新语言呢?毕竟这些年来,开发者产出了不少高质量的OS X和iOS应用。苹果其实考虑了几件事情。
首先,Objective-C是比较老的语言。虽然老不一定会出问题,但是确实造成了一些困难。Objective-C的语法在20世纪90年代脚本语言兴起之前就固化了,这些脚本语言普及了更精简、更优雅的语法(比如javascript、Python、php、Ruby等)。这让大部分开发者在起步的时候觉得Objective-C的语法很奇怪,并可能造成开发者产出的降低。此外,作为一门比较老的语言,Objective-C也缺失了现代语言的开发者们正在享受的很多高级特性。
其次,Swift的目标是安全。虽然Objective-C的目标并非不安全,但是自从Objective-C在20世纪80年代发布以来,情况发生了很多变化。举个例子,Swift编译器致力于尽量减少未定义行为,从而减少开发者对在应用运行时出错的代码进行调试的时间成本。
Swift的另一个目标是成为C系语言(C、C++和Objective-C)的替代品。这意味着Swift必须有足够快的运行速度。的确,Swift在多数情况下的性能和这些语言是差不多的。
Swift用一种干净、现代的语法提供了安全性和性能。这门语言表达力强,可以让开发者写出很自然的代码。这让Swift代码写起来很舒服,读起来很容易,适合用于大项目中的协作。
最后,苹果想让Swift成为通用编程语言。这一点从2015年12月Swift开源就能反映出来。把语言开源不仅能吸引开发者进来帮助语言进化,还能让开发者更容易地把这门语言移植到macOS和iOS以外的系统上。苹果希望开发者能用Swift开发多种移动和桌面平台上的应用,以及开发后端Web应用。Swift意在成为一门主流编程语言,为在多种平台上开发多种应用提供最好的解决方案。
Objective-C前景如何
那么,苹果所有平台的上一代通用语言Objective-C的前途如何?开发者还需要懂这门语言吗?就专业的macOS和iOS开发者来说,我们认为答案是明确的,“需要”。苹果广泛使用的Cocoa和UIKit框架是用Objective-C写的,学会这门语言会使调试变得更加简单。实际上,苹果已经让同一工程中Swift和Objective-C混编变得容易——混编有时候还是更优的选择。macOS或者iOS开发者势必会接触Objective-C,所以应该熟悉这门语言。
那么,学习Swift或者开发macOS或iOS应用需要有Objective-C的基础吗?完全不需要。Swift和Objective-C并存,也可以互操作,但是Swift自成一体。就算不会Objective-C,也不会妨碍你学习Swift。
Swift 学习参考图书
《Swift编程权威指南》【有电子版】(NEW !)
《精通iOS开发(第8版)》(NEW !)
《Swift基础教程(第2版)》【有电子版】
《从零开始学Swift(第2版)》
《Swift iOS开发小书》(只提供社区电子版)
《Swift与Cocoa框架开发》【有电子版】
《精通Swift设计模式》
关于每一本书的侧重点,你可以扫码查看以下简介:
以下为大家重点推荐美亚 Swift 编程第一书 Swift Programming: The Big Nerd Ranch Guide (2nd Edition) 中文版——《Swift编程权威指南》。
小贴士
Big Nerd Ranch 是美国的一家培训机构,他们同时也成立了自己的出版公司,他们家出版的技术图书目前统称为 Big Nerd Ranch Guides 系列,这个系列整体上相当给力,国内各家出版社也是各种争抢版权。
这个系列,图灵已出版2本,另外一本是大家非常熟悉的《android编程权威指南》,最新升级到了第3版,也是刚刚上架,改天跟大家详细推荐。图灵这边还有一本 Front-End Web Development: The Big Nerd Ranch Guide (Big Nerd Ranch Guides) (中文版《Web开发权威指南》),正在编辑中,估计在9月份跟大家见面。
他家这个系列的书还涵盖iOS、OS X、OC主题,国内已经由其他出版社引进,喜欢这个系列的可以自行去网店搜索。
《Swift编程权威指南》
Amazon移动开发类畅销书
针对Swift 3.0和Xcode 8全新升级
iOS和macOS开发入门与进阶必读
本书系统讲解了在iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。主要围绕使用Swift语言进行iOS和macOS开发,结合大量代码示例,教会读者利用高级iOS和macOS特性开发真实的应用。
本书已经在京东、当当、亚马逊、互动全面上架,长按识别以下二维码购买。
长按二维码亚马逊购买
【其他购买渠道】
京东:https://item.jd.com/12215156.html
当当:http://product.dangdang.com/25100126.html
图灵社区电子版:http://www.ituring.com.cn/book/2038
你是什么水平的开发者以及你为什么适合这本书?
本书是写给从初学者到平台专家的各层次macOS和iOS开发者看的。针对刚接触软件开发的读者,我们会突出并实现Swift和通用编程方法的最佳实践。我们的策略就是在教你学习Swift的同时帮你打下编程基础。至于有经验的开发者,我们相信本书能帮你快速入门所在平台的新语言。具备一定的开发经验当然很好,但是没有这样的经验一样可以阅读本书。
本书使用了大量的示例,以便读者在将来的开发过程中参考。这些示例不会着眼于抽象的概念和理论,而是更倾向于实用性。我们喜欢用实际的例子来剖析艰深的概念,从而让大家了解最佳实践,让代码更有趣、更可读、更易维护。
内容概览
这本书分为六个部分,每个部分都会完成一组特定的目标,且每个目标都以彼此为基础。读完本书后,你将不再是一个初学者,而是会完成高级开发者的Swift知识构建。
第一部分 起步
这部分着眼于写Swift代码所需的工具,并且会介绍Swift的语法。
第二部分 基础知识
这部分介绍Swift开发者每天都会用到的基本数据类型,还涵盖了Swift用来控制代码执行顺序的控制流特性。
第三部分 容器和函数
在应用中经常需要收集相关数据,一旦收集完成,还需要对这些数据进行操作。这部分讲解Swift提供的来帮你完成这些任务的容器和函数。
第四部分 枚举、结构体和类
这部分阐述了如何在开发过程中为数据建模。我们会讨论Swift的枚举、结构体和类之间的差异,并就每种类型适合何时使用给出建议。
第五部分 Swift高级编程
作为一门现代语言,Swift提供了更加高级的特性,能让你写出优雅、可读、高效的代码。这部分讨论如何使用Swift的这些元素写出区别于普通Swift开发者的地道代码。
第六部分 事件驱动的应用
这部分将指引你写出第一个macOS和iOS应用。对于之前写过macOS和iOS应用的读者,我们将在其结尾讨论如何在Objective-C和Swift之间互操作。
图书目录
目录
第一部分 起步
第1章 起步 2
1.1 Xcode起步 2
1.2 尝试playground 4
1.3 修改变量并打印信息到控制台 5
1.4 继续前进 7
1.5 青铜挑战练习 7
第2章 类型、常量和变量 8
2.1 类型 8
2.2 常量与变量 9
2.3 字符串插值 11
2.4 青铜挑战练习 12
第二部分 基础知识
第3章 条件语句 14
3.1 if/else 14
3.2 三目运算符 16
3.3 嵌套的if 17
3.4 else if 18
3.5 青铜挑战练习 19
第4章 数 20
4.1 整数 20
4.2 创建整数实例 22
4.3 整数操作符 23
4.4 转换整数类型 26
4.5 浮点数 27
4.6 青铜挑战练习 28
第5章 switch语句 29
5.1 什么是switch 29
5.2 开始使用switch 30
5.3 switch与if/else 38
5.4 青铜挑战练习 39
5.5 白银挑战练习 40
第6章 循环 41
6.1 for-in循环 41
6.2 类型推断概述 45
6.3 while循环 45
6.4 repeat-while循环 46
6.5 重提控制转移语句 47
6.6 白银挑战练习 50
第7章 字符串 51
7.1 使用字符串 51
7.2 Unicode 53
7.3 青铜挑战练习 57
7.4 白银挑战练习 57
第8章 可空类型 58
8.1 可空类型 58
8.2 可空实例绑定 60
8.3 隐式展开可空类型 62
8.4 可空链式调用 63
8.5 原地修改可空实例 64
8.6 nil合并运算符 65
8.7 青铜挑战练习 66
8.8 白银挑战练习 66
第三部分 容器和函数
第9章 数组 68
9.1 创建数组 68
9.2 访问和修改数组 69
9.3 数组相等 75
9.4 不可变数组 76
9.5 文档 77
9.6 青铜挑战练习 78
9.7 白银挑战练习 78
9.8 黄金挑战练习 78
第10章 字典 79
10.1 创建字典 79
10.2 填充字典 80
10.3 访问和修改字典 80
10.4 增加和删除值 82
10.5 循环 84
10.6 不可变字典 85
10.7 把字典转换为数组 85
10.8 白银挑战练习 86
10.9 黄金挑战练习 86
第11章 集合 87
11.1 什么是集合 87
11.2 创建集合 87
11.3 运用集合 89
11.4 青铜挑战练习 92
11.5 白银挑战练习 92
第12章 函数 93
12.1 一个基本的函数 93
12.2 函数参数 94
12.3 从函数返回 99
12.4 嵌套函数和作用域 100
12.5 多个返回值 101
12.6 可空返回值类型 102
12.7 提前退出函数 103
12.8 函数类型 103
12.9 青铜挑战练习 104
12.10 白银挑战练习 104
12.11 深入学习:Void 105
第13章 闭包 106
13.1 闭包的语法 106
13.2 闭包表达式语法 107
13.3 函数作为返回值 110
13.4 函数作为参数 111
13.5 闭包能捕获变量 113
13.6 闭包是引用类型 115
13.7 函数式编程 116
13.8 青铜挑战练习 119
13.9 青铜挑战练习 119
13.10 黄金挑战练习 119
第四部分 枚举、结构体和类
第14章 枚举 122
14.1 基本枚举 122
14.2 原始值枚举 125
14.3 方法 128
14.4 关联值 131
14.5 递归枚举 133
14.6 青铜挑战练习 136
14.7 白银挑战练习 136
第15章 结构体和类 137
15.1 新工程 137
15.2 结构体 141
15.3 实例方法 144
15.4 mutating方法 145
15.5 类 145
15.6 应该用哪种类型 150
15.7 青铜挑战练习 150
15.8 白银挑战练习 150
15.9 深入学习:类型方法 151
15.10 深入学习:mutating方法 152
第16章 属性 158
16.1 基本的存储属性 158
16.2 嵌套类型 159
16.3 惰性存储属性 160
16.4 计算属性 162
16.5 属性观察者 164
16.6 类型属性 165
16.7 访问控制 168
16.8 青铜挑战练习 171
16.9 白银挑战练习 171
16.10 黄金挑战练习 171
第17章 初始化 172
17.1 初始化方法语法 172
17.2 结构体初始化 172
17.3 类初始化 177
17.4 可失败的初始化方法 185
17.5 掌握初始化 188
17.6 白银挑战练习 188
17.7 黄金挑战练习 188
17.8 深入学习:初始化方法参数 189
第18章 值类型与引用类型 190
18.1 值语义 190
18.2 引用语义 192
18.3 值类型常量和引用类型常量 194
18.4 配合使用值类型和引用类型 196
18.5 复制 197
18.6 相等与同一 199
18.7 我应该用什么 200
18.8 深入学习:写时复制 201
第五部分 Swift高级编程
第19章 协议 210
19.1 格式化表格数据 210
19.2 协议 214
19.3 符合协议 217
19.4 协议继承 218
19.5 协议组合 219
19.6 mutating方法 220
19.7 白银挑战练习 221
19.8 黄金挑战练习 221
第20章 错误处理 222
20.1 错误分类 222
20.2 对输入字符串做词法分析 223
20.3 捕获错误 231
20.4 解析符号数组 232
20.5 用鸵鸟政策处理错误 236
20.6 Swift的错误处理哲学 239
20.7 青铜挑战练习 240
20.8 白银挑战练习 240
20.9 黄金挑战练习 241
第21章 扩展 242
21.1 扩展已有类型 242
21.2 扩展自己的类型 244
21.3 青铜挑战练习 248
21.4 青铜挑战练习 248
21.5 白银挑战练习 248
第22章 泛型 249
22.1 泛型数据结构 249
22.2 泛型函数和方法 251
22.3 类型约束 253
22.4 关联类型协议 254
22.5 类型约束中的where子句 257
22.6 青铜挑战练习 259
22.7 白银挑战练习 259
22.8 黄金挑战练习 259
22.9 深入学习:理解可空类型 260
22.10 深入学习:参数多态 260
第23章 协议扩展 262
23.1 为锻炼建模 262
23.2 扩展Exercise 264
23.3 带where子句的协议扩展 265
23.4 用协议扩展提供默认实现 266
23.5 关于命名:一个警世故事 268
23.6 青铜挑战练习 270
23.7 黄金挑战练习 270
第24章 内存管理和ARC 271
24.1 内存分配 271
24.2 循环强引用 272
24.3 用weak打破循环强引用 276
24.4 闭包中的循环引用 277
24.5 逃逸闭包和非逃逸闭包 281
24.6 青铜挑战练习 283
24.7 白银挑战练习 283
24.8 深入学习:我能获取实例的引用计数吗 283
第25章 Equatable和Comparable 284
25.1 符合Equatable 284
25.2 符合Comparable 287
25.3 继承Comparable 289
25.4 青铜挑战练习 290
25.5 黄金挑战练习 290
25.6 白金挑战练习 291
25.7 深入学习:自定义运算符 291
第六部分 事件驱动的应用
第26章 第一个Cocoa应用 296
26.1 开始创建VocalTextEdit 297
26.2 模型视图控制器 298
26.3 设置视图控制器 299
26.4 在Interface Builder中设置视图 301
26.5 连接 307
26.6 让VocalTextEdit“说话” 310
26.7 保存和加载文档 311
26.8 白银挑战练习 320
26.9 黄金挑战练习 320
第27章 第一个iOS应用 321
27.1 开始创建iTahDoodle 322
27.2 布局用户界面 323
27.3 为待办事项列表建模 331
27.4 设置UITableView 335
27.5 保存和加载TodoList 337
27.6 青铜挑战练习 341
27.7 白银挑战练习 341
27.8 黄金挑战练习 341
第28章 互操作 342
28.1 一个Objective-C工程 342
28.2 在Objective-C工程中加入Swift 351
28.3 添加Objective-C类 361
28.4 白银挑战练习 368
28.5 黄金挑战练习 368
第29章 结语 369
29.1 接下来学习什么 369
29.2 插个广告 369
29.3 邀请 369
学习本书的最佳姿势
编程有时候很难,本书尝试让编程变得更容易。要发掘本书的最大价值,我们建议你遵循以下步骤。
精读本书。必须精读!别只是在晚上睡觉前随便翻翻。
阅读过程中把示例代码敲出来。肌肉记忆是学习的一部分。如果不需要太多思考,手指就知道该怎么动、该敲什么键,那么你就已经迈上了成为高效开发者之路。
犯错误!根据我们的经验,学习事物运作原理的最好办法是先搞清楚什么情况下会出问题。可以先把示例代码弄坏,再让代码跑起来。
根据自己的想象力进行实验。无论是微调本书中的代码,还是尝试自己的方向,越早用Swift解决自己的问题,就能越早成为更好的开发者。
完成我们提供的挑战练习。就像刚才说的,尽早用Swift解决问题很重要,这能让你像开发者一样思考。
有经验的开发者可以不阅读本书的前几章。有些开发者很熟悉第一部分和第二部分中的内容。
警告:在第二部分中,不要跳过第8章,因为那是Swift的核心,而且用多种方式定义了这门语言的独特之处。
后面的第9章、第10章、第12章、第14章和第15章,对于熟练的开发者来说可能不是什么新知识,但是我们认为Swift实现这些类型的方式十分独特,读者最起码应该快速浏览一下这几章。
最后,记住学习新知识很花时间。在可以心无旁骛的时候专门拿出一段时间来好好阅读本书,你能从书里得到更多的收获。
挑战练习
很多章的结尾都有练习,你应该独立完成。这是挑战自己的好机会。在练习中独立解决问题能真正完成深入学习。
深入学习
我们还在很多章的结尾加上了“深入学习”一节。这部分内容解答那些好奇的读者在阅读相应一章时可能提出的问题。有时候,我们会讨论语言的某个特性的底层机制,或者探索某个跟那一章的核心内容不大相关的编程概念。
购书福利
购买纸质版之后,凭借纸质版封底刮刮卡上的9位英文编码,大家可以到图灵社区《Swift编程权威指南》的页面 http://www.ituring.com.cn/book/2038 登记(若没有ID,需要先注册),不仅可以收获定价10%的银子,还能收到一封带有电子版优惠码的提醒邮件,以纸质版定价的10%购买电子版。
说说
2017年6月,Swift 在 TIOBE 编程语言排行榜中位列12,今年3月份,历史上第一次挺进前10。苹果对 Swift 的大力支持,以及 Swift 语言本身的易学性、安全性是否让你决定入坑?已经入坑的同学有没有遇到让自己头疼的问题,遇到这些问题你是如何解决的呢?
留言区分享自己的感悟,精选评论中挑选 4 位赠送《Swift编程权威指南》。截止7月12日14:00。
☟ 【阅读原文】亚马逊购买《Swift编程权威指南》
以上是关于为什么选择Swift以及学习Swift参考什么书?的主要内容,如果未能解决你的问题,请参考以下文章