Python 等高級語言盛行,我還有必要學 C 嗎
知乎上有人邀請我回答類似的問題,由于我擅長 Python,于是特別把這里的標題改為 Python 相關,不傷大雅。
這種問題其實是個好問題,而且這種問題與其他圈子的一些問題是類似的,比如:
物理學
那些牛逼的人,他們不僅細到最微觀的量子層面,還宏觀到了宇宙層面,看似毫不相干,其實息息相關。
宏觀世界的物理規律不斷被微觀世界的奇妙法則修正,如果不懂微觀的那些本質,是很難明白你所面對的宏觀體系,比如你拿地球表面上人類可感知的經典物理去描述更宏觀的宇宙物理,你會發現大量不可思議沒法解釋,究其原因就是缺乏微觀的更本質了解。
人類學
那些牛逼的人,他們不僅細到最微觀的基因層面,還宏觀到群體行為層面(比如經濟、政治、社交等)。
更牛的是,拉遠一看加了個時間維度,結合解剖學、細胞學、分子生物學、遺傳學、醫學等各種分支學科發展,他們發現了偉大的進化論。
其實我能舉一堆類似的例子出來。
回到我們這個計算機科學,首先最底層的電子、計算機結構、指令集、匯編到 C 等等等,C 是極其偉大的發明,最早且最成功面向人類的語言,所以后期大量系統都是基于 C 體系出來的,比如偉大的那些操作系統,還有你現在看到這個回答的底層復雜解析…
我們在不斷研究計算機科學各類知識體系時,為了快速入門,我們會傾向于接觸那些更人類化更簡單的語言,如偉大的 Java、Python、JavaScript 等,甚至到了更智能的時代,我們與計算機的交流真的可能出現完全自然語言,當然這個目前來看難度極大。
我們是否需要學 C,甚至更底層的玩意?其實這和我們所面對的工程場景有關,比如絕大多數工程場景下,Java、Python、JavaScript 工程師絕對不需要去碰 C,他們能把所掌握的這些語言應用得如火純青已經很難得了。
題外話下:
大家一定要記住,討論任何語言優劣都應該有對應的工程場景存在,你非得流氓地說 C 就是比 JavaScript 強大,那好,你用 C 去實現 HTML 的 DOM 操作試試…
那我們到底要不要學 C?對于那些探索底層奧秘的你來說,我建議你學,這絕對是一門非常保值的語言,并且不僅要學 C,還應該深度了解計算機那些基礎知識、歷史八卦(為什么會有計算機這玩意,為什么是圖靈,為什么是馮諾伊曼,為什么是二進制,為什么會有 C,為什么有 Internet,為什么有協議,為什么有字符集,為什么有大量標準,為什么為什么為什么!),甚至應該去了解人性,此時你會發現,你的世界觀已經遠遠超越了大多數人,你看待整個計算機體系將擁有更深邃的眼光,而不再是「PHP 就是世界上最強大的語言」這類的人云亦云。
對我來說,我對知識的渴望絕不僅是你想象的這些,我覺得,人那,很多時候就是見識太少,多了后,我這種思考都會了。
我還得補充下,我也沒你想象的那樣強大,但是一直在努力:)
來自:http://mp.weixin.qq.com/s?__biz=MzA3NTEzMTUwNA==&mid=208003947&idx=1&sn=350ebc7f541660c7b7f4907f2bc3d012