今天看到一個話題:“如果不考慮失業(yè),最推薦學哪幾門編程語言?”
新手在面對編程語言的選擇時往往會猶豫不決,總想學個最好的語言。然而,"最好" 的定義見仁見智,有人追求實用性,有人追求高薪資。
而如果你聚焦于一個更純粹的目標:提升思維邏輯,感受編程的樂趣,那么可以學習什么語言呢?
借鑒著名的“金字塔原理”,我們可以將編程語言學習拆解成若干個獨立互斥且完全窮盡的維度,從而構建高效的學習模型。具體來說,我們可以從以下幾個方面入手:
類型系統(tǒng)
現(xiàn)代編程語言的類型系統(tǒng)大致可分為:
● 動態(tài)類型 vs 靜態(tài)類型
● 強類型 vs 弱類型
動態(tài)與靜態(tài)類型的區(qū)分相對明確,而強類型與弱類型之間則存在一定的爭議,這主要取決于個人對這些概念的定義和理解。
接下來,我們如何基于類型系統(tǒng)選擇性價比高的編程語言呢?這可以通過集合或矩陣分析來實現(xiàn)。
例如,對于已經掌握 JavaScript(動態(tài)弱類型)的學習者,學習 Haskell(靜態(tài)強類型)的收益顯然高于 TypeScript(靜態(tài)弱類型),因為前者能夠補足 JavaScript 所缺乏的強類型思維模型,實現(xiàn)類型系統(tǒng)維度的“完全窮盡”。
因此,對于JavaScript開發(fā)者來說,我更推薦學習Haskell,這并非因為TypeScript不值得學習,而是Haskell在類型系統(tǒng)維度上提供了更高的性價比。
編程語言排行榜
在考慮學習或使用編程語言時,可以參考一些基于編程語言人氣和熱度的排行榜,這些排行榜通常能反映出一些關鍵信息:一個語言的社區(qū)活躍度、生態(tài)系統(tǒng)的豐富性、潛在的高薪資水平以及成熟的工業(yè)標準。
例如,GitHub作為全球最大的編程社區(qū),其發(fā)布的編程語言趨勢是一個值得參考的指標。根據(jù)2023年度數(shù)據(jù),JavaScript是目前全球最受歡迎的編程語言。
當然,人氣高低只是參考因素,最終選擇仍需回歸到類型系統(tǒng)等核心維度。
我們真正要的是找到那些能互補、覆蓋所有類型系統(tǒng)的語言。就像選兩門語言,我們希望它們的結合能讓我們掌握類型系統(tǒng)的方方面面。
設計與實現(xiàn)
除了類型系統(tǒng),我們還可以從其他角度來分析和選擇編程語言,比如:
● 編譯 vs 解釋
● 內存管理機制
這些維度可以幫助我們更全面地理解每種語言的特點,我們可以通過畫出一維或二維的矩陣來比較不同語言。
但有時候也要注意一些邊界模糊的區(qū)域,某些語言可能同時具備多種特性,例如 JavaScript 介于解釋型和編譯型之間,Rust 則屬于半自動內存管理。
編程范式
編程范式是指編程的思維方式,例如面向對象編程(OOP)、函數(shù)式編程(FP)等。
現(xiàn)代編程語言大多支持多種編程范式,因此在選擇時,我們應優(yōu)先考慮能夠涵蓋盡可能多編程范式的語言,例如 JavaScript。
當然,如果想要深入學習某種特定的編程范式,也可以選擇專門為此設計的語言。例如,想要學習邏輯編程,可以選擇 Prolog。
無論是選擇精通一門語言,還是博采眾長,學習多種語言,最終目的都是為了提升自身的編程思維和解決問題的能力。