為什么感覺學(xué)完C/C++后寫不出有用的東西?
最近瀏覽到一個很有趣的問題,有國外網(wǎng)友問出這樣的一個問題:為什么感覺學(xué)完C/C++后做不出有用的東西?然后評論里就熱鬧了,留言區(qū)火力全開。
這是其中一個老哥的留言:
「你正在使用的操作系統(tǒng)就是用C語言寫的;
能讓你在網(wǎng)站上問出一個如此愚蠢問題的計算機網(wǎng)絡(luò)也是用C/C++寫的;
你智能手機上運行的操作系統(tǒng),C/C++寫的;
驅(qū)動你路由器的軟件,C/C++寫的;
Java JVM,C++寫的;
幾乎驅(qū)動整個數(shù)字世界的Linux內(nèi)核,毫無疑問,C語言寫的」
你可以看下linux內(nèi)核的語言組成,絕大部分都是C語言寫的,還有一少部分匯編。

可以看到,操作系統(tǒng)、TCP/IP協(xié)議棧、編譯器、解釋器、驅(qū)動程序等這些都是基礎(chǔ)設(shè)施,它們是整個數(shù)字世界的基石。
最重要的是幾乎沒有重新發(fā)明的必要性,除去教學(xué)等場景外,我們幾乎沒有可能要自己去實現(xiàn)一個內(nèi)核、自己寫一遍TCP/IP協(xié)議棧、自己寫一個編譯器等等。
當(dāng)然,這些基礎(chǔ)設(shè)施的實現(xiàn)也是有相當(dāng)?shù)碾y度的,不管是理論上還是工程上,就以操作系統(tǒng)來說,現(xiàn)在在理論上依然有宏內(nèi)核與微內(nèi)核的爭論,工程實踐上Linux內(nèi)核進化也幾乎永不停息,依然在開發(fā)中。因此剛學(xué)習(xí)完C/C++后你在沒有任何操作系統(tǒng)、計算機網(wǎng)絡(luò)以及編譯原理等背景知識下幾乎沒有可能直接去參與構(gòu)造這些基礎(chǔ)設(shè)施,也就感覺學(xué)完沒什么用。
在這種情況下我們只能把目光從基礎(chǔ)設(shè)施轉(zhuǎn)移到應(yīng)用程序上,這里更加貼近我們的日常生活,比如寫一個小程序、開發(fā)一個網(wǎng)站等,而在這些場景下其它語言的確更有優(yōu)勢,原因很簡單,這些語言就是為這些場景而生的。
使用一個web框架可以輕易搭建出前端頁面,使用java或者python可以快速搭建出后端,這些都可以解決我們的實際問題,但要知道沒有前面提到的基礎(chǔ)設(shè)施這些應(yīng)用場景就無從談起。
很多同學(xué)應(yīng)該都玩過樂高,買過來后都是一個個很小的塑料塊。
現(xiàn)在你想用它們搭建一個汽車模型,如果直接從頭搭建就太麻煩了,可能需要組裝上萬個小小的塑料塊。
而廠家針對這部分怕麻煩的消費者提前將汽車中的輪子、車門、底盤等大的模塊用這些小塑料塊搭建出來了,你只需要將它們拼接在一起即可快速組裝成汽車模型。
這可比從一個個小塑料塊從頭搭建快多啦,但我想沒有任何一個人在用大模塊快速搭建出汽車模型的同時會覺得一個個的小塑料塊不重要沒什么用,很簡單,因為這些大模塊就是用一個個小塑料塊拼接起來的。
在這里C/C++就好比小塑料塊,高級語言就好比更大的模塊。
好啦,今天這篇就到這里。




























