本文是 SketchK 的一篇数据调研笔记,可以帮助大家看清当前国内 iOS 开发形式。文章末尾处有一个开放性投票,欢迎大家积极参与。
Swift 的发展历程
概述
通过官网的 Document Revision History[1] 和 Xcode Release Notes[2] 梳理了一下 Swift 的发展历程和重大事件。
Swift 版本 | Xcode 版本 | 发布时间 | 重大事件 |
---|---|---|---|
Swift 1.0 ~ 1.2 | 6.x | 2014 | 语⾔发布 |
Swift 2.0 ~ 2.2.1 | 7.x | 2015 | 对协议,泛型能力进一步扩展,开始支持 Linux,随后出现了以 Swift 语言为核心的后端框架 Perfect,Vapor,Kitura |
Swift 3.0 ~ 3.3.1 | 8.x | 2016 | 发布了 Swift Package Manager,同时以 GCD,Core Graphics 为代表的基础库 API 风格发生了大幅度转变,摆脱了 Objective-C 时代的烙印 |
Swift 4.0 ~ 4.1.3 | 9.x | 2017 | 在整体的语法,使用和理念上基本定型,提出了 Codable 协议,同时 Xcode 的 Swift Syntax Mirgration 的最低版本固定为 4 |
Swift 4.2 ~ 4.2.4 | 10.x | 2018 | Swift 社区从邮件列表转向论坛,语言小幅升级,主要是功能完善,性能提升,同年 Swift for TensorFlow 发布并开源 |
Swift 5.0 ~ 5.0.3 | 10.2.x | 2019 | ABI 稳定,iOS 12 开始内置 Swift 运行时 |
Swift 5.1 ~ 5.2 | 11.x | 2020 | 新增 Property Wrapper ,Opaque Type 等新的语法功能,同年 WWDC 上,Apple 发布了 SwiftUI,Combine,Catalyst 等 Swift 语言的专属 SDK |
Swift 5.3 | 质量和性能增强,增加对 Windows 和其他 Linux 发行版的支持。 |
结合着自己的 Swift 学习经历,不难发现:
在 Swift 4 之前,由于语言整体还没定型,确实存在着发一个新版本,学一门新语言的情况,但在 Swift 4 之后,Swift 变化变得收敛了许多,不过也出现了入门容易,精通难的情况,毕竟光 Swift 的语法糖数量就快赶上了 C++ 了。
语言排行榜
Swift 语言从诞生之日开始,就一直存在各种各样的争议:一方面的焦点在于 Swift 的应用领域还是集中在 Apple 生态下,让人觉得不够大气,毕竟新时代的语言就是要全能,另一方面的焦点就是 Swift 语言的变化太快,每个版本都是是全新的感觉,这让开发者意识到,东西虽好,但代码还是要一个个的自己改的。
不过随着时间的推移,Swift 在后端,人工智能,物联网上的解决方案和应用场景不断出现,它已经远远不在是一个只能在 Apple 生态下运行的语言,关于这个非常推荐看看 Onevcat 在 GMTC 2019 上的分享:在分歧中发展——2019,我们能用 Swift 做什么[3]
ABI 在 Swift 5.0 的时候也终于稳定了,虽然 ABI 稳定是使用 binary 发布框架的必要非充分条件,但都 ABI 了,module stability 也不会太远了,这些信号都让开发者的信心不断增强。
为了验证这一点,我们也可以从编程语言排行榜 TIOBE[4] 和 PYPL[5] 里看出一些端倪。
下图为 TIOBE 2020 年 四月排行榜,Swift 的排名在 11 名,Objective-C 的排名在 17 名,份额差距在 0.6% 左右:
下图为 PYPL 2020 年 四月排行榜,Swift 的排名在 9 名,Objective-C 的排名在 8 名,份额差距在 0.17% 左右:
不论哪种排名,我们应该都可以得出这样一个结论:相比于 Objective-C 的下降趋势,Swift 的未来会更让人期待。
社区活跃度
观察一个编程语言活跃度的最好地方就是 Github,通过 Pull Requests ,Issues,Pushes,Stars 的情况,我们就可以大致了解到它的情况。
恰好 Githut[6] 提供了这样的能力,通过观察 2020 年第一季度的数据,我们可以清楚的观察到 Swift ,Objective-C 等语言在社区的活跃度。
整体趋势图
下面四张图的 Y 轴分别代表了 Pull Requests ,Issues,Pushes,Stars 的数量,蓝色的线代表 Objective-C ,浅橙色的线代表 Swift,深橙色的线代表 Kotlin。
我们可以发现,从 2016 年开始,Swift 的数据已经超过了 Objective-C,现在有一种取而代之的快速发展趋势&#