语言是开源的意义何在?

Law*_*e H 3 language-agnostic open-source swift

正如大多数人可能都知道的那样,Apple在2015年WWDC上宣布Swift将成为一种开源语言.

我的问题是:由于语言本身只是一组语法规则,"开源"到底意味着什么呢?是他们的语言(编译器等)的实现是开源的吗?如果是这样,当有人能够查看语言规范并构建自己的Swift编译器时,为什么这很重要?

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

Con*_*nor 7

根据Swift博客,它意味着Swift编译器和标准库的代码将是开源的.

  • Swift源代码将在OSI批准的许可许可下发布.
  • 社区的贡献将被接受 - 并受到鼓励.
  • 在发布时,我们打算为OS X,iOS和Linux贡献端口.
  • 源代码将包括Swift编译器和标准库.


ric*_*ter 5

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

\n\n

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

\n\n

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

\n\n

(我不是律师,但也值得思考是否存在需要解决的法律问题\xe2\x80\x94Sun、微软和甲骨文从今天崭露头角的 Swift 程序员出生之前就一直在争夺 Java .)

\n\n

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

\n\n
\n\n

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

\n