讀者可能很熟悉編程和程式設計語言的基本概念,下面從普遍的意義上簡要描述一下本書將用到的一些術語,並闡述C++與其他程式設計語言的關係。
無論使用哪種程式設計語言,編寫出來的程式都是由各個指令構成的。這些指令就稱為原始碼,儲存在磁碟的源檔案中。目前有許多程式設計語言,每一種語言都有其優缺點,都有其吹捧者和批評者。除了C++之外,讀者一定還聽說過BASIC、COBOL、FORTRAN、PASCAL和C等程式設計語言。
例如,FORTRAN語言就有將近40年的曆史了,目前仍廣泛應用於科學和工程計算中,但C++和其他語言也逐漸進入這些領域。COBOL語言專門用於商務資料處理應用程式,它的曆史幾乎與FORTRAN語言一樣長。目前幾乎不用COBOL編寫新代碼,而是多年前編寫的大量代碼仍在使用。C++也逐漸成為許多商務資料處理程式的可選語言。
C是C++的前身,因為這兩種語言有許多共同的文法和功能。實際上,C程式設計語言是C++的一個子集。但是,C++在發展過程中進行了許多擴充和改進,使之成為一種成熟的語言,而且,C++比功能更強大,用途更廣泛。
1.1.1 解釋性的程式和編譯性的程式的執行過程
程式設計語言的目的是,與電腦可以執行的程式相比,能夠更簡單地描述希望電腦執行的動作。電腦只能執行包含機器指令(也稱為機器代碼)的程式,不能直接執行我們編寫的程式。用前面提到的語言編寫的程式基本上有兩種執行方式,在大多數情況下,一種語言會選擇其中一種執行方式。例如,用BASIC語言編寫的程式通常是解釋性的,也就是說,另一個稱為解譯器的程式會檢查BASIC原始碼,確定該程式要做什麼,再讓電腦完成這些動作。見圖1-1。
圖 1-1
而C++是一種編譯語言。在執行C++程式之前,必須用另一個程式(即編譯器)把它轉換為機器語言。編譯器會檢查C++程式,並產生機器指令,以執行原始碼指定的動作。當然,解釋和編譯都不像這裡描述的那樣簡單,但其工作原理就是這樣。
使用解釋性語言,執行過程是間接的,也就是說,每次執行程式時,都需要確定原始碼的意圖。因此,這種語言比編譯語言的對應程式的執行速度慢得多,有時要慢100倍。任何一種語言要麼是解釋性的,要麼是編譯性的,這通常由該語言的設計和用途來決定。
這個規則的一個例外是Java,它是一種相當新的語言,它具有C++的許多特性。由於Java主要用於在不同電腦之間移植以及用在Internet上,所以它基本上是一種解釋性的語言。儘管如此,還有一種just-in-time編譯器可以在執行過程中,為Java原始碼產生對應的機器碼,從而大大提高了執行速度。
1.1.2 庫
每次編寫程式時,如果總是要從頭開始編寫,就相當煩瑣。在許多程式中,常常需要某種相同的功能,例如從鍵盤上輸入資料,或在螢幕上顯示資訊。為瞭解決這個問題,程式設計語言提供了大量預先編寫好的代碼,以執行標準的輸入輸出操作,這樣就不必重新編寫這些代碼了。
可用於任意程式的標準代碼都儲存在一個庫中。程式設計語言附帶的庫跟語言本身一樣重要,因為庫的品質和使用範圍對完成某一編程任務所需的時間有非常大的影響