正如大多数人可能都知道的那样,Apple在2015年WWDC上宣布Swift将成为一种开源语言。
我的问题是:由于语言本身只是一组语法规则,“开源”究竟是什么意思?是他们的语言(编译器等)的实现是开源的吗?如果是这样,当有人能够查看语言规范并构建自己的Swift编译器时,为什么这很重要?
(相反,如果一种语言是专有的,是否意味着不允许第三方为其编写自己的编译器/解释器?)
答案 0 :(得分:7)
根据Swift Blog,它意味着Swift编译器和标准库的代码将是开源的。
- Swift源代码将在OSI批准的许可许可下发布。
- 社区的贡献将被接受 - 并鼓励。
- 在发布时,我们打算为OS X,iOS和Linux提供端口。
- 源代码将包含Swift编译器和标准库。
答案 1 :(得分:4)
鉴于其语法的正式描述(以及语法中每个规则的含义),任何人都可以为一种语言编写一个编译器。事实上,人们已经重新实现了他们自己的Swift编译器 - 环顾网络和App Store,你会发现一些不使用Apple编译器的互动Swift学习体验。
但是, a 编译器与 编译器不同。 Apple的Swift文档在描述语法中每个规则的每个含义时可能都不全面,即使是这样,这些规则的独立实现可能也不会表现相同。 (您可能会注意到一些Swift编译器错误?切换编译器可能会修复它们......并为您提供一组完全不同的错误!)
此外,Swift的许多关键承诺都不是语言规范的一部分,例如快速生成代码的优化优化是编译器实现的一部分。最重要的是,Swift的很多功能来自标准库 - 为此,Apple的界面和文档可能足以让人们创建类似的实现,但绝对不够告诉你如何制作100%兼容并具有相同性能特征的产品。
(我不是律师,但也值得考虑是否有可能或可能没有法律问题需要解决 - 在今天崭露头角的Swift程序员诞生之前,Sun,Microsoft和Oracle一直在争夺Java。 )
当然,所有这些都假设您发现构建一个现代的编译器和库很容易。我不会称之为微不足道的。
那么,开源Swift意味着什么?这意味着每个人都可以访问 官方编译器和库实现。因此社区可以做一些事情,比如将它们移植到其他平台,并保证100%的兼容性。或者破解它以进行改进,可能会回到正式版本。或者使用Swift作为开发不同内容的起点(例如,纯粹的函数式编程表达Swift)。