原始码
原始码(英语:Source code),是指一系列人类可读的电脑语言指令[1]。
“原始码”的各地常用名称 | |
---|---|
中国大陆 | 源代码、源码、源程序 |
台湾 | 原始码、原始程式码、来源码 |
港澳 | 原始码 |
新马 | 原始码 |
在现代程序语言中,原始码可以是以书籍或者磁带的形式出现;但最常用的格式是文本文件,这种典型格式的目的是为了编译出电脑程序。电脑原始码的最终目的是将人类可读的文本翻译成为电脑可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
作用
原始码主要功用有如下2种作用:
- 生成目标代码,即电脑可以识别的代码。
- 对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员,都忽视软件说明的编写;因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
需要指出的是,对于编译语言来说,例如C/C++/Java,原始码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改,必须重新编译。但是目前有许多流行的脚本语言,例如Perl/Python都不需要重新编译,修改完代码可以直接执行看到修改的结果。
代码组合
原始码作为软件的特殊部分,可能被包含在一个或多个文件中。一个程序不必用同一种格式的原始码书写。例如,一个程序如果有C语言库的支持,那么就可以用C语言;而另一部分为了达到比较高的运行效率,则可以用汇编语言编写。就目前的情况而言,很少有需要直接用汇编语言来编写的软件了,因为很多时候编译器生成的优化程序的运行效率已经很好了,更多的时候是用C/C++这样的编译语言来写核心需要速度的部分,用Perl、Python和Lua等这样的动态语言来做核心的扩展,例如界面,管理配置等等。这样既不会损失效率,也增加了程序的灵活性。
较为复杂的软件,一般需要数十种甚至上百种的原始码的参与。为了降低种复杂度,必须引入一种可以描述各个原始码之间联络,并且如何正确编译的系统。在这样的背景下,版本控制系统(VCS)诞生了,并成为研发者对代码修订的必备工具之一。
还有另外一种组合:将为一种平台编写的软件移植到另外一种平台上,例如将Windows下的软件移植到Linux或者MacOS下,专业术语叫做软件移植。一般可以运行在多个平台下的软件叫做跨平台软件。
著作权
如果按照原始码类型区分软件,通常被分为两类:自由软件和专有软件。通常,自由软件不仅可以免费得到,而且公开原始码;相对应地,非自由软件则不公开原始码。通过非正常手段获得非自由软件原始码的各种行为都将被视为非法。
质量
对于电脑而言,并不存在真正意义上的“好”的原始码;好的源程序,首先要是正确的代码。然后是源程序的可维护性,好的程序风格将可以增强代码的可维护性。原始码是否具有可读性,成为代码质量/质量的标准之一。也有人将程序的效率放在可维护性之前。根据程序所要实现的功能和应用领域很多人对原始码质量/质量有着不同的看法。但是普遍达成一致的是质量/质量高的源程序就是正确的程序。
效率
虽然我们可以通过不同的语言来实现电脑的同一功能,但在执行效率上则存在不同。普遍规律是:越高级的语言,其执行效率越低。这也是汇编语言生成的文件比用VB语言生成文件普遍要小的原因。然而,使用低级语言虽可提高运行效率,却会大大降低程序的开发效率,可能导致开发工作变得非常困难,因此多数程序员并不在意高级语言带来的运行效率损失,最多只在关键处使用低级语言。
注释
- ^ Programming in C: A Tutorial (PDF). (原始内容 (PDF)存档于2015-02-23).
参考文献
- (VEW04) "Using a Decompiler for Real-World Source Recovery", M. Van Emmerik and T. Waddington, the Working Conference on Reverse Engineering, Delft, Netherlands, 9–12 November 2004. Extended version of the paper.
外部连接
- Source Code Definition (页面存档备份,存于互联网档案馆) by The Linux Information Project (LINFO)
- Obligatory accreditation system for IT security products. MetaFilter.com. 22 September 2008 [2017-11-24]. (原始内容存档于2017-12-03).
will introduce rules requiring foreign firms to disclose secret information about digital household appliances and other products from May next year, the Yomiuri Shimbun said, citing unnamed sources. If a company refuses to disclose information, China would ban it from exporting the product to the Chinese market or producing or selling it in China, the paper said.
- Same program written in multiple languages (页面存档备份,存于互联网档案馆)
- Javascript Obfuscator (页面存档备份,存于互联网档案馆)