C語言現(xiàn)在已經(jīng)很成熟,它的各種語法規(guī)則、思想都已經(jīng)確立起來了,并對現(xiàn)在的很多語言產(chǎn)生很大的影響。但是任何事物都有其優(yōu)點(diǎn)和缺點(diǎn),C語言也不例外。下面我們分別來看一下。
C語言的優(yōu)點(diǎn)
C語言的優(yōu)點(diǎn)有三個:
代碼量小。
運(yùn)行速度快。
功能強(qiáng)大。
我們先看第一個優(yōu)點(diǎn),C語言的代碼量很小,這是什么意思呢?也就是說如果你要完成同樣一個功能,用C語言編寫出來的程序的容量是很小的,而用其他語言編寫容量就會比較大。比如 Microsoft Word 和 WPS,它們同樣都是辦公軟件,功能也差不多,但 WPS 的安裝文件只有 50MB 左右,而 Microsoft Word 的安裝文件超過 500MB,有的甚至接近 1GB。原因就是 WPS 的內(nèi)核是用C語言編寫的。
C語言的第二和第三個優(yōu)點(diǎn)是它的運(yùn)行速度比較快和功能強(qiáng)大,我們可以通過一個例子來解釋。世界上總共有三大操作系統(tǒng):UNIX 操作系統(tǒng)是用純C語言編寫的;Windows 操作系統(tǒng)的內(nèi)核也是用C語言編寫的;Linux 操作系統(tǒng)仍是用純C語言編寫的。這三大操作系統(tǒng)的內(nèi)核全部都是用C語言編寫的。為什么用C編寫,因?yàn)镃語言的速度最快。計算機(jī)中所有的軟件都是在操作系統(tǒng)上運(yùn)行的,如果操作系統(tǒng)的速度很慢,那么在它基礎(chǔ)上運(yùn)行的軟件的速度就更慢了。而且計算機(jī)中的所有硬件都是由操作系統(tǒng)控制的。
舉個簡單的例子,你可以新建一個 Word 文檔,這就意味著在硬盤上產(chǎn)生了這個文件。但是你并沒有直接控制硬盤,我們是通過操作系統(tǒng)提供的“右鍵單擊”等功能來新建文件的。也就是說,操作系統(tǒng)給我們提供了一個界面,或者說是給我們提供了一種可操作的手段,通過這個手段我們可以刪除文件、新建文件、打開文件或者修改文件。
所以操作系統(tǒng)很重要,所有的硬件全部都是由操作系統(tǒng)控制的。而這么重要的東西只能用C語言來寫,所以C語言很重要。為什么只能用C語言寫?第一,C語言速度夠快;第二,C語言可以訪問硬件,所以它夠強(qiáng)大。為什么不能用 Java 寫?首先,Java 太慢了;其次,Java 語言沒有指針。沒有指針就不能訪問硬件,所以它的功能是不夠的。指針是什么稍后會講,它是C語言中非常重要的內(nèi)容。
C語言的缺點(diǎn)
任何語言有優(yōu)點(diǎn)就有缺點(diǎn)。C語言的缺點(diǎn)可以用下面
三點(diǎn)來概括:
危險性高。
開發(fā)周期長。
可移植性不強(qiáng)。
我們先看第一點(diǎn)。假如你寫同樣一個程序,在 Java 里面會報錯,而在C語言里面是不會報錯的。為什么?因?yàn)镃語言設(shè)計的思想是:你想怎么寫程序就怎么寫,只要你的這種寫法錯得不是很離譜,就認(rèn)為你這么寫有特殊的含義,可以通過。但 Java 不行:只要你這么寫有歧義,或者說這樣寫不太好,那么它都會報錯。比如C語言中你可以將一個浮點(diǎn)型數(shù)據(jù)賦給一個整型變量,編譯時只會警告,因?yàn)闀G失精度,但是在 Java 中這樣寫就會報錯,它在語法上就禁止你這樣寫。所以不同的語言對同樣一個問題有不同的處理方式。
大家想想這樣導(dǎo)致的結(jié)果是什么?因?yàn)橛衅缌x的程序也可以通過,這樣就會有很多漏洞,黑客往往會抓住這些漏洞進(jìn)行攻擊。所以說C語言比較危險。這也是為什么C語言比較難學(xué)的原因,因?yàn)槟銓W(xué)完之后編寫一個程序很可能就是錯的,但又很難發(fā)現(xiàn)。所以前面說 C++ 從安全性上對C語言進(jìn)行了升級。
第二個是它的開發(fā)周期比較長。因?yàn)镃語言是面向過程的語言,面向過程語言的一個特點(diǎn)就是寫大項(xiàng)目的時候很容易“崩潰”。當(dāng)代碼上到 10 萬行的時候很容易崩潰,會出現(xiàn)各種各樣莫名其妙的錯誤。這時候就需要用另外一種思想將整個程序的框架重新設(shè)計一下,即用面向?qū)ο蟮乃枷朐O(shè)計。這也是C語言現(xiàn)在沒有 Java 流行的原因。
C語言的第三個缺點(diǎn)是可移植性不強(qiáng)。這個主要是針對 Java 的。Java 的可移植性太強(qiáng)了,所以就顯得C語言的可移植性不強(qiáng)。什么叫可移植性?就是說 Java 程序在哪個機(jī)器上都可以運(yùn)行,而且結(jié)果一模一樣。而C語言就不行,C程序在其他機(jī)器上不一定能運(yùn)行。而且就算能運(yùn)行,結(jié)果可能也不一樣。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6904瀏覽量
123847 -
C語言
+關(guān)注
關(guān)注
180文章
7616瀏覽量
137953
原文標(biāo)題:5分鐘看透C語言的優(yōu)點(diǎn)和缺點(diǎn)
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論