C語言的優點和缺點

2020-07-16 10:04:23
C語言現在已經很成熟,它的各種語法規則、思想都已經確立起來了,並對現在的很多語言產生很大的影響。但是任何事物都有其優點和缺點,C語言也不例外。下面我們分別來看一下。

C語言的優點

C語言的優點有三個:
  1. 程式碼量小。
  2. 執行速度快。
  3. 功能強大。

我們先看第一個優點,C語言的程式碼量很小,這是什麼意思呢?也就是說如果你要完成同樣一個功能,用C語言編寫出來的程式的容量是很小的,而用其他語言編寫容量就會比較大。

比如 Microsoft Word 和 WPS,它們同樣都是辦公軟體,功能也差不多,但 WPS 的安裝檔案只有 50MB 左右,而 Microsoft Word 的安裝檔案超過 500MB,有的甚至接近 1GB。原因就是 WPS 的核心是用C語言編寫的。

C語言的第二和第三個優點是它的執行速度比較快和功能強大,我們可以通過一個例子來解釋。世界上總共有三大作業系統:UNIX 作業系統是用純C語言編寫的;Windows 作業系統的核心也是用C語言編寫的;Linux 作業系統仍是用純C語言編寫的。

這三大作業系統的核心全部都是用C語言編寫的。為什麼用C編寫,因為C語言的速度最快。計算機中所有的軟體都是在作業系統上執行的,如果作業系統的速度很慢,那麼在它基礎上執行的軟體的速度就更慢了。而且計算機中的所有硬體都是由作業系統控制的。

舉個簡單的例子,你可以新建一個 Word 文件,這就意味著在硬碟上產生了這個檔案。但是你並沒有直接控制硬碟,我們是通過作業系統提供的“右鍵單擊”等功能來新建檔案的。也就是說,作業系統給我們提供了一個介面,或者說是給我們提供了一種可操作的手段,通過這個手段我們可以刪除檔案、新建檔案、開啟檔案或者修改檔案。

所以作業系統很重要,所有的硬體全部都是由作業系統控制的。而這麼重要的東西只能用C語言來寫,所以C語言很重要。為什麼只能用C語言寫?第一,C語言速度夠快;第二,C語言可以存取硬體,所以它夠強大。

為什麼不能用 Java 寫?首先,Java 太慢了;其次,Java 語言沒有指標。沒有指標就不能存取硬體,所以它的功能是不夠的。指標是什麼稍後會講,它是C語言中非常重要的內容。

C語言的缺點

任何語言有優點就有缺點。C語言的缺點可以用下面三點來概括:
  1. 危險性高。
  2. 開發週期長。
  3. 可移植性不強。

我們先看第一點。假如你寫同樣一個程式,在 Java 裡面會報錯,而在C語言裡面是不會報錯的。為什麼?因為C語言設計的思想是:你想怎麼寫程式就怎麼寫,只要你的這種寫法錯得不是很離譜,就認為你這麼寫有特殊的含義,可以通過。但 Java 不行:只要你這麼寫有歧義,或者說這樣寫不太好,那麼它都會報錯。

比如C語言中你可以將一個浮點型資料賦給一個整型變數,編譯時只會警告,因為會丟失精度,但是在 Java 中這樣寫就會報錯,它在語法上就禁止你這樣寫。所以不同的語言對同樣一個問題有不同的處理方式。

大家想想這樣導致的結果是什麼?因為有歧義的程式也可以通過,這樣就會有很多漏洞,駭客往往會抓住這些漏洞進行攻擊。所以說C語言比較危險。這也是為什麼C語言比較難學的原因,因為你學完之後編寫一個程式很可能就是錯的,但又很難發現。所以前面說 C++ 從安全性上對C語言進行了升級。

第二個是它的開發週期比較長。因為C語言是程序導向的語言,程序導向語言的一個特點就是寫大專案的時候很容易“崩潰”。當程式碼上到 10 萬行的時候很容易崩潰,會出現各種各樣莫名其妙的錯誤。這時候就需要用另外一種思想將整個程式的框架重新設計一下,即用物件導向的思想設計。這也是C語言現在沒有 Java 流行的原因。

C語言的第三個缺點是可移植性不強。這個主要是針對 Java 的。Java 的可移植性太強了,所以就顯得C語言的可移植性不強。什麼叫可移植性?就是說 Java 程式在哪個機器上都可以執行,而且結果一模一樣。而C語言就不行,C程式在其他機器上不一定能執行。而且就算能執行,結果可能也不一樣。