发布十年后,苹果的Swift语言走向衰落
2024-06-14 07:56

发布十年后,苹果的Swift语言走向衰落

本文来自微信公众号:MacTalk(ID:MacTalkPro),作者:池建强,题图来自:视觉中国

文章摘要
文章讲述了苹果的Swift语言十年后走向衰落的可能性,从Swift的起源、开源、发展到目前的现状进行了分析和总结。

• 💡 Swift从创立到今天的发展历程梳理清晰

• 🔍 对Swift开源、跨平台支持和生态建设的深入探讨

• 🚀 分析了Swift在移动应用、服务端和AI领域的发展现状和挑战。

2024 年的 WWDC 上,AI 的风头已经盖过了一切,苹果向人们展示了一系列的新特性,宣布把 AI 能力融入到了整个生态之中。社交媒体上讨论的焦点显然也是各种各样的 AI 功能,大家似乎已经忘了,WWDC 其实是一个关于开发者的大会。


与开发者直接相关的,苹果还对外公布了 Swift 6 的细节。我仍然记得, 2014 年时,移动互联网正如日中天,那一届的 WWDC 上,Swift 正式问世,它是一门基于 C 和 Objective-C 的编程语言,最初被设计用于开发 iOS 和 OS X 的应用程序。


在这之前,若想在 iOS 上开发应用程序,那 Objective-C 是唯一的选择。但 Objective-C 的缺点也显而易见,它的语法冗长,学习曲线陡峭,内存管理复杂,缺乏众多现代语言特性。于是,Swift 语言被寄予厚望。


现在,一转眼,十年过去了。今天我们来聊聊 Swift 吧。


Swift 的缘起和野心


2010 年的夏天,时任苹果开发者工具部门主管的 Chris Lattner 计划为 OS X 和 iOS 平台开发新一代的编程语言。这位 Chris Lattner 来头可不小,他曾经参与创建过许多重要的编译器项目,比如 LLVM、Clang。


那年,移动互联网正在风头之上,诞生于 80 年代的 Objective-C 暮气沉沉,已经无法承载苹果下一个阶段的发展目标。Chris 看到了诸如 Rust、Python 等新语言的闪光点,也听到了内外部许多工程师吐槽 Objective-C 毫无建树。他心里清楚,Objective-C 的很多固有缺陷,仅仅靠渐进式的优化是无法解决的。


于是,他小规模和同事商量后,决定要为苹果打造一个立于时代前沿的编程语言。


接下来,Chris 用了近一年的时间实现了大部分基础语言结构,之后另一些语言专家加入进来持续改进。到了 2013 年,该项目成为了苹果开发工具组的重中之重,Chris 带领着他的团队逐步完成了一门全新语言的语法设计、编译器、运行时、框架、IDE 和文档等相关工作,并在 2014 年的 WWDC 大会上首次登台亮相。


这门语言的名字就叫做:Swift,Logo 是一只轻盈飞扬的雨燕。


很多人以为,Swift 的发展目标仅仅是支撑苹果生态应用的发展。但如果你留意的话,当年在《The Swift Programming Language》电子书中,Chris 曾经明确写过他对 Swift 的期许:


Swift is intended to be the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language. […] It’s designed to scale from ‘hello, world’ to an entire operating system.


后来,在采访中,他补充说:“从一开始,我们就是要将 Swift 打造成为一门通用的语言。这也许有点痴人说梦,但是大家等着,过几年就知道了。无论是我还是苹果的其他人,都把 Swift 当成是未来世界的主流语言来看待的,它将会超越 Python,甚至有一天取代 C。”


也就是说,无论是应用开发、脚本语言还是底层的系统设计,Swift 都可以胜任。这是它的目标和野心。


Swift 开源,并向其他平台延展


理解了这个出发点,我们也就明白了为什么 Swift 会开源。


在 2015 年的 WWDC 大会上,苹果发布了 Swift 2.0 ,并宣布于年底开源 Swift 语言。当时很多人没有注意到,Swift 2.0 中有一个重要的特性是引入了对 Linux 的支持。显而易见,苹果从没把 Swift 局限于自己的生态之中。


可以这么讲,目前世界范围内,主流的编程语言都是开源的。一方面,开源可以汇聚公司之外开发者的力量。另外一方面,开源社区也可以帮助 Swift 核心团队收集开发者的反馈。毫无疑问,这些都有利于 Swift 更快地走出苹果,成为一个通用的编程语言。


几个月后,开源社区陆续有开发者把 Swift 语言移植到新的平台当中。诸如 Android、Linux ARM、FreeBSD 和 Windows。Swift 的发展顺风顺水,在开发者社区中,它的影响力逐步超越了 Objective-C,并且像 IBM 这样的重要选手也逐步参与进来,推进 Swift 在服务端上的工作。


2016 年的 WWDC 上,苹果依旧按照固定的节奏发布了 Swift 3.0 ,一切井井有条地在进行之中。此时,在苹果的生态之中,Swift 语言已经站稳脚跟,但服务器端,又有另外一匹黑马杀了出来:Go 语言。


还记得吧, 2014 年 Swift 发布之时,也正是 Docker 火热之时。随后的几年里,以 Docker 和 Kubernetes 为核心的技术在云计算领域大为流行,他们被称为云原生——为云而生的新一代技术。而云原生技术中重要的开源项目都是用出自 Google 的 Go 语言编写的,这间接促进了 Go 语言在服务器领域的流行。


Swift 看起来并没能渗透进入服务器领域。


或许一门编程语言想要获得更多开发者的信任,也需要时间的积累。至少 Chris 是这么认为的。后来,一次采访中,记者问他,Swift 已经发展到 3.0 版本了,为什么大家看起来还是用 Swift 来写 iOS 应用?言外之意是 Swift 并没能破圈。


Chris 仍旧自信地回答道:“我现在根本不担心 Swift 在服务器端最后不会成功。现在最大的问题是大家还觉得 Swift 只是苹果自己搞出来的东西。他们觉得 Swift 不过是苹果自己的玩具,只能用在苹果自己的 iOS 系统和 macOS 系统上。所以我们应该加大开源和构建社区的力度。现在外行对于 Swift 的态度还可以接受,慢慢地 Swift 就会在系统开发领域追上来。”


核心人物逐步淡出


出人意料的是, 2017 年 1 月,Swift 的核心人物 Chris Lattner 宣布自己将离开苹果公司,加入特斯拉。写给社区的邮件中,他说他接下来仍然会继续作为 Swift 核心团队的成员,推动 Swift 的发展。


随后 2017 年的 WWDC 上,苹果照例发布了 Swift 4.0 。不过,值得注意的一个细节是,这一年的主论坛中,苹果没有再提到 Swift,虽然分论坛中仍旧有不少 Swift 相关的话题。或许我们可以做一个推测:Chris 离开之后,随着开源进展的深入,苹果把 Swift 的发展重点也放到了开源社区的经营上。


很多年后再回看,我仍旧觉得 Chris 的离开对于 Swift 的影响是决定性的。有趣的是,Chris 在特斯拉也没待多久,便辗转去了 Google。在 Google 待了三年后,他又加入了一家芯片创业公司 SiFive 负责平台工程。2022 年初,离开那家创业公司后,Chris 自己创业,成立了 Modular AI,准备重建人工智能基础设施。


2023 年 5 月,Modular AI 宣布推出一门全新的编程语言 Mojo。为什么要做 Mojo 呢?Chris解释说,一开始创业,他也没想到要再做一门编程语言。后来,他和团队发现,在 AI 编程中,上层框架和下层硬件的鸿沟实在是太大了,为此,开发者不得不多写一些额外的适配代码。他们实在无法忍受这种复杂性,于是 Mojo 便诞生了。


你可能会好奇,为什么 Chris 没有使用 Swift 来解决这个问题?


因为闹翻了。2021 年夏天,Chris 已经退出 Swift 核心团队。据后来的表述,主要原因是他无法忍受糟糕的沟通氛围,他和其他社区成员的想法越来越被忽视,团队的透明度也出现问题。他同时认为,自己在 Swift 的影响力已经减弱,而他关心的一些核心设计理念,比如简洁性,似乎已经不再是大家所信奉的东西。


也就是说,从 2021 年年中之后,Chris 已经不再参与 Swift 的开发工作了。


Swift 继续发展,但也慢了下来


自从 2019 年发布 Swift 5 以来,一直到今年,Swift 没有再进行大的版本迭代,转而,它不断强化 5.x 版本。2019 年, 5.0 实现了 ABI 稳定性,并发布了 SwiftUI。2020 年,Swift 5.3 开始支持 Windows。2021 年,Swift 5.5 将 Concurrency 加入了标准库,以增强 Swift 的并发编程能力。2022 年,又引入 distributed actor 能力。2023 年,Swift 5.9 支持 C++互操作特性。


但我不禁想问,Swift 实现当初的目标了吗?


根据苹果官方的数据,目前已经有 100 多万个 App 使用 Swift 开发。与十年前相比,Swift 的生态早已经成熟了不少。去年,苹果甚至用 Swift 重写了 Foundation 库,它被誉为 macOS 和 iOS 应用程序的基石。


一个不可回避的事实是,越来越多的开发者已经在使用类似 Flutter 之类的跨平台软件来开发应用,而 Flutter 使用的编程语言是 Dart。当然,如果想开发原生的 iOS、macOS 应用,那 Swift 当之无愧是最佳选择,它在多方面的能力都优于 Objective-C。


同时,虽然 Swift 仍在努力破圈,增加了诸多服务端语言才需要的能力,但在服务端语言的市场中,Swift 几乎没有什么渗透。系统级语言层面,C++ 之外,Rust 语言找到了新的生态位,Swift 也没什么踪影。而当下大火的 AI 编程,虽然 Swift For TensorFlow 曾经野心勃勃,但目前看,也仍然还局限在 iOS 开发中,鲜有新的建树。


在刚刚结束的 WWDC 2024 大会上,Chris 当年的继任者,苹果语言和运行环境总监 Ted Kremenek 仍旧放出豪言说,Swift 是取代 C++ 的最佳编程语言。“Swift 的安全性、速度和易用性,加上内置的 C 和 C++ 互操作性,意味着 Swift 是继任 C++ 的最佳选择。”


当然,这次他的话并没有在社区中引起什么强烈反响,甚至我搜了很久,才在某个角落里找到 Swift 相关的新闻。一个不争的事实是,Swift 并没有像当年预想的那样,成为一门通用和广受欢迎的编程语言。


并且,我认为,Swift 最好的发展时机已经过去了。也许再过几年,苹果也不得不承认,Swift 最合适的位置仍然是成为苹果生态内最好的编程语言。一统天下,替代 C++ 之类的豪言壮语,也就只能停留在梦想的层面了。


本文来自微信公众号:MacTalk(ID:MacTalkPro),作者:池建强

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP