為什么感覺學完C/C++后寫不出有用的東西?
最近瀏覽到一個很有趣的問題,有國外網友問出這樣的一個問題:為什么感覺學完C/C++后做不出有用的東西?然后評論里就熱鬧了,留言區火力全開。
這是其中一個老哥的留言:
「你正在使用的操作系統就是用C語言寫的;
能讓你在網站上問出一個如此愚蠢問題的計算機網絡也是用C/C++寫的;
你智能手機上運行的操作系統,C/C++寫的;
驅動你路由器的軟件,C/C++寫的;
Java JVM,C++寫的;
幾乎驅動整個數字世界的Linux內核,毫無疑問,C語言寫的」
你可以看下linux內核的語言組成,絕大部分都是C語言寫的,還有一少部分匯編。
可以看到,操作系統、TCP/IP協議棧、編譯器、解釋器、驅動程序等這些都是基礎設施,它們是整個數字世界的基石。
最重要的是幾乎沒有重新發明的必要性,除去教學等場景外,我們幾乎沒有可能要自己去實現一個內核、自己寫一遍TCP/IP協議棧、自己寫一個編譯器等等。
當然,這些基礎設施的實現也是有相當的難度的,不管是理論上還是工程上,就以操作系統來說,現在在理論上依然有宏內核與微內核的爭論,工程實踐上Linux內核進化也幾乎永不停息,依然在開發中。因此剛學習完C/C++后你在沒有任何操作系統、計算機網絡以及編譯原理等背景知識下幾乎沒有可能直接去參與構造這些基礎設施,也就感覺學完沒什么用。
在這種情況下我們只能把目光從基礎設施轉移到應用程序上,這里更加貼近我們的日常生活,比如寫一個小程序、開發一個網站等,而在這些場景下其它語言的確更有優勢,原因很簡單,這些語言就是為這些場景而生的。
使用一個web框架可以輕易搭建出前端頁面,使用java或者python可以快速搭建出后端,這些都可以解決我們的實際問題,但要知道沒有前面提到的基礎設施這些應用場景就無從談起。
很多同學應該都玩過樂高,買過來后都是一個個很小的塑料塊。
現在你想用它們搭建一個汽車模型,如果直接從頭搭建就太麻煩了,可能需要組裝上萬個小小的塑料塊。
而廠家針對這部分怕麻煩的消費者提前將汽車中的輪子、車門、底盤等大的模塊用這些小塑料塊搭建出來了,你只需要將它們拼接在一起即可快速組裝成汽車模型。
這可比從一個個小塑料塊從頭搭建快多啦,但我想沒有任何一個人在用大模塊快速搭建出汽車模型的同時會覺得一個個的小塑料塊不重要沒什么用,很簡單,因為這些大模塊就是用一個個小塑料塊拼接起來的。
在這里C/C++就好比小塑料塊,高級語言就好比更大的模塊。
好啦,今天這篇就到這里。