源代碼
源代碼(英語: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 (頁面存檔備份,存於網際網路檔案館)