我理解的GNU哲学
发表于 : 2008-07-31 10:36
我是程序开发者。从多年来对业界的观察,我发现软件的本质就是合作。基本上,除了BIOS,任何软件都不能够独立存在,或者说独立存在的时候是没有任何价值的。因此,软件开发首要的考虑因素就是和其它软件合作。在业界,这一般叫做重用。而它的价值就在于——避免重新发明轮子。
当然,在开源软件里面,这一点是体现得最为明显的:因为源代码都公开了,相当于所有的实现细节都已经公开。那么各种形式软件重用都成为了可能。如果是自由软件,甚至还能通过调整源代码的方式来让其它软件适应你。不过,应该看到的是,即使是闭源软件如MS Office,也不能不通过COM这样的方式实现重用。
那么,从重用的程度看,我们排出如下顺序:
闭源软件: 二进制重用(无法修改被重用代码的行为,无法直接得到未公开功能,需要专门的机制)
开源软件:源代码重用(修改被重用代码可能违反版权,可以得到任何已实现功能,不需要专门机制)
自由软件:源代码重用(可以修改被重用代码的行为,可以得到任何已实现功能,不需要专门机制)
由上可以看出,从闭源到自由,重用的可能性越来越高。而随着软件平台趋于开放和复杂,闭源软件的重用方式会越来越显示出它的局限性。这就是为什么微软要从COM转向基于中间代码的.NET的根本原因:很明显,从COM到.NET,代码重用的方便程度大大提高了。但是当然,这种重用无论如何也比不上开源和自由软件。
当然,在开源软件里面,这一点是体现得最为明显的:因为源代码都公开了,相当于所有的实现细节都已经公开。那么各种形式软件重用都成为了可能。如果是自由软件,甚至还能通过调整源代码的方式来让其它软件适应你。不过,应该看到的是,即使是闭源软件如MS Office,也不能不通过COM这样的方式实现重用。
那么,从重用的程度看,我们排出如下顺序:
闭源软件: 二进制重用(无法修改被重用代码的行为,无法直接得到未公开功能,需要专门的机制)
开源软件:源代码重用(修改被重用代码可能违反版权,可以得到任何已实现功能,不需要专门机制)
自由软件:源代码重用(可以修改被重用代码的行为,可以得到任何已实现功能,不需要专门机制)
由上可以看出,从闭源到自由,重用的可能性越来越高。而随着软件平台趋于开放和复杂,闭源软件的重用方式会越来越显示出它的局限性。这就是为什么微软要从COM转向基于中间代码的.NET的根本原因:很明显,从COM到.NET,代码重用的方便程度大大提高了。但是当然,这种重用无论如何也比不上开源和自由软件。