編程語言
第一個專題,選了一個不太想談的話題:編程語言。
開始有一點抵觸,可能和現在稱呼某某語言的程序員有關係。
比如我畢業之前一直做Linux下多線程網路編程,畢業之後是C++遊戲後台開發程序員,後面從事內核開發,是C程序員,在現在我只能算是一個Python程序員。這種稱呼,程序員被打上了編程語言的標籤,在現在司空見慣,但會招致程序員的反感。不期望叫什麼工程師,起碼得稱呼我們,用代碼來解決問題的程序員。
編程語言我學了幾門,稍微熟悉的可能只剩下一兩門。程序員一生,應該得學幾種類型不一樣的語言,才能叫做真正的軟體工程師。這和編程思想有關。
首先,你得熟悉一門編譯型的語言,那麼學校教的C/C++/C#/Java就有了用處。
然後,你得熟悉一門腳本語言,現在的Python,以前的PHP,ASP什麼的,你得接觸過。
最後,你想試試函數式編程語言,那麼Clojure 還是Haskell你猶豫過? 或者最近很火的Scala。
在這裡還沒有列平台,分工等分類,如果你還想當全棧工程師,那麼你需要學的語言至少得3門以上。
最近兩年我花心思學習的新語言不算多,主要是Go和Rust。
學習Go也有兩年了,一直沒有用Go參與過大型的項目開發。開始的時候,看了goroutine的C實現,覺得Golang這語言要火,這兩年在國內確實火了。Go在服務端並發方面優勢明顯,特別是在微服務架構流行的今天。
關於Go的開發效率,我並沒有經驗,應該不算低。它語法簡單,性能高,原生支持並發,而且部署也很方便依賴不多。現在很多做安全工具的同學,一般都選擇用Go來開發。
2年多前,我是因為要去讀docker的源碼,分析docker的cve,才學的Go語言。那個時候Go給我的感覺就是語法怪異且嚴格。像docker這種應用,會給一門語言帶來大量的使用者,因為它就是一個成功的榜樣。
再說一下Rust。
直到最近,我也還在學習Rust。對於Rust的前途,我非常有信心,也推薦給了身邊的很多人。我認為Rust是C++的替代者,後面會有一個爆發,也可能是統一所有端的一門語言。
記得前不久在Stack Overflow上的一個調查,Rust被評為最受程序員喜愛的語言,說明Rust有它的魅力。Rust在安全,速度和並發上都設計得非常好,現在也有了非常成功的項目——Firefox的核心引擎 Servo/Project Quantum。
今年初斯坦福開了一門操作系統的課程CS140e,使用Rust加樹莓派來寫操作系統,算是非常大膽的嘗試。有心有時間的同學可以嘗試跟一下作業。
最後,一門語言是否學習和使用,與是否喜歡不一定有強關係,希望每個程序員都找到自己喜歡的語言。
資源列表:
1.Rust官方文檔 https://www.rust-lang.org/
2.Go協程實現原理筆記 https://github.com/xxg1413/go
3.CS140e: An Experimental Course on Operating Systems https://web.stanford.edu/class/cs140e/
公眾號鏈接:
編程語言歡迎關注我的微信公眾號:
http://weixin.qq.com/r/E0jL053E4sCdrdmw9x0B (二維碼自動識別)
推薦閱讀: