計算機系統基礎:程式語言分類
有很多種程式語言,你可能已經聽說過其中的一些,例如:C++、VB.NET、Java、Python、Assembly。我們現在將回顧這些語言的起源歷史以及它們仍然適用的領域。在所有情況下,請記住,計算機執行的唯一東西是機器程式碼或目的碼,這是從一種語言轉換為在處理器上執行的程式碼。
| 代 | 第一 | 第二 | 第三 | 第四 |
|---|---|---|---|---|
| 程式碼示例 |
10101010011000101 |
LDA 34
ADD #1
STO 34
|
x = x + 1
|
body.top { color : red;
font-style : italic
}
|
| 語言 | (低階) 機器程式碼 | (低階) 彙編程式碼 | (高階) Visual Basic、C、python 等。 | (高階) SQL、CSS、Haskell 等。 |
| 與目的碼的關係 (一般來說) |
-- | 一對一 | 一對多 | 一對多 |

第一代程式語言是純機器程式碼,也就是 1 和 0,例如:. 程式設計師必須手動設計程式碼,然後使用穿孔卡片、穿孔紙帶或撥動開關將其傳輸到計算機。無需翻譯程式碼,它會立即執行。這聽起來可能很古老,但它有一些優勢
當然也有缺點
第二代程式語言是描述彙編程式碼的一種方式,你可能已經遇到過。
透過使用類似英語的程式碼,程式設計變得容易得多。使用這些像LDA 載入和STA 儲存這樣的助記符程式碼意味著程式碼更容易閱讀和編寫。要將彙編程式碼程式轉換為在計算機上執行的目的碼,需要一個彙編器,並且彙編的每一行都可以被等效的一行目標(機器)程式碼替換
| 彙編程式碼 | 目的碼 | |
|---|---|---|
LDA A
ADD #5
STA A
JMP #3
|
-> 彙編器 -> |
000100110100 |
彙編程式碼與用機器程式碼編寫具有相似的優勢,畢竟它是一種一對一的關係。這意味著彙編程式碼通常用於為特定硬體編寫低階快速程式碼。直到最近,機器程式碼還被用於程式設計手機等裝置,但隨著C 等語言的速度和效能非常接近彙編,而且 C 能夠與處理器暫存器進行通訊,彙編的使用正在下降。
正如你所見,第二代語言比第一代語言有優勢,此外,還有其他一些使組合語言很棒的特點
當然也有缺點
儘管彙編程式碼比機器程式碼更容易閱讀,但執行迴圈和條件語句仍然不直觀,編寫大型程式會是一個緩慢的過程,並會建立大量的goto 語句和跳轉。第三代程式語言為程式碼帶來了許多程式設計師友好的特性,例如迴圈、條件語句、類等。這意味著一行第三代程式碼可以生成許多行目標(機器)程式碼,在編寫程式時節省了大量時間。
第三代(高階語言)程式碼是命令式的。命令式意味著程式碼按順序一行一行地執行。例如
dim x as integer
x = 3
dim y as integer
y = 5
x = x + y
console.writeline(x)
輸出結果為:8
第三代語言可以是平臺無關的,這意味著為一個系統編寫的程式碼將在另一個系統上執行。要將第三代程式轉換為目的碼,需要一個編譯器或一個直譯器。
總結
然而
|
擴充套件:程式設計正規化
|
第四代 語言旨在減少程式設計工作量和軟體開發時間,從而降低軟體開發成本。它們並不總是能成功完成此任務,有時會導致程式碼不優雅且難以維護。語言的設計旨在滿足特定目的,例如用於查詢資料庫的語言(SQL)、用於生成報告的語言(Oracle Reports)和用於構建使用者介面的語言(XUL)。第四代程式設計型別的一個例子是宣告式語言。
--an example of a Structured Query Language (SQL) to select criminal details from a database
SELECT name, height, DoB FROM criminals WHERE numScars = 7;
宣告式語言的一個例子是 CSS,您在完成任何網頁設計單元時可能會了解更多關於它的資訊。
/*code to change the headings on a page to green and the paragraphs to red and italic*/
h1 { color : #00FF00; }
p { color : #FF0000; font-style : italic }
|
練習:程式語言的世代 描述命令式語言的含義。 答案 程式碼逐行執行,按順序執行。 第二代語言程式碼行與目的碼行之間有什麼關係? 答案 一行第二代語言程式碼 = 一行目的碼。 目的碼行與第三代語言程式碼行之間有什麼關係? 答案 一行第三代語言程式碼 = 許多行目的碼。 給出使用第三代語言而不是組合語言的兩個好處。給出其中一個缺點。 答案
給出宣告式語言的定義。 答案 描述應該執行什麼計算,而不是如何執行。並非命令式! 對於第二代和第三代語言,給出將語言代轉換為目的碼所需的程式翻譯器。 答案
|