溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++學習筆記之(一)

發(fā)布時間:2020-08-03 22:12:12 來源:網(wǎng)絡 閱讀:337 作者:LxiaofengL 欄目:系統(tǒng)運維

從今天開始學習C++,掌握一門編程語言,不管對于后續(xù)的語言學習,還是以后工作來說,都受益良多,所以,刻苦鉆研,踏實進取。日后必有做為。


Key Point 1:C++的產(chǎn)生

(一)“C語言來源”

    C++來源于C,是C的超集。和C有著很深的淵源,所以介紹C++之前,先來介紹C.

    

    background:早期的程學設計語言,一種機器語言,(Machine Language),一種匯編語言(Assembly Language)。盡管這兩種語言具有程序指令可以訪問底層硬件,執(zhí)行效率高的優(yōu)點。但是它們從可讀性、可移植性以及對于問題的描述性能上來說,就遠不夠了。而且,編碼對于程序員來說簡直就是中折磨。


    19世紀70年代,“C語言之父”Dennis Richite在貝爾實驗室致力于開發(fā)Unix OS(Unix的產(chǎn)生這里不做描述)。為此,Ritchie需要一種語言,他必須簡潔、高效,能夠生成簡潔、快速的程序,并能有效地控制硬件。


    傳統(tǒng)上,程序員使用匯編語言來滿足這些需求,匯編語言依賴于計算機的內(nèi)部機器語言。But,匯編語言是low-level語言,就是說,他針對特定的計算機處理器。因此,要將匯編語言移植到另一臺計算機上,必須使用不同的匯編語言重新編寫程序。這就像是,每次購買新車時,都發(fā)現(xiàn)設計人員改變了控制系統(tǒng)的位置和功能,客戶不得不重新學習駕駛這輛新車。不過,Unix是為在不同的計算機(或平臺)上工作而設計的,這就意味著它是一種高級語言。高級語言致力于解決問題,而不是針對特定的硬件。

    

    一種被稱為編譯器的特殊程序?qū)⒏呒壵Z言翻譯成特定計算機的內(nèi)部語言。這樣,就可以通過對每個平臺使用不同的編譯器來在不同的平臺上使用同一個高級程序語言了。


    Ritchie希望能有一種語言,可以既能將低級語言的效率、硬件訪問能力和高級語言的通用性、可移植性融合在一起,于是他在舊語言的基礎上開發(fā)了C語言。


(二)“C++產(chǎn)生”

    C語言的出現(xiàn)取得了長足的發(fā)展,從Unix OS中便可以看出。但是隨著技術的發(fā)展,他也遇到了瓶頸。(看來IT技術出現(xiàn)問題本來就是一種必然的情況,只是這種變化來的快了點罷了)C語言的風格決定了它的缺點。


    一般來說,計算機要處理兩個概念:數(shù)據(jù)和算法。數(shù)據(jù)是程序使用和處理的信息,而算法是程序使用的方法。C語言是面向過程的語言(procedural language),它強調(diào)的是編程的算法方面。從概念上說,過程化編程語言首先要確定計算機采取的操作,然后使用編程語言來實現(xiàn)這些操作。程序命令計算機按照一系列流程生成特定的結果,就像菜譜制定了制作蛋糕的廚師應該遵循的一系列步驟一樣。

但隨著程序規(guī)模的擴大,早期的程序語言(FORTRAN & BASIC)都會遇到組織方面的問題。執(zhí)行路徑很混亂,可讀性幾乎不可能,而且修改起來一場麻煩。為解決這個問題,計算機科學家開發(fā)了一種更有序的編程方法,結構化編程。它將分支限制為一小組行為良好的結構(C中for loop,while loop,do while loop,if else sentence)。另一個原則是采用自頂向下的設計(top-down)。將問題分解為若干的子問題或者子模塊,便于管理。


    但是編寫大型程序時,仍然面臨挑戰(zhàn)。為應付這種挑戰(zhàn),OOP提供了一種方法。與過程性編程強調(diào)算法不同的是,OOP強調(diào)的是數(shù)據(jù)。OOP讓語言來滿足問題的要求,而不是過程性編程的那種使問題滿足語言的過程性方法。OOP的理念還設計與問題的本質(zhì)特性相對性的數(shù)據(jù)格式。


    在C++中,類是一種規(guī)范,它描述了新型數(shù)據(jù)格式,對象就是根據(jù)這種規(guī)范構造的特定數(shù)據(jù)結構。類準確表示了程序要處理的東西。從低級組織(類)到高級組織(程序)的處理過程叫做自下而上(bottom-up)的編程。


    基于此,C++產(chǎn)生于20世紀80年代的貝爾實驗室,它的開發(fā)者是Bjarne Stroustrup("C++之父")。后續(xù)的標準化工作為C++的發(fā)展和應用范圍提供了莫大的幫助。現(xiàn)實也證明了C++是一種功能強大的編程語言。(隨著學習的深入逐漸體會它的強大之處)


注:1)Unix OS 日后研究

    2)top-down vs bottom-up

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI