原始碼

維基百科,自由的百科全書
前往: 導覽搜尋
各地中文名稱
大陸 源代码、源码、源程序
台灣 原始碼
原始碼
原始码

原始碼英語Source code),也稱源程式,是指一系列人類可讀的電腦語言指令

在現代程式語言中,原始碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文字檔案,這種典型格式的目的是為了編譯出電腦程式。電腦原始碼的最終目的是將人類可讀的文字翻譯成為電腦可以執行的二進制指令,這種過程叫做編譯,透過編譯器完成。

作用[編輯]

原始碼主要功用有如下2種作用:

  1. 生成目的碼,即電腦可以識別的代碼。
  2. 對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程式設計師都忽視軟體說明的編寫,因為這部分雖然不會在生成的程式中直接顯示,也不參與編譯。但是說明對軟體的學習分享維護軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程式的良好習慣,一些公司也硬性規定必須書寫。

需要指出的是,對於編譯語言來說,例如C/C++/Java,原始碼的修改不能改變已經生成的目的碼。如果需要目的碼做出相應的修改,必須重新編譯。但是目前有許多流行的手稿語言,例如Perl/Python都不需要重新編譯,修改完代碼可以直接執行看到修改的結果。

代碼組合[編輯]

原始碼作為軟體的特殊部分,可能被包含在一個或多個檔案中。一個程式不必用同一種格式的原始碼書寫。例如,一個程式如果有C語言庫的支援,那麼就可以用C語言;而另一部分為了達到比較高的執行效率,則可以用組合語言編寫。就目前的情況而言,很少有需要直接用組合語言來編寫的軟體了,因為很多時候編譯器生成的最佳化程式的執行效率已經很好了,更多的時候是用C/C++/Java這樣的編譯語言來寫核心需要速度的部分,用Perl/Python/Lua等這樣的動態語言來做核心的擴充功能,例如介面,管理配置等等。這樣既不會損失效率,也增加了程式的靈活性。

較為複雜的軟體,一般需要數十種甚至上百種的原始碼的參與。為了降低種複雜度,必須引入一種可以描述各個原始碼之間聯繫,並且如何正確編譯的系統。在這樣的背景下,版本控制系統(VCS)誕生了,並成為研發者對代碼修訂的必備工具之一。

還有另外一種組合:將為一種平台編寫的軟體移植到另外一種平台上,例如將Windows下的軟體移植到Linux或者MacOS下,專業術語叫做軟體移植。一般可以執行在多個平台下的軟體叫做跨平台軟體。

版權[編輯]

如果按照原始碼型別區分軟體,通常被分為兩類:自由軟體專有軟體。通常,自由軟體不僅可以免費得到,而且公開原始碼;相對應地,非自由軟體則不公開原始碼。透過非正常手段獲得非自由軟體原始碼的各種行為都將被視為非法。

品質/品質[編輯]

對於電腦而言,並不存在真正意義上的「好」的原始碼;好的源程式,首先要是正確的代碼。然後是源程式的可維護性,好的程式風格將可以增強代碼的可維護性。原始碼是否具有可讀性,成為代碼品質/品質的標準之一。也有人將程式的效率放在可維護性之前。根據程式所要實現的功能和應用領域很多人對原始碼品質/品質有著不同的看法。但是普遍達成一致的是品質/品質高的源程式就是正確的程式。

效率[編輯]

雖然我們可以透過不同的語言來實現電腦的同一功能,但在執行效率上則存在不同。普遍規律是:越高階的語言,其執行效率越低。這也是為什麼組合語言生成的檔案比用VB語言生成檔案普遍要小的原因。然而,使用低階語言雖可提高執行效率,卻會大大降低程式的開發效率,可能導致開發工作變得非常困難,因此一些程式設計師並不在意高階語言帶來的執行效率損失,

目前,許多程式主要使用高階語言來開發,對於要求執行效率的部分使用低階語言編寫,以達到開發效率與執行效率的折中。