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