树莓派 Pico 上的嵌入式 Swift
Swift 正在 Apple 平台之外获得越来越多关注,从树莓派 Pico 这类微控制器,到 Windows 应用和服务端代码都有人在使用。评论者称赞它带有关联值的枚举、模式匹配和结构化并发,并常把它与 Dart、Kotlin、Rust 和 .NET 相比,但也指出在空值处理、语法复杂度以及拷贝时写入语义方面存在取舍。许多人认为 Swift 技术上很强,却受限于工具链缺口以及在非 Apple 平台上相对薄弱的生态,尤其是在 UI 和大规模采用方面。
Swift 语言特性与枚举 / 模式匹配
- 许多评论者称赞 Swift 带有关联值的枚举(和类型)以及穷尽式分支,认为它们简单却强大。
- 这些特性被拿来与 ML、OCaml、F# 等语言中的经典“带标签联合”/判别联合相比;一些人认为 Swift 本质上是在重新发现早已存在的思想。
- 也有人觉得其他主流语言(尤其是历史上较早的 Python、Java、C#)在采用这些构造时明显滞后,或者只是加入了更弱的变体。
空值性、可选值与类型缩窄
- 有一大段子讨论 Swift 的
if let/guard let与 Dart/TypeScript 风格的基于流的空值分析。 - 支持 Swift 的一方认为,单独的绑定语法可以避免“先检查再强制解包”之类的误用,使未来重构更安全,并鼓励显式、可读的“正常路径”代码。
- 支持 Dart/TS 的一方认为,控制流类型提升更简单、冗长程度更低;使用开发者本就熟悉的
if x != null语法也更自然。 - 也有人认为无处不在的可选值像函数的“新颜色”,可能被过度使用,并把不确定性传播到代码中。
与其他语言的比较
- Kotlin 的枚举被认为比 Swift 的更受限;Kotlin 的密封类更接近,但更冗长。
- Dart 3 增加了模式、密封类、穷尽性;有人说它正在向类似 Swift 的特性靠拢,但仪式感更多。
- ML/F#/OCaml 一再被引用为模式匹配和联合类型的先行者。
- Swift 被描述为在人体工学上介于 Rust 和 C++ 之间,拥有强类型、结构化并发和 ARC,而 Rust 则有借用检查器。
Apple 平台之外的 Swift
- 在 Linux 和 Raspberry Pi 上的体验总体上对非 GUI 工具和服务器是正面的;一些人表示配合 Vapor 等框架使用很顺畅。
- Windows 和 Android 支持确实存在,但被形容为粗糙或小众;调试和生态缺口仍然存在。
- 嵌入式 Swift(例如树莓派 Pico、Zephyr)受益于与 C/C++ 的互操作以及 CMake 集成;虽然仍处于早期阶段,但前景可观。
生态、UI 与可行性
- 一个强烈担忧是 Swift 与 Apple 的 UI 技术栈绑定过紧;在其他平台上,缺乏一流 UI 框架和较小的库生态被视为重大障碍。
- 有人认为一种语言的价值取决于其生态;尽管 Swift 是开源的,但长期由非 Apple 持续维护的前景并不确定。
工具链与开发者体验
- 对 Xcode 和 Swift 工具链的看法分歧很大:有人报告稳定且高效,另一些人则形容其经常崩溃、体验令人沮丧。
- VS Code 和 LSP 支持正在改进,但仍不及 Xcode;.NET 和 Java 生态被视为跨平台工作的更成熟选择。