在計算機科學中,源代碼的任何陳述(通常只是源代碼或代碼)或某些人類可讀的計算機編程語言的書面陳述的集合。源代碼是程序員最常用來指定動作的機制,這些動作由計算機來完成。
源代碼通常在壹個或多個文本文件中,或者存儲在數據庫中。有時,作為存儲程序,程序也可能出現在書籍或其他媒體的印刷代碼段中。大量的源文件可以組織成壹個目錄樹。在這種情況下,它也被稱為樹的源。
計算機程序的源代碼需要從人類可讀的格式轉換成某些類型計算機的可執行文件的二進制形式。編譯器可以將源代碼轉換成可執行文件。
特定軟件作品的源代碼可以包含在單個文件或多個文件中。雖然這種做法並不常見,但是程序的源代碼可以用不同的編程語言編寫。壹些軟件組件可以用任何編程語言編寫和編譯,例如Java語言:每個類被單獨編譯成壹個文件,並且在運行時解釋鏈接。
源代碼主要用作生成可執行程序的輸入過程(即編譯或解釋)。也可以作為人與人之間交流的方法和算法(比如代碼段)。
程序員通常通過已有的源代碼來了解編程技術。源代碼在開發人員中經常被作為壹種促進因素,使他們的編程技能更加成熟。有人認為源代碼是壹種藝術語言的表達。
如果沒有源代碼,通常很難將軟件移植到其他計算機平臺上。
可執行程序的反編譯可以用來生成源代碼,不管是匯編代碼還是高級語言。
在美國,截至2003年,法院尚未決定是否將源代碼視為言論自由的壹種憲法保護形式。源代碼可能被用作言論自由的論據,因為源代碼所傳達的信息是程序員的語言,是可以共享的。像幽默等其他藝術壹樣,它是壹種受保護的交流形式。相反,源代碼主要是實現功能,功能多於藝術功能,所以不受美國憲法第壹修正案中的權利保護。
第壹個關於源代碼本質的法庭案例涉及言論自由。加州數學教授丹·伯恩斯坦(Dan Bernstein)在他創辦的源代碼大學的互聯網上公布了壹個加密程序。當時,加密算法被列為國家安全,美國政府向其他國家出口武器的加密被認為是國家安全問題,必須得到國務院的批準。電子前沿基金會代表美國政府起訴伯恩斯坦,法院裁定其源代碼屬於言論自由,受第壹修正案保護。