源代码是程序员创造的计算机程序的基本组成部分。它可以被人类阅读和理解。例如,当程序员在Windows记事本中键入一系列C语言语句并将该序列保存为文本文件时,该文本文件被称为包含源代码。
源代码和目标代码有时被称为已编译计算机程序的“之前”和“之后”版本。对于脚本(非编译或解释)编程语言(如JavaScript),术语源代码和目标代码并不适用,因为代码只有一种形式。
程序员可以使用文本编辑器、可视化编程工具或集成开发环境来创建源代码。在大型程序开发环境中,通常有管理系统来帮助程序员分离和跟踪源代码文件的不同状态和级别。
许可证源代码
源代码可以是专有的,也可以是开放的,许可协议通常反映了这种差异。
例如,用户在安装微软Office这样的软件套件时,源代码是专有的,微软只允许客户访问该软件编译后的可执行文件以及各种可执行文件所需的相关库文件,以调用程序的功能。
相比之下,当用户安装Apache OpenOffice时,他们可以下载和修改他们的开源软件代码。
一般来说,微软等专有软件供应商不会与客户共享源代码,原因有两个:保护知识产权,防止客户以可能损坏程序或使其更容易受到攻击的方式更改源代码。专有软件许可证通常禁止任何发现或修改源代码的企图。
另一方面,开源软件的设计思想是应该提供源代码,因为致力于增强软件的许多开发人员的协作努力可能有助于使软件更加健壮和安全。用户可以在公共许可下自由获取开源代码,比如GNU通用公共许可。
源代码的目的
除了为软件创作提供基础,源代码还有其他重要的用途。例如,如果需要,能够访问源代码的熟练用户可以更容易地定制软件安装。
同时,其他开发人员可以使用源代码为其他操作平台创建类似的程序——如果没有编码指令,这项任务会更加棘手。
访问源代码还允许程序员通过出于学习目的共享代码或通过为其他应用程序回收一些代码来为他们的社区做出贡献。
组织源代码
即使是没有编程背景的人,也能看懂上面的C编程源代码,明白程序的目标是打印“Hello World”这个词。然而,为了执行这些指令,你必须首先将这些源代码翻译成计算机处理器能够理解的机器语言;这是一个叫做编译器的特殊解释器的工作——在这个例子中,是一个C编译器。程序员编译源代码后,包含结果输出的文件称为目标代码。
代码主要由数字1和0组成,人类不容易阅读或理解。然后,您可以“链接”目标代码来创建执行特定程序功能的可执行文件。
源代码管理系统可以帮助程序员更好地开发源代码;例如,防止一个编码者无意中覆盖了另一个编码者的工作。
源代码的历史
确定源代码的历史起点是一项主观的、难以捉摸的工作。第一个软件是在20世纪40年代用二进制代码编写的,因此根据一个人的观点,这些程序可能是源代码的初始样本。我们今天认识到的最早的源代码示例之一是由计算机科学的早期先驱Tom Kilburn编写的。基尔本在1948年创建了第一个成功的电子存储在计算机内存中的数字程序(该软件求解数学方程)。
在20世纪50年代和60年代,源代码通常由创建程序的公司免费提供。随着计算机公司不断扩展的软件的发展,源代码变得更加丰富,更受追捧。在互联网时代之前,计算杂志通常将源代码打印在页面上,读者需要重新键入字符的代码字符供自己使用。后来软盘降低了电子共享源代码的价格,再后来互联网进一步扫除了这些障碍。