C語言真正的特點及其演變 |
發(fā)布時間: 2012/8/28 18:04:13 |
C語言真正的特點及其演變
在這一小節(jié)中,譚老師簡要地介紹了C語言的發(fā)展歷程,讓我們認(rèn)識到C語言是一門歷史悠久的程序設(shè)計語言,從最初的只是為了描述和實現(xiàn)UNIX的需要而設(shè)計的一種工作語言,到后來得到業(yè)界的廣泛認(rèn)同而逐漸成為一種流行的程序設(shè)計語言。它的流行,也證明了其鮮明的特點讓它具有了旺盛的生命力,C語言已經(jīng)流行,并且還將繼續(xù)流行,它始終是一門應(yīng)用廣泛的主流程序設(shè)計語言。(這句話的潛臺詞是,學(xué)習(xí)C語言大有"前/錢"途。) C語言能夠受到大家的歡迎和認(rèn)可,能夠在軟件業(yè)界廣泛流行,這不是偶然的,是由它的鮮明的程序設(shè)計特點決定的。譚老師總結(jié)了C語言的8個特點,從"語言簡潔、緊湊,使用方便、靈活"到"運算符豐富",從"具有結(jié)構(gòu)化的控制語句"到"語法限制不太嚴(yán)格,程序設(shè)計自由度大"等等。 沒錯,這些確實是C語言的特點,但是,真正讓C語言能夠在眾多的程序設(shè)計語言中屹立不倒的特點只有兩個: 接近底層,可以直接對硬件進(jìn)行操作 嚴(yán)格地說,C語言是一種介于低級程序設(shè)計語言(例如,匯編語言)和高級程序設(shè)計語言(例如,C++、Java)之間的中級程序設(shè)計語言。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來,這使得程序員可以非常容易地利用C語言直接對計算機(jī)的硬件單元位、字節(jié)和地址進(jìn)行操作。這樣的特點,決定了C語言在某些需要對硬件進(jìn)行操作的應(yīng)用場景下,例如嵌入式系統(tǒng)中,成為程序員們的不二之選 。 執(zhí)行效率高,具有接近匯編的性能 除了匯編語言之外,C語言應(yīng)該是當(dāng)今主流程序設(shè)計語言中,執(zhí)行效率最高的程序設(shè)計語言了。一般而言,經(jīng)過編譯器優(yōu)化后的C語言程序,其執(zhí)行效率只比匯編程序生成的目標(biāo)代碼效率低10%~20%。對于某些對性能要求極高的系統(tǒng)軟件,諸如Linux內(nèi)核、搜索引擎算法,以及大型的科學(xué)計算程序等等,恐怕只有C語言才能夠勝任。這也決定了C語言在這些領(lǐng)域具有長久的生命力,始終處于一種無可替代的地位。 事物都有兩面性,C語言的優(yōu)點非常突出,但相對于那些高級程序設(shè)計語言,其缺點也非常明顯。 數(shù)據(jù)封裝性不強(qiáng) C語言的一個重要的缺點就是它對數(shù)據(jù)的封裝性不強(qiáng),基本上,在程序中我們可以對任何數(shù)據(jù)進(jìn)行任意的訪問,而不管這個數(shù)據(jù)是關(guān)鍵的重要數(shù)據(jù)還是某個無關(guān)緊要的臨時數(shù)據(jù)。這一點使得C語言在數(shù)據(jù)的安全性上有很大缺陷,這也是C語言和C++語言的一大區(qū)別。 結(jié)構(gòu)化的程序設(shè)計語言,無法支持復(fù)雜的大型業(yè)務(wù)型系統(tǒng)的開發(fā) C語言是一種優(yōu)秀的結(jié)構(gòu)化程序設(shè)計語言,可以很好地實現(xiàn)程序代碼及數(shù)據(jù)的相互分離,利于程序的開發(fā)和維護(hù)。出于性能的需求,它也被用于構(gòu)建一些底層系統(tǒng)(例如Linux kernel)。但是,在開發(fā)一些更加復(fù)雜的業(yè)務(wù)型系統(tǒng)的時候,因為其抽象層次比較低,這樣的設(shè)計方法卻可能讓整個項目陷入"需求變化"的深淵,一旦需求發(fā)生變化,則可能需要對整個系統(tǒng)的設(shè)計進(jìn)行變更,這使得C語言無法很好地支持復(fù)雜的大型系統(tǒng)的開發(fā),極大地限制了C語言的應(yīng)用。這也是為什么后來出現(xiàn)了面向?qū)ο蟮脑O(shè)計思想以及C++語言。 C語言語法靈活,難以掌握 C語言的理念與UNIX系統(tǒng)以及Hacker精神是一脈傳承的:程序員應(yīng)該對他自己的行為負(fù)責(zé)。因此沒有在語言層級上做過多的約束。保持語言的強(qiáng)大、簡潔、靈活是優(yōu)先考慮的,而不是對初學(xué)者的親和度。正是因為貫徹著這樣的精神,C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。因為其靈活性,使得從應(yīng)用的角度,C語言比其他高級語言較難掌握,這也限制了C語言的應(yīng)用普及。
本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |