源代碼是程序員創(chuàng)建的計算機程序的基本組件。它可以被人類閱讀和理解。例如,當(dāng)程序員在Windows記事本中鍵入一系列C語言語句并將序列保存為文本文件時,該文本文件被稱為包含源代碼。
源代碼和目標(biāo)代碼有時被稱為編譯的計算機程序的“之前”和“之后”版本。對于腳本(非編譯或解釋)程序語言(如JavaScript),術(shù)語源代碼和目標(biāo)代碼不適用,因為只有一種形式的代碼。
程序員可以使用文本編輯器,可視化編程工具或集成開發(fā)環(huán)境來創(chuàng)建源代碼。在大型程序開發(fā)環(huán)境中,通常有管理系統(tǒng)幫助程序員分離和跟蹤源代碼文件的不同狀態(tài)和級別。
許可源代碼
源代碼可以是專有的或開放的,許可協(xié)議通常反映了這種區(qū)別。
例如,當(dāng)用戶安裝像MicrosoftOffice這樣的軟件套件時,源代碼是專有的,并且Microsoft僅允許客戶訪問軟件的已編譯可執(zhí)行文件以及各種可執(zhí)行文件調(diào)用程序功能所需的相關(guān)庫文件。
相比之下,當(dāng)用戶安裝ApacheOpenOffice時,可以下載和修改其開源軟件代碼。
通常,Microsoft等專有軟件供應(yīng)商不會與客戶共享源代碼,原因有兩個:保護知識產(chǎn)權(quán)并防止客戶以可能破壞程序或使其更容易受到攻擊的方式更改源代碼。專有軟件許可證通常禁止任何發(fā)現(xiàn)或修改源代碼的嘗試。
另一方面,開源軟件的設(shè)計理念是應(yīng)該提供源代碼,因為許多致力于增強軟件的開發(fā)人員的協(xié)作努力可能有助于使其更加健壯和安全。用戶可以在公共許可證下自由獲取開源代碼,例如GNU通用公共許可證。
源代碼的目的
除了為軟件創(chuàng)建提供基礎(chǔ)之外,源代碼還有其他重要用途。例如,如果需要,能夠訪問源代碼的熟練用戶可以更容易地定制軟件安裝。
同時,其他開發(fā)人員可以使用源代碼為其他操作平臺創(chuàng)建類似的程序-這項任務(wù)在沒有編碼指令的情況下會更加棘手。
訪問源代碼還允許程序員通過共享代碼用于學(xué)習(xí)目的或通過將其部分回收用于其他應(yīng)用程序來為其社區(qū)做出貢獻。
即使是沒有編程背景的人也可以閱讀上面的C編程源代碼,并了解該程序的目標(biāo)是打印“HelloWorld”字樣。但是,為了執(zhí)行這些指令,必須首先將此源代碼翻譯成計算機處理器可以理解的機器語言;這是一個稱為編譯器的特殊解釋程序的工作-在本例中是一個C編譯器。程序員編譯源代碼后,包含結(jié)果輸出的文件稱為目標(biāo)代碼。
目標(biāo)代碼主要由數(shù)字1和零組成,不能被人類輕易閱讀或理解。然后可以“鏈接”目標(biāo)代碼以創(chuàng)建運行以執(zhí)行特定程序功能的可執(zhí)行文件。
源代碼管理系統(tǒng)可以幫助程序員更好地協(xié)作開發(fā)源代碼;例如,防止一個編碼人員無意中覆蓋另一個人的工作。
源代碼的歷史
確定源代碼的歷史起點是一種主觀的-難以捉摸的-練習(xí)。第一個軟件是在20世紀(jì)40年代用二進制代碼編寫的,因此根據(jù)一個人的觀點,這些程序可能是源代碼的初始樣本。我們今天認識到的最早的源代碼示例之一是由計算機科學(xué)的早期先驅(qū)TomKilburn編寫的。Kilburn在1948年創(chuàng)建了第一個在計算機內(nèi)存中以電子方式存儲的成功數(shù)字程序(該軟件解決了數(shù)學(xué)方程式)。
在20世紀(jì)50年代和60年代,源代碼通常由創(chuàng)建程序的公司免費提供。隨著不斷發(fā)展的計算機公司擴展軟件的使用,源代碼變得更加豐富和受到追捧。在互聯(lián)網(wǎng)時代之前計算雜志通常會在其頁面中打印源代碼,讀者需要為自己的用途重新鍵入字符的代碼字符。后來,軟盤降低了電子共享源代碼的價格,然后互聯(lián)網(wǎng)進一步刪除了這些障礙。