2021年還有人在使用C語言嗎?
不點(diǎn)藍(lán)字關(guān)注,我們哪來故事?
截止到 2021 年,C語言已經(jīng)發(fā)布了將近 50 年,是不折不扣的“大叔”或者“大爺”,但是,C語言在編程界依然非常流行;2019 年,C語言由于速度快、平臺(tái)獨(dú)立的特性,在世界編程語言排行榜中奪得第二名。

圖1:2019年世界編程語言排行榜
C語言是為直接控制硬件而開發(fā)的,可以用來編寫操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)程序等。
C語言也是很多其它編程語言的基石,它們有的使用C語言開發(fā)編譯器和標(biāo)準(zhǔn)庫,有的基于C語言模塊進(jìn)行擴(kuò)展,因此,C語言也被稱為其它語言的“母語”。
現(xiàn)在都 2021 年了,您可能會(huì)想,C語言在現(xiàn)實(shí)生活中還有什么用途呢?這就是本文要重點(diǎn)討論的內(nèi)容。
本文我們先討論C語言的特性,然后討論C語言在目前以及未來的實(shí)際用途。通過閱讀本文,您將對C語言有一個(gè)整體的認(rèn)知。
什么是C語言?

圖2:C語言之父——丹尼斯·里奇
從特性方面講,C語言是一種中級(jí)語言,它結(jié)合了低級(jí)語言速度快的特點(diǎn),以及高級(jí)語言開發(fā)方便的特點(diǎn);從應(yīng)用方面講,C語言也是一種高級(jí)語言,它可以用來編寫電腦軟件,或者開發(fā)嵌入式系統(tǒng)。
當(dāng)需要開發(fā)一種新的編程語言時(shí),C語言是最好的選擇,因?yàn)镃語言執(zhí)行效率非常高,僅次于匯編語言。例如,目前常用的 Python、PHP、C++、Objective-C 都是在C語言的基礎(chǔ)上進(jìn)行開發(fā)的。
C語言的主要特點(diǎn):
執(zhí)行速度快
可以直接訪問內(nèi)存
模塊化,易于擴(kuò)展
占用內(nèi)存少
靜態(tài)類型
中級(jí)語言
可移植性
通用語言
C語言的用途
C語言的用途可以概括如下:
1) 系統(tǒng)編程
C語言可移植性好,性能高,能夠直接訪問硬件地址,而且到達(dá)某個(gè)地址的時(shí)間非常短,這使得C語言天生適合開發(fā)操作系統(tǒng)或者嵌入式應(yīng)用程序。在最初的時(shí)候,C語言主要就是被應(yīng)用在這兩個(gè)領(lǐng)域。
2) 開發(fā)其它編程語言
有些編程語言的編譯器或者解釋器就使用C語言開發(fā),還有一些編程語言的庫或者模塊支持C語言,這使得C語言成為了很多其它編程語言的基礎(chǔ)。
3) 電氣工程
C語言在電氣工程領(lǐng)域也有很多用途,它可以使用信號(hào)處理算法來管理微處理器、微控制器等集成電路。
4) 編譯器中間件
由于C語言具有可移植性,適應(yīng)性強(qiáng),有時(shí)也被用作不同編程語言的中間語言,這樣不同編程語言之間就可以共享組件/模塊。把C語言作為中間件的編譯器有 Gambit、BitC、Glasgow Haskell Compiler、Vala 和 Squeak 等。
5) 應(yīng)用程序
舉例說明C語言的應(yīng)用
1) 操作系統(tǒng)
UNIX 是第一個(gè)使用高級(jí)語言設(shè)計(jì)的操作系統(tǒng),它使用的編程語言就是C語言。后來,Microsoft Windows 和不同的 Android 組件也使用C語言編寫。
2)?GUI(圖形用戶界面)
Adobe Photoshop 是目前最受歡迎的圖像編輯器之一,它的很多組件就使用C語言開發(fā)。此外,Illustrator 和 Adobe Premiere 也使用了C語言。
3) 嵌入式系統(tǒng)
C語言是開發(fā)嵌入式系統(tǒng)應(yīng)用程序和驅(qū)動(dòng)程序的最佳選擇,因?yàn)樗軌蛑苯硬僮鳈C(jī)器硬件。
4)?Google
Google Chrome 瀏覽器和 Google 文件系統(tǒng)都使用了C語言進(jìn)行開發(fā)。此外,谷歌開源社區(qū)有大量的項(xiàng)目也都在使用 C/C++。
5) 編譯器開發(fā)
C語言的常見用途之一就是開發(fā)其它編程語言的編譯器,因?yàn)镃語言具有低級(jí)語言的特性,可以直接訪問機(jī)器硬件。使用C語言開發(fā)的編譯器有 Clang C、Bloodshed Dev-C、Apple C 和 MINGW 等。
6)?游戲和動(dòng)畫
C語言是編譯型語言,比 Java 或者 Python 等非編譯型語言執(zhí)行速度更快,這使得C語言在游戲開發(fā)領(lǐng)域不可或缺。
C語言可以提高繪圖性能,例如,作為一款 FPS 恐怖游戲,Doom3 在 2004 年就使用C語言進(jìn)行開發(fā),并運(yùn)行在 Windows 系統(tǒng)。
7) 數(shù)據(jù)庫
C語言的未來
在編程語言流行程度方面,Java、Python、C++ 等現(xiàn)代編程語言已經(jīng)取代了C語言的地位;但是C語言已經(jīng)存在了很長時(shí)間,并且到目前仍然被大量使用。
C語言失敗的一個(gè)主要原因是 C++的誕生。C++ 在C語言的基礎(chǔ)上進(jìn)行了擴(kuò)展,不但保留了幾乎所有的C語言特性,還包含了面向?qū)ο缶幊毯湍0寰幊痰刃碌乃枷?。對于用戶使用的?yīng)用程序,人們更喜歡使用 C++,它的開發(fā)效率更高,使用更方便。
但是,C++ 程序占用內(nèi)存較多,尤其是在使用 C++ 標(biāo)準(zhǔn)模板庫時(shí),內(nèi)存更是瘋長,對于資源有限的嵌入式系統(tǒng),或者在意資源消耗的系統(tǒng)組件來說,內(nèi)存瘋長是不能承受的,所以C語言仍然是嵌入式系統(tǒng)開發(fā)、驅(qū)動(dòng)開發(fā)、算法開發(fā)的更可靠的選擇。
總之,在應(yīng)用層開發(fā)中,C語言已經(jīng)被 Java、Python、PHP 等現(xiàn)代語言取代了,C語言幾乎沒有了用武之地。但是,在嵌入式系統(tǒng)開發(fā)、驅(qū)動(dòng)開發(fā)、底層組件開發(fā)、算法開發(fā)方面,C語言仍然是不可被替代的。
C語言在可見的未來雖然不會(huì)有蓬勃的發(fā)展,但是它也不會(huì)消失,它仍然有用武之地,在某些領(lǐng)域仍然是不可或缺的。C語言沒有未來,但是仍不可被取代。
常見問題
1) 學(xué)習(xí) C++ 之前要學(xué)習(xí)C語言嗎?
網(wǎng)上有人建議直接學(xué)習(xí) C++,這樣能夠直接接受面向編程的思想,而不用經(jīng)歷面向過程編程的階段,能夠更好地培養(yǎng)初學(xué)者的編程思維。
而我執(zhí)著地認(rèn)為應(yīng)該先學(xué)習(xí)C語言,再學(xué)習(xí) C++,對初學(xué)者大談各種思想的,都是在誤導(dǎo)別人。剛?cè)腴T的程序員才談這思想那思想,真正的程序員心中沒有思想,就是實(shí)用主義,能達(dá)到目的就行,管他什么思想呢。
2) 2021 年還在使用C語言嗎?
答案是肯定的。C語言和 C++ 在 2021 年仍然在被大量使用,而且位于世界編程語言的前 5 名。學(xué)好C語言,能大幅提升編程功力,不懂C語言的程序員一般造詣不高。
3) 為什么C語言仍然在被使用?
因?yàn)镃語言在某些領(lǐng)域不可被替代。C語言有自身的優(yōu)勢,比如執(zhí)行效率高、占用內(nèi)存少、能夠直接訪問硬件,這些優(yōu)勢是 Java、Python、JavaScript 等高級(jí)語言都不具備的,所以在某些關(guān)注執(zhí)行效率和資源消耗的項(xiàng)目中,C語言幾乎是唯一的選擇。
本文于?2021-07-09 發(fā)布于C語言中文網(wǎng)
END
若覺得文章對你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
長按二維碼,掃掃關(guān)注哦
?「C語言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程??

