源代码主要功用有如下2种作用:
对
软件
进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的
程序员
都忽视
软件
说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对
软件
的学习、分享、维护和
软件复用
都有巨大的好处。因此,书写
软件
说明在业界被认为是能创造优秀
程序
的良好习惯,一些公司也硬性规定必须书写。
代码组合
源代码
作为
软件
的特殊部分,可能被包含在一个或多个文件中。一个
程序
不必用同一种格式的
源代码
书写。例如,一个
程序
如果有
C语言
库的支持,那么就可以用
C语言
;而另一部分为了达到比较高的运行效率,则可以用
汇编语言
编写。
较为复杂的
软件
,一般需要数十种甚至上百种的
源代码
的参与。为了降低种复杂度,必须引入一种可以描述各个
源代码
之间联系,并且如 何正确编译的系统。在这样的背景下,修订控制系统(RCS)诞生了,并成为研发者对代码修订的必备工具之一。
版权
如果按照
源代码
类型区分软 件,通常被分为两类:自由
软件
和非自由
软件
。自由
软件
一般是不仅可以免费得到,而且公开源代 码;相对应地,非自由软件则是不公开
源代码
。所有一切通过非正常手段获得非自由
软件
源代码
的行为都将被视为非法。
质量
效率
开放源代码
您购买或下载的大多数
软件
只提供已编译的可运行版本。“已编译”意味着开发人员创建的实际
程序
代码(称为
源代码
)已经由一个称为
编译器
的特殊
程序
进行过处理,该程序将源代码转换为
计算机
可以理解的格式(有关编译器的详细信息,请参见C语言入门教程)。修改大多数
应用程序
的已编译版本都是极其困难的,人们几乎不可能知道开发人员究竟是如何创建程序的各个部分的。大多数商业
软件
制造商都将这一点视为有利条件,以防止其他公司复制自己的代码并将其用在竞争产品中,同时可以控制其特定产品具有的质量和功能。
开放源代码软件
恰恰相反。
源代码
随已编译的版本一起提供,而且事实上鼓励人们修改或定制。支持开放源代码概念的
软件开发
人员相信,通过允许感兴趣的人修改源代码,
应用程序
将会更加完善,并且在很长时间内不会出现错误。
-
程序必须免费发布(但可以是出售的软件包中的一部分,例如在下面的例子中,Red Hat对Linux就是这样做的)。
-
必须提供源代码。
-
必须允许任何人修改源代码。
-
可以重新发布修改后的版本。
-
许可证不得要求排除其他软件或干预其他软件的运行。
下面让我们看一个
开放源代码软件
的真实例子。1991年,芬兰赫尔辛基大学的学生
李纳斯·托沃兹
(Linus Torvalds)基于Unix的衍生版本Minix开发了一个新的
操作系统
,并称之为Linux。托沃兹使用
GNU通用公共许可证
(它为
开放源代码软件
提供了很好的法律定义)发布了0.02版本的Linux。全球各地的人下载并开始使用Linux。其中,许多用户是独立的
程序员
,他们对托沃兹提供的
源代码
进行了修改。在接下来的3年中,托沃兹从其他
程序员
那里收到了这些修改后的版本,并将许多改动结合到基础版本中,于1994年发布了Linux的1.0版。
那些想要使用
开放源代码软件
的最终用户的一个共同顾虑,是这些软件缺乏质量担保和技术支持。因为该
软件
的许可证鼓励修改和定制,所以几乎无法提供支持。这正是1994年成立的Red Hat Software创建“Official Red Hat Linux”并销售这一通常是“免费”的
软件
的原因。Red Hat向
软件包
添加的主要价值是质量担保和技术支持。对于大多数企业而言,技术支持承诺成为促使其购买Linux而不是免费下载它的一个关键因素。除了Red Hat以外,还有其他几家公司将Linux打包(通常带有其他
软件
)以进行转售。
除了Linux以外,Mozilla(
Netscape浏览器
核心)、Apache(
Web服务
器)、PERL(Web
脚本语言
)和 PNG(图形
文件格式
)都是非常受欢迎的基于
开放源代码
的软件。