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