一种语言开源意味着什么?

What does it mean for a language to be open source?

你们大多数人可能都知道,Apple 在 WWDC 2015 上宣布 Swift 将成为一种开源语言。

我的问题是:既然语言本身本质上只是一套语法规则,那么"open source"在这里到底是什么意思?他们的语言实现(编译器等)是开源的吗?如果是这样,当任何人都可以查看语言规范并构建自己的 Swift 编译器时,为什么这很重要?

(相反,如果一种语言是专有的,是否意味着不允许第三方为其编写自己的compilers/interpreters?)

根据 Swift Blog 这意味着 Swift 编译器和标准库的代码将开源。

  • Swift source code will be released under an OSI-approved permissive license.
  • Contributions from the community will be accepted — and encouraged.
  • At launch we intend to contribute ports for OS X, iOS, and Linux.
  • Source code will include the Swift compiler and standard library.

给出其语法的正式描述(以及语法中每个规则的含义),任何人都可以为一种语言编写 a 编译器。事实上,人们已经重新实现了他们自己的 Swift 编译器 — 环顾网络和 App Store,您会发现一些不使用 Apple 编译器的交互式 Swift 学习体验。

但是,a 编译器与 编译器不同。 Apple 的 Swift 文档在描述语法中每个规则的每个含义方面可能并不全面,即使是,这些规则的独立实现也可能不会表现相同。 (您可能知道一些 Swift 编译器错误?切换编译器可能会修复它们......并给您带来一组完全不同的错误!)

此外,Swift 的许多关键承诺都不是语言规范的一部分——诸如对快速生成代码的出色优化之类的东西是编译器实现的一部分。最重要的是,Swift 的很多功能都来自标准库——为此,Apple 的界面和文档 可能 足以让人们创建类似的实现,但绝对不足以告诉您如何制作一个 100% 兼容且具有相同性能特征的软件。

(我不是律师,但也值得思考是否有法律问题需要解决——Sun、Microsoft 和 Oracle 在今天之前就一直在争论 Java崭露头角的 Swift 程序员诞生了。)

当然,所有这些都假设您发现构建现代编译器和库很容易。我不会说那是微不足道的。


那么,开源 Swift 是什么意思?这意味着每个人都可以访问 官方编译器和库实现。因此,社区可以在保证 100% 兼容性的情况下将它们移植到其他平台。或者对其进行破解以进行改进,这些改进可能会回到正式版本中。或者使用 Swift 作为开发不同东西的起点(例如 Swift 的纯函数式编程表亲)。