為什么建議同時學多門編程語言
晨讀一本名叫《4點起床》的書,書中有一段描述與最近學習編制語言時自己的感受完全一致。算是一個小經驗,分享給大家。
書中有一章的標題為《同時學六國語言記起來比較快》,其中有兩段描述如下:
為什么我推薦大家同時學不同的語言呢?實不相瞞,我這幾年在學西班牙語時發現,在學英語的時候,如果你腦子里能有些關于其他外語的知識,掌握語言的速度會變快許多。
西班牙語和英語看似風馬牛不相及,其實兩者還是很相似的。比如“重要”,在英語里是“important”,西班牙語也是“important”,只是念法不一樣罷了。
看到這里,感覺跟自己學習編程語言的感覺完全一致。Java語言用了十多年了,因為工作需要,快速學習了Python和Golang,并精專Golang學習。在學習的過程中,最大的收獲不是學會了Golang這門編程語言,而是對Java的編程有了更深入的理解。不僅如此,對整個軟件編程都有了更進一步的理解。
舉例講幾個方面:
第一,在Java中,我們常用ArrayList來存儲一些列數據,而在Golang中常用slice來存儲一些列數據。在Java和Golang中,都存在數組,但基本上都很少用數組,而采用列表或切片。而像ArrayList或slice本身又是基于數組來實現的。
對照起來會發現,基本的底層原理都一樣,只不過不同語言的實現思路不同而已。
第二,關于HTTP請求。但單純使用Java進行API請求時,我們往往關注的是API如何使用。當學習多種語言時,你會發現不同的語言有不同的實現形式,但萬變不離其宗,都是基于HTTP協議來實現。這樣也對HTTP協議本書有了更深入的理解。當然,其他協議也是如此。
第三,關于框架。比如注冊中心,在Java中有Nacos、Eureka等實現,而在Golang中,有Consul、Etcd等實現。雖然它們可以跨語言混用,但有了這樣橫向的對比,對原本語言和框架的學習和掌握更加深刻了。
當然,還有其他許多例子。最根本的是,當你學習了多門語言時,每一個實現都有一個或多個對照,這樣對實現的底層就更加理解,而不會過多關注語言本身的語法。不僅拓寬了思路,當有了對照,也能更好理解各自實現的優缺點,以及為什么如此實現。