原始碼
原始碼(英語: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 (頁面存檔備份,存於互聯網檔案館)