天天看點

《像計算機科學家一樣思考C++》——1.1 什麼是程式設計語言

本節書摘來自異步社群出版社《像計算機科學家一樣思考c++》一書中的第1章,第1.1節,作者: 【美】allen b. downey , ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

像計算機科學家一樣思考c++

你即将學習的程式設計語言是c++。自1998年起的ap考試都以c++為基礎。在這之前,采用的是pascal。c++和pascal都是進階程式設計語言,你可能聽說過的其他進階語言有java、c和fortran。

你可能從“進階程式設計語言”這個名字中得知還有低級程式設計語言。低級程式設計語言一般指的是機器語言或者彙編語言。一般來說,計算機隻能執行用低級語言編寫的程式。是以,進階語言編寫的程式需要先轉換成低級語言再執行。進階語言的一個小缺點就是這一轉換過程需要耗費一些時間。

但是,進階語言具有巨大的優勢。首先,用進階語言程式設計要容易得多,這意味着該程式的程式設計時間較短,簡明易讀,正确性較高。其次,進階語言具有可移植的優勢。這意味着用進階語言編寫的程式隻要經過略微的修改就可以在不同的計算機作業系統上運作。而用低級語言編寫的程式隻能在某一種計算機系統上運作,若要在另一種系統上運作,則需要重新編寫代碼。

鑒于這些優勢,幾乎所有的程式都是用進階語言編寫。低級語言隻應用在少數特殊場景中。

有兩種将進階語言翻譯成低級語言的方式:解釋或者編譯。解釋器就是一個讀取進階程式并執行的程式。實際上,解釋器逐行翻譯程式,交替讀取代碼行及執行指令,如圖1-1所示。

《像計算機科學家一樣思考C++》——1.1 什麼是程式設計語言

圖1-1

編譯器則會在執行指令前,一次性地将全部進階程式代碼翻譯成機器語言。通常可以将編譯程式作為一個單獨的步驟,稍後再執行編譯後的代碼。在這種情況下,進階程式稱為源代碼;編譯後的程式稱為目标代碼或者可執行代碼。

以下面這種情況為例,假設你用c++編寫程式。你可能選擇一個文本編輯器來編寫程式(文本編輯器就是一個簡單的文字處理器)。當程式編寫完成時,可以将它儲存為program.cpp。program是你自己命名的檔案名,字尾.cpp則表示檔案為c++源代碼。

然後,根據程式設計環境,可以關閉文本編輯器,運作編譯器。編譯器會讀取源代碼,編譯源代碼并建立一個包含目标代碼的新檔案program.o,或者可執行檔案program.exe,如圖1-2所示。

《像計算機科學家一樣思考C++》——1.1 什麼是程式設計語言

圖1-2

下一個步驟就是運作程式,這一步需要程式的執行器。程式的執行器需要加載可運作程式(從硬碟複制到記憶體)并讓計算機開始執行程式。

盡管這一過程看起來有點複雜,但是好消息是在絕大多數的程式設計環境(有時稱為開發環境)中,這些步驟已經能夠自動執行。一般來說,隻需要編寫一段程式,輸入一條指令就可以完成編譯和運作過程。另一方面,了解程式執行過程中有哪些步驟在背景運作是很有用的,這樣在出錯的時候你可以很快發現問題所在。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。