這是一個爭論不休的話題,不同人總會有不同的見解。傳統(tǒng)的說法是從Pascal開始,而較為新點的是C開始,這幾年以來,也有提出直接從C++或者C#/Java開始學(xué)起。
首先,我先來介紹一下各種編程語言的來源、特點。
Pascal語言:
Pascal是一種計算機(jī)通用的高級程序設(shè)計語言,由瑞士Niklaus Wirth教授六十年代末設(shè)計并創(chuàng)立的。
Pascal的主要特點有:嚴(yán)格的結(jié)構(gòu)化形式、豐富完備的數(shù)據(jù)類型、運行效率高、查錯能力強(qiáng)等特點。
由于上述特點,Pascal可以方便用于描述各種算法和數(shù)據(jù)結(jié)構(gòu)。對于程序設(shè)計的初學(xué)者,Pascal語言有益于培養(yǎng)良好的程序設(shè)計風(fēng)格和習(xí)慣。IOI(國際奧林匹克信息學(xué)競賽)把Pascal語言作為三種程序設(shè)計語言之一。NOI(全國奧林匹克信息學(xué)競賽)把Pascal語言定為提倡的程序設(shè)計語言,在大學(xué)中Pascal語言也常常被用作學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的數(shù)學(xué)語言。
C語言:
C語言是介于匯編語言和高級語言之間的語言,屬于高級語言,也稱為中級語言,是集匯編和高級語言優(yōu)點于一身的程序設(shè)計語言。于1972年在美國貝爾實驗室里問世。早期的C語言主要用于UNIX系統(tǒng)。由于C語言的強(qiáng)大功能和各方面的優(yōu)點逐漸為人們認(rèn)識,到了九十年代,C語言開始進(jìn)入其他操作系統(tǒng),并很快在各類大、中、小和微型計算機(jī)上得到廣泛的應(yīng)用。成為當(dāng)代優(yōu)秀的程序設(shè)計語言之一。
C的特點
1. 是一種結(jié)構(gòu)化語言。層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。
2. C語言的表現(xiàn)能力和處理能力極強(qiáng)。不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu),它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位級別的操作。
3. 由于C語言實現(xiàn)對硬件的編程操作,所以既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。C語言還具有效率高,可移植性強(qiáng)等特點。因此廣泛地移植到了各類計算機(jī)上,從而形成了多種版本的C語言。
4. 由于C語言允許直接對位、字節(jié)和地址進(jìn)行操作,能實現(xiàn)匯編語言的大部分功能。
5. 目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。
總體上來說,C語言的優(yōu)點是簡潔、緊湊、使用方便、靈活、易于學(xué)習(xí)和應(yīng)用。僅有32個關(guān)鍵字。9種控制語句,程序的書寫形式也很自由。
C語言的弱點:非強(qiáng)類型;語法限制不嚴(yán)格,使得編程者無法過多地依賴C編譯程序去查錯;缺少實時檢查,如數(shù)組越界等。
從嚴(yán)格上來說,C語言是塊結(jié)構(gòu)語言,這是因為它在結(jié)構(gòu)上類似于ALGOL、Pascal和Modula-2.從技術(shù)上講,塊結(jié)構(gòu)語言允許在過程和函數(shù)中定義過程和函數(shù)。因為C語言不允許在函數(shù)中定義函數(shù),所以不能稱為通常意義上的塊結(jié)構(gòu)語言。
C語言作為一門面向過程的計算機(jī)語言,至今已有三十多年歷史,應(yīng)用廣泛,無論是Windows還是Linux,你所看到的底層都是用C寫的。大部分的網(wǎng)絡(luò)協(xié)議也都是用C實現(xiàn)的。你看到的漂亮的游戲畫面也是用C實現(xiàn)的,工業(yè)控制程序也是用C實現(xiàn)的。不過C不是萬能,只是某些方面它適用而已。
C++語言
C++是于1986年由AT&T貝爾實驗室開發(fā)的,語言開發(fā)的目的在于通過數(shù)據(jù)封裝減少程序變量的副作用,從而降低程序的復(fù)雜性并提高程序的可靠性。(筆者曾經(jīng)聽到的開發(fā)C++的目的是由于懂得C語言的人越來越多,所以需要再出一門更難的、比C語言強(qiáng)大的語言,才能保住飯碗,so.C++出世啦)C++是C語言的直接擴(kuò)展,C++的多繼承機(jī)制能更好地描述對象的屬性和行為。
C++是C的擴(kuò)展,但C++可以作為一種全新的語言來看。
C++的特點:面向?qū)ο、繼承、封裝、多態(tài)性。
由于C++是C的擴(kuò)展,所以也具有C的特點。
C++在C的基礎(chǔ)上,加入了面向?qū)ο缶幊趟枷耄簿蜎Q定了C++的效率在某一方面是不如C的。比如定義一種類型,C++用類(Class)來封裝,而C可能就直接幾個變量的組合就成了一個結(jié)構(gòu)體(Struct),類不僅具有成員變量,還具有成員函數(shù)等,在精細(xì)的比較其效率時,C會比C++的效率要高。但由于時代的發(fā)展,項目或工程的龐大化,基于面向?qū)ο蟮乃枷腼@然更能適應(yīng)。即C++在這方面能比C要做得更漂亮。現(xiàn)在不少系統(tǒng)級編程都是用C++實現(xiàn),許多應(yīng)用級別的軟件也是用C++實現(xiàn)。
這里要注意一點,就是C++并不是完全的面向?qū)ο笳Z言。它是提供了面向?qū)ο蟮哪P鸵约八悸,但是同時兼容了面向過程的模型。