Open source 开源编程语言的定义是什么?

Open source 开源编程语言的定义是什么?,open-source,programming-languages,Open Source,Programming Languages,像Ruby和Python这样的语言通常被称为开源语言,但是什么让它们如此呢 它是开源编译器,还是解释器或执行虚拟机 < p>我不认为语言通常被认为是开源的,而不是语言实现的软件(无论是编译器还是虚拟机或其他什么)。因此,给定的语言可以同时具有开源和非开源实现。例如,有很多封闭源C++编译器,还有开源的编译器。 也许可以区分由单个实体(例如C#)控制的语言和通过社区贡献(例如Python甚至Java)发展起来的语言。我通常听说“开源语言”适用于根据社区意愿修改的语言。例如,Python有PEP进

像Ruby和Python这样的语言通常被称为开源语言,但是什么让它们如此呢

它是开源编译器,还是解释器或执行虚拟机

<如果我们谈论编译器,那么C++是开源的吗?< /p> < p>我不认为语言通常被认为是开源的,而不是语言实现的软件(无论是编译器还是虚拟机或其他什么)。因此,给定的语言可以同时具有开源和非开源实现。例如,有很多封闭源C++编译器,还有开源的编译器。 也许可以区分由单个实体(例如C#)控制的语言和通过社区贡献(例如Python甚至Java)发展起来的语言。

我通常听说“开源语言”适用于根据社区意愿修改的语言。例如,Python有PEP进程,它允许任何感兴趣的人修改语言本身的语法/语义

C和C++也是社区驱动的,尽管由于它们的年龄和无处不在,任何改变都需要难以置信的标准化努力。C++0x已经设计了多年,而C只有3个主要版本(K&R、C89、C99)


由单个实体控制的语言(如Java或C#)通常被认为是“封闭的”,而不考虑可用的实现。Java和.NET虚拟机都有GPL实现,但这种语言的发展不是由社区驱动的。对于这种可能导致的悲惨的例子,请参见向java添加闭包的努力。

< P>我们可以主要考虑GNU许可证的开放源码语言吗?或者这仅仅是实体[comunity,company,等等]驱动的标准吗?

我必须承认,我从来没有听说过一种语言被称为开放源码,但我想一种看待它的方式是,你给出的两个例子,Ruby和Python,是(AFAIK,我在这两方面都不是专家)编译C语言和C++语言都是非编译语言。 因此,对于客户端Ruby和Python应用程序,您必须让用户可以使用代码,因为它在运行时被解释,而对于编译语言,这是可选的,因为只需要编译的可执行文件

当然,另一方面,许多Ruby和Python应用程序将是服务器端的,例如作为网站实现的一部分,因此代码在服务器上解释,因此最终用户永远看不到。

人们通常将术语“语言”与包含IDE的整个编程环境同义,实际语言、运行时环境/体系结构和代码库/框架。因此,当你说“开放”时,我立刻想到Sun Microsystems将Java框架和VM的代码作为开放源代码发布


然后是C#/.Net,其中语言、核心框架类和CLR规范作为标准提交给ECMA。第三方(如Mono)可以实现这些开放的标准化组件,而无需许可该技术,因此可以将其描述为在某种程度上是开放的,即使Microsoft的实现是封闭源代码(或者只是部分开放)和商业产品。在Mono的案例中,他们实现了一些外围框架类,这些类不是标准化的/开放的,这可能是一个法律灰色地带。

正如其他人所观察到的,在核心部分,确实没有“开源语言”这样的东西。严格来说,只有代码可以是开源的。因此,可以有开源编译器、运行时、库等


然而,对于许多语言,实现(编译器/运行时)几乎与语言本身不可分割。Ruby、Python等就是这种情况,语言由其主要/原始实现有效地定义。虽然这些语言还有其他实现,但主要实现和语言实际上是可交换的。在主要实现也是开源的情况下,将其称为开源语言是有意义的,尤其是因为这类语言往往有一个几乎完全围绕开放源码软件而构建的社区。

可以说Python是由一个名为Guido:)的实体控制的,至少在他被一辆巴士撞到之前是如此。“悲伤”。。。是的,考虑新的程序员希望实施DRM造成的悲痛,…(幽默)你能解释为什么python PEP是开源的,而Java JCP不是吗?@Pete:不管社区对JSR的反应如何,如果Sun不想要它,它就不会成为Java的一部分。相比之下,至少有四个可行的Python版本,其中任何一个都可以实现CPython可能不接受的PEP。在这一页的底部:他们说Python是OSI认证的开放源码…根据我对Michael E的回答的评论,Python是一个程序的名称,也是一种语言。一旦你从这个URL下载了开源程序,你就可以用它来实现这种语言,尤其是当实现程序以这种语言命名时。ruby是翻译还是语言?我很好奇;当你说“人们经常使用这个词…”时,你指的是谁?我认为这个问题非常相关而且很好。如果没有开源编程语言的官方定义,那么这已经是对这个问题的回答:“不,没有这样的定义……”。为什么这个问题被认为是基于观点的?