沒學過C語言的代價
本文作者Ozan Onay為Bradfield電腦科學學院教師
C語言確實顯得有些老舊。最近一版權威性的C語言還是1988年釋出的;在接近30年的時間裡,這個語言的作者一直都沒有對它進行過更新,可見它有多過時了。現在,一說到必須有所瞭解的程式語言,大家都會想到Rust、Go或是Clojure,卻很少有人會想到C語言。
但是我的同事Myles和我都不是追求潮流的人,因此我們堅持讓所有學生都熟練掌握C語言。
之所以要求學生學習這門古老的程式語言,我們有下面4個理由:
- 在灣區的web和移動初創企業之外的地方,C語言依然是一個被廣泛應用的程式語言;
- 許多現代程式語言都受到了C語言的影響;
- C語言能讓你像計算機一樣思考;
- 在編寫軟體的時候,你現在所使用的大部分工具,都是使用C(或C++)語言所開發的。
對於第一條理由,如果你就是想在灣區的web或是移動初創企業找一份工作的話,你可以忽略它。但是第二條原因是你無法迴避的。而大多數工程師,都應該重視第三條理由,要想做好計算機工作,你就必須要理解計算機的思考方式。對於第四條理由,它也是非常難以忽略的。
掌握C語言,意味著你可以更好的理解你所使用的各種工具。例如,對於web開發者來說,他們必須要透徹的理解瀏覽器、作業系統以及所使用的各種語言,而這一切都是以C語言為基礎的。
我們的大多數學生,在使用直譯式語言的時候,都會同時使用那些用C語言所編寫的流行的實施工具。我們經常做這樣一個聯絡:讓學生們編寫一個Python位元組碼直譯器,從而讓他們更好的理解堆疊式機器和直譯式語言;在進行這個練習的時候,學生需要仔細閱讀CPython的部署。另外,ruby的實施參考也是用C語言編寫的,還有大部分JavaScript部署,他們是用C++編寫的。
在學習hashmaps和動態陣列的時候,我們有兩種方式:第一,自己進行部署,使用一種能讓我們具體對記憶體佈局進行思考的語言;第二,閱讀相關優秀的部署例項。學生要想理解Python列表或是ruby陣列的工作方式,我們同樣有兩種方式:第一,讓他們從頭自己編寫一個版本;第二,閱讀標準庫部署的資源——在沒有接觸過C語言的情況下,要想徹底理解這些概念,基本上是不可能的事情。
如果不掌握C語言,要想了解作業系統也會變得更加困難。我們現在所使用的大部分作業系統,都是用C語言編寫的,C語言的標準庫與syscall介面緊密相連,而且大部分與作業系統相關的概念都需要你先熟悉C語言。
在計算機網路方面,雖然對C語言不熟練並不會影響你的日常工作,但是那些要想了解作業系統TCP/IP對戰的從業者,會逐漸意識到C語言的重要性。
最後再來說說資料庫,關鍵值儲存,訊息佇列和其他分散式作業系統技術,要想獲得較高的效能,它們都需要你對C語言有所瞭解。
很多軟體工程師可能對C語言並不瞭解,在某一個狹小領域內的日常工作,或許並不需要你掌握基礎知識。但是我們要求學生必須要打好基礎,而C語言就是電腦科學工作的先決條件。如果你也有著較高的目標,那麼我建議你暫時擱置那些潮流語言,花幾個週末的時間去學學看上去有些過時的C語言。
相關文章
- 谷歌、阿里都在使用的dart程式語言,你學過沒?谷歌阿里Dart
- C語言學習方法,怎麼學習C語言?C語言
- 漫畫 | C語言哭了,過年回家,只有我還沒物件C語言物件
- C/C++語言的學習方向C++
- C語言:一種高效、易學的程式語言C語言
- C語言小白走過的彎路C語言
- 我的C語言學習之路C語言
- DPC++中的現代C++語言特性C++
- C語言再學習C語言
- C語言學習心得C語言
- 重新學C語言2C語言
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- 如何用最短的時間學會C語言,並掌握C語言的精髓所在?C語言
- C語言真的很難嗎?那是你沒看這張圖,化整為零輕鬆學習C語言。C語言
- 現代編譯原理C語言描述pdf編譯原理C語言
- C 語言學習筆記筆記
- C語言深入學習二C語言
- C語言學習 相同元素C語言
- C語言學習筆記C語言筆記
- c語言基礎學習C語言
- C語言指標學習C語言指標
- 細學C++之C++語言的特點C++
- 3- C語言編譯過程C語言編譯
- 何為程式語言?為什麼要學C語言?C語言
- C語言與嵌入式C語言的區別C語言
- C語言學習筆記--C運算子C語言筆記
- C語言學習的幾個階段C語言
- go語言與c語言的相互呼叫GoC語言
- C語言的編譯連結執行過程C語言編譯
- C語言學習記錄_2019.02.06C語言
- C語言C語言
- pta10-1 查詢沒有選修‘C語言‘課程的學生 (10分)C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- 初學計算機語言者(C語言,C++,java,pytion,C#)計算機C語言C++JavaC#
- 1.C語言有關的小學習C語言
- 學習C語言的第一天C語言
- 沒上過大學想學IT?建議你先從這幾門程式語言開始
- 再白也能學會的C-C語言的前世今生C語言
- (原創) C語言初學者建議的書籍 (C/C++) (C)C語言C++