從今天開始學(xué)習(xí)C++,掌握一門編程語言,不管對于后續(xù)的語言學(xué)習(xí),還是以后工作來說,都受益良多,所以,刻苦鉆研,踏實進(jìn)取。日后必有做為。
創(chuàng)新互聯(lián)建站專注于淮上企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。淮上網(wǎng)站建設(shè)公司,為淮上等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
Key Point 1:C++的產(chǎn)生
(一)“C語言來源”
C++來源于C,是C的超集。和C有著很深的淵源,所以介紹C++之前,先來介紹C.
background:早期的程學(xué)設(shè)計語言,一種機(jī)器語言,(Machine Language),一種匯編語言(Assembly Language)。盡管這兩種語言具有程序指令可以訪問底層硬件,執(zhí)行效率高的優(yōu)點。但是它們從可讀性、可移植性以及對于問題的描述性能上來說,就遠(yuǎn)不夠了。而且,編碼對于程序員來說簡直就是中折磨。
19世紀(jì)70年代,“C語言之父”Dennis Richite在貝爾實驗室致力于開發(fā)Unix OS(Unix的產(chǎn)生這里不做描述)。為此,Ritchie需要一種語言,他必須簡潔、高效,能夠生成簡潔、快速的程序,并能有效地控制硬件。
傳統(tǒng)上,程序員使用匯編語言來滿足這些需求,匯編語言依賴于計算機(jī)的內(nèi)部機(jī)器語言。But,匯編語言是low-level語言,就是說,他針對特定的計算機(jī)處理器。因此,要將匯編語言移植到另一臺計算機(jī)上,必須使用不同的匯編語言重新編寫程序。這就像是,每次購買新車時,都發(fā)現(xiàn)設(shè)計人員改變了控制系統(tǒng)的位置和功能,客戶不得不重新學(xué)習(xí)駕駛這輛新車。不過,Unix是為在不同的計算機(jī)(或平臺)上工作而設(shè)計的,這就意味著它是一種高級語言。高級語言致力于解決問題,而不是針對特定的硬件。
一種被稱為編譯器的特殊程序?qū)⒏呒壵Z言翻譯成特定計算機(jī)的內(nèi)部語言。這樣,就可以通過對每個平臺使用不同的編譯器來在不同的平臺上使用同一個高級程序語言了。
Ritchie希望能有一種語言,可以既能將低級語言的效率、硬件訪問能力和高級語言的通用性、可移植性融合在一起,于是他在舊語言的基礎(chǔ)上開發(fā)了C語言。
(二)“C++產(chǎn)生”
C語言的出現(xiàn)取得了長足的發(fā)展,從Unix OS中便可以看出。但是隨著技術(shù)的發(fā)展,他也遇到了瓶頸。(看來IT技術(shù)出現(xiàn)問題本來就是一種必然的情況,只是這種變化來的快了點罷了)C語言的風(fēng)格決定了它的缺點。
一般來說,計算機(jī)要處理兩個概念:數(shù)據(jù)和算法。數(shù)據(jù)是程序使用和處理的信息,而算法是程序使用的方法。C語言是面向過程的語言(procedural language),它強(qiáng)調(diào)的是編程的算法方面。從概念上說,過程化編程語言首先要確定計算機(jī)采取的操作,然后使用編程語言來實現(xiàn)這些操作。程序命令計算機(jī)按照一系列流程生成特定的結(jié)果,就像菜譜制定了制作蛋糕的廚師應(yīng)該遵循的一系列步驟一樣。
但隨著程序規(guī)模的擴(kuò)大,早期的程序語言(FORTRAN & BASIC)都會遇到組織方面的問題。執(zhí)行路徑很混亂,可讀性幾乎不可能,而且修改起來一場麻煩。為解決這個問題,計算機(jī)科學(xué)家開發(fā)了一種更有序的編程方法,結(jié)構(gòu)化編程。它將分支限制為一小組行為良好的結(jié)構(gòu)(C中for loop,while loop,do while loop,if else sentence)。另一個原則是采用自頂向下的設(shè)計(top-down)。將問題分解為若干的子問題或者子模塊,便于管理。
但是編寫大型程序時,仍然面臨挑戰(zhàn)。為應(yīng)付這種挑戰(zhàn),OOP提供了一種方法。與過程性編程強(qiáng)調(diào)算法不同的是,OOP強(qiáng)調(diào)的是數(shù)據(jù)。OOP讓語言來滿足問題的要求,而不是過程性編程的那種使問題滿足語言的過程性方法。OOP的理念還設(shè)計與問題的本質(zhì)特性相對性的數(shù)據(jù)格式。
在C++中,類是一種規(guī)范,它描述了新型數(shù)據(jù)格式,對象就是根據(jù)這種規(guī)范構(gòu)造的特定數(shù)據(jù)結(jié)構(gòu)。類準(zhǔn)確表示了程序要處理的東西。從低級組織(類)到高級組織(程序)的處理過程叫做自下而上(bottom-up)的編程。
基于此,C++產(chǎn)生于20世紀(jì)80年代的貝爾實驗室,它的開發(fā)者是Bjarne Stroustrup("C++之父")。后續(xù)的標(biāo)準(zhǔn)化工作為C++的發(fā)展和應(yīng)用范圍提供了莫大的幫助。現(xiàn)實也證明了C++是一種功能強(qiáng)大的編程語言。(隨著學(xué)習(xí)的深入逐漸體會它的強(qiáng)大之處)
注:1)Unix OS 日后研究
2)top-down vs bottom-up