源代码

-{zh-cn:; zh-sg:; zh-tw:;}-

源代码（），是指一系列人类可读的计算机语言指令。

在现代程序语言中，源代码可以是以书籍或者磁带的形式出现；但最常用的格式是文本文件，这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令，这种过程叫做编译，通过编译器完成。

作用 
源代码主要功用有如下2种作用：

生成目标代码，即计算机可以识别的代码。
对软件进行说明，即对软件的编写进行说明。为数不少的初学者，甚至少数有经验的程序员，都忽视软件说明的编写；因为这部分虽然不会在生成的程序中直接显示，也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。因此，书写软件说明在业界被认为是能创造优秀程序的良好习惯，一些公司也硬性规定必须书写。

需要指出的是，对于编译语言来说，例如C/C++/Java，源代码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改，必须重新编译。但是目前有许多流行的脚本语言，例如Perl/Python都不需要重新编译，修改完代码可以直接执行看到修改的结果。

代码组合 
源代码作为软件的特殊部分，可能被包含在一个或多个文件中。一个程序不必用同一种格式的源代码书写。例如，一个程序如果有C语言库的支持，那么就可以用C语言；而另一部分为了达到比较高的运行效率，则可以用汇编语言编写。就目前的情况而言，很少有需要直接用汇编语言来编写的软件了，因为很多时候编译器生成的优化程序的运行效率已经很好了，更多的时候是用C/C++这样的编译语言来写核心需要速度的部分，用Perl、Python和Lua等这样的动态语言来做核心的扩展，例如界面，管理配置等等。这样既不会损失效率，也增加了程序的灵活性。

较为复杂的软件，一般需要数十种甚至上百种的源代码的参与。为了降低种复杂度，必须引入一种可以描述各个源代码之间联系，并且如何正确编译的系统。在这样的背景下，版本控制系统（VCS）诞生了，并成为研发者对代码修订的必备工具之一。

还有另外一种组合：将为一种平台编写的软件移植到另外一种平台上，例如将Windows下的软件移植到Linux或者MacOS下，专业术语叫做软件移植。一般可以运行在多个平台下的软件叫做跨平台软件。

版权 
如果按照源代码类型区分软件，通常被分为两类：自由软件和专有软件。通常，自由软件不仅可以免费得到，而且公开源代码；相对应地，非自由软件则不公开源代码。通过非正常手段获得非自由软件源代码的各种行为都将被视为非法。

质量 
对于计算机而言，并不存在真正意义上的“好”的源代码；好的源程序，首先要是正确的代码。然后是源程序的可维护性，好的程序风格将可以增强代码的可维护性。源代码是否具有可读性，成为代码品質／质量的标准之一。也有人将程序的效率放在可维护性之前。根据程序所要实现的功能和应用领域很多人对源代码品質／质量有着不同的看法。但是普遍达成一致的是品質／质量高的源程序就是正确的程序。

效率 
虽然我们可以通过不同的语言来实现计算机的同一功能，但在执行效率上则存在不同。普遍规律是：越高级的语言，其执行效率越低。这也是汇编语言生成的文件比用VB语言生成文件普遍要小的原因。然而，使用低级语言虽可提高运行效率，却会大大降低程序的开发效率，可能导致开发工作变得非常困难，因此多數程序员并不在意高级语言带来的运行效率损失，最多只在關鍵處使用低階語言。

註釋

參考文獻

 (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)
 
 Same program written in multiple languages 
 Javascript Obfuscator 

源代码