经常说一门编程语言是开源的是什么意思?

2013-09-15 13:06:35 +08:00
 bjlbeyond
最近正在学PHP,在网上看了不知道有多少遍PHP开源多么多么好。。。开源到底是什么意思?对于我们学习编程语言有什么好处?php源码是什么?

C语言不是开源的,那么PHP开源和C比起来有什么优点?
17496 次点击
所在节点    程序员
57 条回复
lidashuang
2013-09-15 14:37:34 +08:00
@bjlbeyond c#不是开源的,不过有开源的实现
ericls
2013-09-15 14:37:40 +08:00
@likexian 一阵见血!
ericls
2013-09-15 14:41:01 +08:00
@meta 就是啊!GCC是开源的编译器 那C是开源的么? C应该是汇编写的吧? 汇编是开源的么
est
2013-09-15 14:42:29 +08:00
这贴太欢乐了。
lll9p
2013-09-15 14:48:43 +08:00
感觉LZ没有语言的实现这个概念。。。
LokiSharp
2013-09-15 14:56:26 +08:00
@ericls 说C不是开源语言是因为C的规范是由「ANSI(美国标准委员会)」来指定的。这个规范是闭源的,普通人不能修改。

而 GCC 这类编译器属于对 C 的实现,需要去实现 ANSI 制定的标准,但是具体实现方式可以自行决定。

比如说,你对 GCC 的一个功能实现方式不满意,你可以去修改 GCC 来使它符合你的意愿。
但是如果你对 C 标准不满意(比如你不喜欢花括号,或者它不面向对象),你没有权力去修改标准,但是你可以在其基础上创造新的语言。
lhx2008
2013-09-15 15:00:38 +08:00
开源就是开放源代码,
源代码开放是相对的,比如说一个电池盒,闭源就是不给你换里面的电池,只能厂家来换,
相对的开源就是你可以去换电池,
但是开源也只是相对的,电池里面的东西你也没有能力去更换
!但是,你可以去换一节更好的电池。
我的理解,轻拍
wtbhk
2013-09-15 15:06:47 +08:00
语言开源和用语言写出来的东西开源这根本不是一回事吧= =
好吧我也不知道语言开源是什么意思,语言不就是一套标准吗,还分开源的标准和不开源的标准?
onemoo
2013-09-15 15:09:43 +08:00
@wtbhk
有的标准由开放的社区制定和维护,有的标准由封闭团体制定和维护。
wtbhk
2013-09-15 15:12:09 +08:00
@onemoo 所以语言的开源闭源其实没有软件的开闭源这么严格吧。遵循标准放出源代码就是开源否则就不是,而所谓的开放团体和封闭团体其实不那么好区分。
9hills
2013-09-15 15:47:30 +08:00
我的理解是这样的,一门语言是否可以称为是开源的,取决于这门语言的官方实现是不是开源的,比如GCC就不是C的官方实现(C貌似没有官方实现),所以GCC是GPL的,但是不能说C这门语言是开源。而Python的官方实现 CPython是开源的,so我们可以认为Python是门开源语言

而语言开源与否和用这个语言写出的程序开源与否没有任何关系(有时候标准库什么的会有一些问题,不过不细谈了)
cxh116
2013-09-15 16:13:30 +08:00
@bjlbeyond
首先,开源软件(英语:Open source software,英文缩写:OSS,中文也称:开放源代码软件)是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。
http://zh.wikipedia.org/wiki/%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6

上文也到了另外一种东西软件协议(License).有了License这个东西,会导致开源也不一定免费.
比如我可以把源公开,自己写个License,必须给我100元才可以使用我这个项目的代码.

关于用开源的语言写的东西是可以开源,得看开源语言的License约束你的产品是否允许开源.
比如你发明一个语言,你可以在License约束,所以以此语言写的代码必须以二进制形式发布,不允许公开源码

另外31楼说的也很对,语言一般来说是一种标准,可以有多种实现.比如python有cpython,jython等,一般License针对实现的
alexrezit
2013-09-15 16:16:34 +08:00
只听说过开源软件, 开源硬件, 从来没听说过开源语言.
tioover
2013-09-15 17:32:12 +08:00
@alexrezit 有官方开源[编译|解释]器实现的编程语言?
meta
2013-09-15 17:49:37 +08:00
什么是c的官方,谁拥有c的商标权,我也写个编译器来编译c,会不会有人找我打官司,说我不能使用c这个名称。还有,如果我的c语言的实现的标准库跟ansi的不一样,ansi会不会告我侵权,未经许可修改了标准库。
air00dd
2013-09-15 17:53:30 +08:00
@fwee 每个人都有局限性,都可能会说错或有偏差,
但不一定都怀着恶意的傲慢。
(虽然专制导致的极端的面子文化导致这种现象更普遍)
lightening
2013-09-15 17:53:48 +08:00
@bjlbeyond 你自己的项目开不开源和语言没有关系。你用 php 做了一个网站,只要你愿意把你的网站的源代码公开给别人,那就是开源的。

其实,语言只是一种标准,就像汉语和英语一样。你人类掌握了一种语言,电脑也掌握那种语言,才能沟通。电脑掌握一种语言的方法就是编译器或解释器。这个编译器或解释器也是一个软件,所以也有开源和闭源之分。其实,现在广泛使用的 C 语言编译器 gcc 和 clang 都是开源的。php 解释器是用 C 语言写的,并且作者愿意公开它的源代码,所以说 php 是开源的。有的语言比如 java,有闭源编译器,也有社区维护的开源编译器,你可以根据需要选择使用。

而你,可以用一个开源的语言做一个闭源的项目,也可以用一个闭源的语言做一个开源的项目。你的项目是否开源完全取决于你是否愿意公开你自己项目的源代码。

开源的编译器、解释器有什么好处?第一,是开源的解释器、编译器可以利用社区的力量去维护。如果有人发现了一个 bug,就可以去帮忙修补掉。这一点,所有的开源软件都有这样优点。第二,是比较安全。编译器是非常核心的东西,如果你不知道你使用的编译器、解释器在背后偷偷干什么的话,是不是有点危险?开源的编译器、解释器就相对安全一些,毕竟有那么多双眼镜盯着,如果有什么后门,会比较容易被发现。所以现在被广泛使用的语言的编译器、解释器,几乎全都是开源的。
wodemyworld
2013-09-15 20:39:44 +08:00
这尼玛也要讨论么。。。
语言跟开不开源无关,v2ex已经沦落到如此地步了。。。
Narcissu5
2013-09-15 21:06:31 +08:00
@LokiSharp 规范是闭源的?规范都没有源代码哪来的开源闭源?

另外,C#的语法标准,元数据格式都已经是EMAC标准了,不用再担心微软。之前一直被担心的是基本库的API,不过从Java的判例来看,至少海洋法系的美国不再是问题了。
jiyinyiyong
2013-09-15 21:51:29 +08:00
@bjlbeyond 呃.. 楼主问题没写细, 我也只回答了我知道的部分.
代码是否开源取决于与源码一起发布的协议, MIT, BSD, GPL 比较常见,
...表示作为业余基本上写东西都用 MIT, BSD, 几乎不保留个人对代码的权利,
像 GPL 协议会规定使用改软件的软件也必需遵守 GPL 否则不成立.

一般情况下, 写完代码发布出去, 附带一个开源协议, 就算开源了,
如果那门语言本身表明有限制那另当别论, 具体不是很清楚.

只是开源社区对开源代码要求, 或者说期待会高一点, 不是写了代码扔过去就好,
别人看到你开源, 会期待你修 Bug, 期待你维护, 或者讨论增减功能什么的.
这主要看使用者了. 当然这不算在代码开源必须满足的条件里.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/82523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX