程式語言/簡介
一種程式語言是一種人工語言,可用於指示計算機執行特定任務。要被視為通用程式語言,它必須是計算上完備的,或圖靈完備的。然而,通常將一些非計算上完備的語言,例如資料庫查詢語言和其他領域特定語言,也視為程式語言。
低階程式語言是接近機器本地語言的非常基本的語言。可以將低階程式語言視為軟體的構建塊語言。彙編程式碼是最常見的低階語言,它只需要很少的轉換即可將其組裝成機器程式碼。(構成二進位制的 1 和 0。)
高階程式語言更接近人類交流的水平。在這種方法中,編譯器為程式設計師完成了大部分工作。語言越接近我們日常的言語,我們越容易關注更復雜的問題。然而,這可以做得太過分。如果一種語言太像英語(或其他自然語言),則建立複雜程式可能更難。這是因為冗長的語言需要更多時間來閱讀,因此需要更多時間來理解。
機器程式碼是計算機可以直接理解的語言。機器程式碼由二進位制數字序列組成。它幾乎從不直接程式設計,但任何要在普通計算機上執行的東西都必須先轉換為機器程式碼。機器程式碼對於每種計算機架構都可能不同。
組合語言是機器程式碼更易於人類閱讀的表示,其中機器指令以助記符而不是二進位制數字表示。只要程式不是自修改的,組合語言就與機器程式碼具有 1:1 的關係。在計算機程式可以由計算機執行之前,它必須轉換為機器程式碼。執行此轉換的程式稱為彙編器。在計算的早期,組合語言被廣泛使用,但如今主要用於程式的非常時間關鍵的部分、作業系統的核心以及非常小的計算機(如智慧卡上的晶片)。
機器程式碼和組合語言分別被稱為第一代和第二代程式語言。具有算術表示式、迴圈結構、函式和其他結構的程式語言,可以使程式設計師免於直接處理機器指令,被稱為第三代程式語言。
以前,高階的、特定領域的程式語言通常被稱為第四代語言,而專家系統被稱為第五代程式語言。近年來,這種區分變得模糊,因為出現了許多非常高階的通用程式語言,例如 Python、Haskell 和 Common Lisp。專家系統如今很少使用。
在程式可以在計算機上執行之前,它必須轉換為機器程式碼。或者,它可以透過另一個程式(稱為直譯器)模擬。編譯器是一個程式,它將一種程式語言(稱為源程式語言)轉換為另一種程式語言(稱為目標語言)。通常,源語言是高階語言,而目標語言是機器程式碼。直譯器可能要求源程式語言在解釋之前編譯成中間形式,稱為位元組碼。這是一種更低階的語言,更容易編寫直譯器。在 Java 程式語言中,這是一個單獨的步驟,而在其他情況下,它作為直譯器的一個組成部分執行。此類程式語言的示例包括 Perl 和 Python。CommonLisp 是上述情況的例外:它既被解釋又被編譯。
型別系統有兩個軸:一方面是動態與靜態,另一方面是強與弱。
強型別語言不允許對物件進行操作,除非該物件在型別上匹配。示例包括 CommonLisp、Q-base 和 Python。
弱型別語言允許此類操作。示例包括 C 和 C++。
動態型別語言將型別繫結到值。靜態型別語言將其繫結到變數。
(有關背景資訊,請參見 此處。)
- 手動管理
- 垃圾回收