『第一章』命运的齿轮开始转动:雨燕(Swift)诞生!

编程入门 行业动态 更新时间:2024-10-14 06:18:23

『第一章』命运的齿轮开始转动:<a href=https://www.elefans.com/category/jswz/34/1745401.html style=雨燕(Swift)诞生!"/>

『第一章』命运的齿轮开始转动:雨燕(Swift)诞生!

在本篇博文中,您将学到如下内容:

  • 1. 破茧成“燕”
  • 2. 持续进化!
  • 3. Swift 5.0:ABI 稳定性
  • 4. Swift 5.1:模块稳定性和库进化
  • 5. Swift 5.9 来了
  • 6. 登高望远:Swift 6.0
  • 总结

雨燕翻新幕,风鹃绕旧枝
金鹊徒为滞,雨燕漫飞影

1. 破茧成“燕”

有人说要想深入了解一门学科先要了解它的历史,要想熟练掌握一门编程语言同样也不例外。

在  开发的“远古”时代,Objective-c 语言 (以下简称Objc)作为统治者盘踞了很多年。Objc 拥有 C 语言的一切优点,同时也不得不容忍 C 语言的所有缺点。

Objc 语法是出了名的“另类怪异 1 ”,代码中多层嵌套的方括号像叠嶂层峦的山峰,不禁让人有点望“码”兴叹:

-(id) WindowOnClick 
{ NSLog(@"window on click!"); if([delegate conformsToProtocol:@protocol(ResPondsWindowMessage)] && [delegate respondsToSelector:@selector(RespondsClick)] ) { [delegate performSelector:@selector(RespondsClick)]; } NSLog(@"click finished!"); return nil; 
} 

秃头码农们眼睁睁地看着众多新奇、现代化、魔法般的特性在 C#、Java、JavaScript、Rust、Ruby、Python 等语言中犹如雨后春笋般层出不穷的时候,不得不对 Objc 八百年古今一辙恨铁不成钢!

对于 Objc 的“不争气”,  开发部高级总监、架构师克里斯·拉特纳(Chris Lattner)看在眼里急在心上。作为一个曾经多次征服“龙书2”的男人,他暗下决心一定要改变这一切!

2010 年 7 月,克里斯开始利用别人吃鸡摸鱼的时间屏声敛息地设计着一门全新的语言。随后, 其它有野心、有抱负的秃头码农们(DogFooding 狗粮组)也悄然加入其中。

经过近 4 年的不懈努力,苹果正式在 2014 年 6 月 WWDC 开发者大会上高调宣布了这门新语言的诞生:Swift 1.0 正式版终于化茧成“燕”!

苹果官方宣称 Swift 的特点是:快速、现代、安全、互动,而且明显优于 Objc 语言。Swift 语言辅以强大 LLVM3 的编译支持,使用历史久远的 Cocoa 和 Cocoa Touch 框架毫无违和感。

2. 持续进化!

小荷才露尖尖角,早有蜻蜓立上头
长风破浪会有时,直挂云帆济沧海

2015 年 12 月,苹果宣布开源 Swift,并支持Linux。长达 600 多页的 “The Swift Programming Language” 文档可以在线观看或从苹果官方 Github 下载。

2020 年 1 月 TIOBE 编程语言排行榜显示,Swift 语言从第 15 名上升至第 9名,首次杀入前十!

自诞生以来,Swift 一直在蓬勃发展中。Apple 不断为它添砖加瓦 — 增加新的功能并改进原有的特性以满足开发者们日益增长的需求。

时至今日,Swift 已经从一个小众编程语言演进为苹果平台上包含各种现代化语法、特性、开发框架、详尽开发文档与教程的主流开发语言。

同时,随着 Swift 开源社区和标准化工作的进行,Swift 语言也在其他平台(如 macOS、Linux 等)上得到了应用,进一步扩大了它的影响力。

不仅如此,苹果正不遗余力的让 Swift 学习门槛不断降低,让众多初学者,甚至零基础的编程爱好者们都可以轻松使用 Swift 进行开发。

我们将在 第三章 详细介绍 Swift 语言上手环境的搭建。

3. Swift 5.0:ABI 稳定性

任何语言要想厚积薄发并保持可持续发展,语言的 ABI 稳定性是永远绕不开的话题。

Swift ABI 稳定在 macOS、iOS、watchOS 和 tvOS 等平台上一直是一个长期目标。它所带来 Swift 生态系统的最终好处是实现应用程序和库二进制兼容性。

从 Swift 5.0 开始,Swift 的 ABI 在苹果平台上被宣布为稳定(Stability)。随着Swift 在Linux、Windows 和其他平台上的日益成熟,Swift 核心团队也将在这些平台上评估 ABI 的稳定性。

Swift 5.0 为应用程序提供了二进制兼容性,这保证了在未来使用一个版本 Swift 编译器构建的应用程序将能够与使用另一个版本构建的库进行对话。即使在使用与旧语言版本(Swift 4.2 版本)的兼容模式时,也同样适用。4

4. Swift 5.1:模块稳定性和库进化

如果 ABI 稳定性是在运行时混合各种 Swift 的不同版本。那么在编译时呢?

目前,Swift 语言使用一种名为“swiftmodule”的不透明存档格式来描述库的接口(例如框架“MagicKit”)而不是手动编写头文件。

然而,“swiftmodule”格式也会与当前版本的编译器绑定,这意味着如果 MagicKit 是用不同版本 Swift 构建的,则应用程序开发人员无法导入MagicKit。换句话说,应用程序开发人员和库作者必须使用相同版本的编译器。

为了消除这种限制,库作者需要一个称为 模块稳定性(Module Stability) 的功能。这涉及到用模块文本摘要来增强不透明格式,类似于大家在 Xcode “生成接口”视图中看到的。这样,客户端就可以恣意使用模块而不必关心它是用什么编译器构建的。

苹果在 Swift 5.1 中实现了模块稳定性。5

到目前为止,我们一直在讨论 Swift 代码保持不变的情况下更改编译器,但是应用程序已经使用库的更改又当如何呢?

目前,当 Swift 库发生更改时,任何使用该库的应用程序都必须重新编译。这确实有一些优点:因为编译器知道应用程序正在使用库的确切版本,所以它可以做出额外假设,以减少代码大小并使应用程序运行得更快。但对于下一个版本的库来说,这些假设可能并不成立。

这就是 Swift 对库进化的支持:提供一个新版本的库,而不必重新编译使用它的 App。比如,当苹果更新操作系统中的库时,就会发生这种情况,

当一家公司的二进制框架依赖于另一家公司时,这一点也非常重要。这时我们希望(理想情况下)更新第二个框架时不需要重新编译第一个框架。

以上讨论的 Swift ABI、模块稳定性以及库进化可以用下图来总结:

5. Swift 5.9 来了

2023 年 9 月,苹果发布了 Swift 5.9。截止到笔者写这篇文章时,Swift 最新版本为 5.9.1。

Swift 5.9 是一个承上启下的重要新版本,它在语言和标准库(Language and Standard Library)、开发者体验(Developer Experience)以及生态系统(Ecosystem)3 个大方面有显著的演进。

它为 Swift 语言添加了一个富有表现力的宏系统,并通过引入双向互操性将 Swift 集成到 C++ 代码库的支持中。

它还新增了参数包、调试时改进的表达式计算器、增强的崩溃处理、Windows平台的进一步支持等功能。

想进一步了解 Swift 5.9 新特性的小伙伴们可以到  WWDC 2023 官方视频 或 Swift 5.9 Released 链接中观赏进阶内容。

6. 登高望远:Swift 6.0

Swift 语言已处在一个非常关键的里程碑时刻,加下来的发展对 Swift 未来更是举足轻重!用苹果的话来说:

The Swift project has achieved a critical milestone of maturity of the core fundamentals, providing stability for users to invest in using Swift in earnest.

Swift 6.0 将是下一个重大更新的 Swift 大版本。Swift 将会在 6.0 版本中有革命性进化。

概括来说,未来 Swift 6.0 的发展会进一步强化以下几个方面:

  • 加速 Swift 软件生态系统的发展;
  • 创造更加奇妙的开发体验;
  • 给开发者更多自主权;

从 Swift 官方网站 Swift 的宣言中可以看到  的雄心壮志:

Our goals for Swift are ambitious: we want to make programming simple things easy, and difficult things possible.

何曾几时,这也是 UNIX 码农们的的鸿鹄之志!

目前,Swift 6 有两个目标:

  • 加强并发功能的支持;
  • 继续沿着 Ownership Manifesto 计划推进,优化内存模型;

这次 Swift 6 不会有具体发布时间,Swift 核心团队只会按照功能去公开各部分的开发进度和时间表,Swift 6 将这些目标全都完成时横空出世,让我们拭目以待!


更多关于 Swift 6.0 技术细节的展望,请小伙伴们前往如下链接观赏:

  • On the road to Swift 6
  • swift-evolution

总结

在本篇博文中,我们一起回顾了 Swift 语言从诞生、发展、壮大、到标准化的进程,并从目前承前启后 5.9 版本展望未来 6.0 版本的远景规划。

总之,Swift 正从一只小家碧玉似的小雨燕逐渐涅槃成一只倾国倾城的白天鹅。可以说现今要想从事  平台上的开发,Swift 语言是当仁不让的选择。

在下一篇文章中,我们将会来仔细看看这只小雨燕到底有什么与众不同之处。下篇再见!😉


  1. 1.其实写多了也觉得蛮自然的… ↩︎

  2. 2.史诗级介绍编译原理的书籍,因其封面图为一只巨龙而得名。 ↩︎

  3. 3.LLVM 是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意编程语言编写程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),它始终对开发者保持开放,并兼容已有脚本。 ↩︎

  4. 4.ABI Stability and More ↩︎

  5. 5.Evolving Swift On Apple Platforms After ABI Stability ↩︎

更多推荐

『第一章』命运的齿轮开始转动:雨燕(Swift)诞生!

本文发布于:2023-12-03 19:35:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1657014.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:雨燕   齿轮   命运   Swift

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!