1. 程式人生 > 其它 >《C++修煉之旅》==>1.簡介

《C++修煉之旅》==>1.簡介

1.C++提要

C++是在C語言基礎之上開發的一種語言,是C語言的超集,‘++’取至C語言中的自加運算子,其意義不言而喻。學習C++是一次探索之旅,C++是一種令人興奮的語言,在二十世紀九十年代便是最重要的程式語言之一,並在二十一世紀仍然保持強勁的勢頭。C++既繼承了C語言高效,簡介,快速和可移植性的傳統,又為應對複雜程度不斷提高的現代程式設計任務而設計出了面向物件程式設計和模板特性所支援的泛型程式設計

2.C++簡史

在過去的幾十年,計算機技術以令人驚訝的速度發展著,當前膝上型電腦的計算速度和儲存資訊的能力超過了二十世紀六十年代的大型機。計算機語言也得到了發展,儘管變化可能不是天翻地覆的,但也是非常重要的。體積更小,功能更強的計算機也引出了更大,更復雜的程式,而這些程式在程式管理和維護方面帶來了新的問題。

2.1 C語言由來

二十世紀七十年代早期,貝爾實驗室的Ritchie致力於開發UNIX作業系統,為完成這項工作,Ritchie需要一種能簡潔,快速,有效控制硬體的語言。傳統上,當時的程式設計師使用匯編語言來滿足這些需求,組合語言依賴於內部機器語言。但是這是一種直接操作CPU暫存器和記憶體單元的低階語言,因為組合語言針對於特定的計算機處理器,要將彙編程式移植到另一臺計算機上,必須重新編寫程式。這就像寧買了新車,它和舊車控制部位的位置不同,寧就需要重新學習熟練。

但是UNIX目的是為不同的計算機平臺工作而設計,這就需要一種高階語言,高階語言致力於解決對應的問題,而不是直接操作硬體。(這就像寧知道手動車起步只需要踩離合,掛一檔一樣,而不需要知道離合具體是怎麼實現的)

。我們需要知道,一種被稱為編譯器的特殊程式能將高階語言翻譯成特定的計算機內部語言,這樣各個平臺就可以通過使用不同的編譯器在各自平臺上使用同一個高階語言程式了。於是Ritchie這位牛逼的大佬又開發出了C語言。

2.2 C語言程式設計思想

一般來說,程式分為資料結構和演算法兩個部分。資料是程式使用和處理的資訊,而演算法是程式使用的方法,說明書。C語言在最初面世時也是過程性語言,計算機處理問題按照步驟一步一步來解決。就像菜譜指定了寧做蛋糕時應遵循的一系列步驟一樣。

隨著程式發展和規模的擴大,早期語言都會遇到組織方面的問題,例如,程式經常使用分支語句來判斷執行什麼命令。很多舊式程式執行路徑很混亂,幾乎不可能通過直接閱讀程式來理解它,更別提修改程式。因此一種更有序的程式設計方法--結構化程式設計出現了,C語言具有使用這種方法的特性。還有一種新原則是自上而下的設計

,在C語言中,其理念時將大型程式分解成小型,便於管理的任務。如果任務仍然過大,直到將程式分解成小型的,易於編寫的模組。(比如寧要整理房間,先整理客廳,再打掃臥室,最後清潔廁所。寧就會先從客廳開始,客廳又分為飯桌,茶几,沙發,最後確定先清理飯桌,再是茶几。。。)

2.3 面向物件程式設計

雖然結構化程式設計的理念提高了程式的清晰度,可靠性,並使之便於維護,但它在編寫大型程式時,仍面臨挑戰。為應對這種挑戰,OOP提供了一種新思想,與強調演算法的過程性程式設計不同的是,OOP強調的是資料,OOP不是使問題滿足語言的過程性方法,而是試圖讓語言來滿足問題的要求。(寧要炒一個番茄炒蛋,強調過程的C語言表現起來就像這樣:先洗菜切菜,再打蛋,再開火放油,炒蛋。。。。但是面向物件思路體現起來更像是這種方式:先安排一個人這個類物件,再取出菜類中的番茄物件和蛋類物件,最後賦予人這個物件執行炒菜的具體方法。)

C++中,類更像是一種規範,它描述了這種新型的資料格式,而物件是根據這種規劃所例項化的特定資料結構。類規定了可使哪些資料來表示物件以及可對資料執行哪些操作,這就是一個類包含的屬性和方法兩個部分例如,假設寧要開發一個五子棋對戰遊戲,那麼五子棋就可以用類來實現,這個類的屬性包含顏色,大小,座標位置等資料,它的方法可以包含移動,改變大小,改變顏色等操作。這樣當需要使用五子棋這個類時,就可以定義建立一個具體物件,該物件儲存了描述五子棋的所有資料值。

OOP程式設計方法首先設計類,然後設計一個特定的使用這些類物件的程式,這種從低階組織到高階組織的處理過程叫做自下而上程式設計

2.4 C++所帶來的