今天以 golang 為例說明如何快速入門一門計算機語言
1. 選個教程
既然是入門,要掌握的肯定不必很高階,對於一門及計算機語言,以最小最少必要的知識原則幫助我們入門, 這幾點一般足夠了:
- 基礎語法
- 語言特性(golang 最重要的語言特性就是多核和併發)
- 開發環境和構建流程: 開發、測試、釋出
- 常用標準庫
所以要挑選的教程最少要涵蓋以上幾點才能算是入門。
如何挑選?
官網 是第一個應該瞭解的地方。簡單分析一下 golang 官網的構成(看網站導航):
每個導航的內容都應該看看,對網站內容的構成形成最基本的印象,是入門該語言的第一步。然後我們再帶著提出的問題: 尋找最小最少的語言知識 按圖索驥找到我們所需要的資源。不難看出,Documents 能夠提供我們所需要的。
Golang 的 Documents 包含了環境安裝和配置,並且 Learning 部分也提供了很多入門的教程:
記住我們一開始提出的問題,只要教程涵蓋了這些點,隨便選一本就可以了。
隨便選一本會不會...太隨便?
入門的目的是為了幫助我們瞭解熟悉語言的基本特徵,不同教程可能章節安排的側重不同,講解順序有差異,但是內容都大同小異,都能夠幫助我們達到目的。一個一個對比時間成本較高,不如隨便選一本看完了再說。
隨便選一本一定要認認真真讀完,如果教程涵蓋練習最好也一併實現。
選擇 golang 入門教程的方法同樣適用於其他語言,大部分語言的官網有著和 golang 類似的結構,遵循上文提出的方法和原則,儘快入門,只有入門了才有資格對這門語言真正地評頭論足,不然你說 golang 好,好在哪裡呢,分明 PHP 才是最好的語言。
有的語言官方不會詳盡給出具體的教程,此時 Google 就能發揮大作用了。關鍵詞:language + tutorial 搜尋靠前的前 10 條結果隨便選一個。
2. Learn by doing
所謂學以致用,沒有有效的輸出,再多的輸入都是低水平勤奮的表現。有了第一步的基礎,我們已經可以用這門語言做點什麼了。
做點什麼?
記住兩個原則:
- 不要太難
- 週期不能太長
剛學會點皮毛就別指望能做出很複雜有水平的事情,以免繼續學習的熱情受到打擊。週期太長就沒有辦法得到有效及時的反饋,難以達到檢驗學習的目的。
在這兩個原則之下,隨便選。
由於我們都不是隨便的人,隨便選個專案練習可能還是有點太隨便了?。
在此推薦一個 github.com/tuvttran/pr… 通過做小專案練習的 project。
搗騰一個自己用的 blog 也是一個不錯的選擇。
理論和實踐的距離就好比是想象中的姑娘和現實中的姑娘,你想著姑娘玉面玲瓏,亭亭玉立,宛若小鳥,可能姑娘比漢子還漢子。golang 中的 nil 和 java 中的 null 完全不同,golang 的型別是後置的,golang 的函式是按值穿參,想要引用?記得寫指標。
3. 投入使用
練習完一個小專案之後,就可以在日常開發環境中使用了,此時就是讓語言幫助我們提升生產力的階段。
比如團隊內部的小專案,個人日常開發的一些批處理工作,簡單的命令列工具等都可以使用新學的語言。
一開始投入使用,可能會感覺效率比之前低了,這其實很正常,畢竟新的語言肯定沒有自己慣用的熟悉,所以才需要在日常開發中經常使用,學會用新語言思考問題和處理問題,轉換思維模式。
想要語言或工具成為自身的一部分就像自己的左右手一樣熟練,勤加練習是唯一的途徑。使用中得到反饋,利用反饋修復已有的認知。
4. 搞個大的
第三步完成以後再需要進行一次階梯性的成長以完成對語言的核心把握和真正理解,應該搞個大事情了。
所謂大,即是相對於自己當前掌握的程度而言,不是一味地追求大,這個度如何把握因人而異,因而事前評估必不可少,這幾個原則可供參考:
- 大或複雜的程度一定是自己能 hold 住或和你一起合作的人能 hold 住
- 最小功能原則投入使用和收穫反饋
- 做好隔離
- 儘快丟擲問題,不拖到最後期限
- 完整性
舉個例子,可以用 golang 替換線上生產服務的一個單一的功能模組,並且該模組即使出問題對生產服務的影響也是可控的,當然最好是不出問題。
生產環境和開發、測試環境的區別會逼迫程式設計師不得不去考慮諸如測試、部署、運維、升級、維護、效能等工程問題的方方面面,一個完整的可控的在生產環境中投入使用的專案,對積累新語言的使用經驗非常有效。
小結
計算機語言大多相通,只要有任何一門的基礎,學習其他語言都不會很難,以上 4 點也可以說是快速入門一門的語言的 4 個不同目標,分佈在學習的各個階段,只要瞄準目標,快速行動,逐個擊破,形成習慣,很短的時間內學習並掌握一門新的語言都不是難事。
Talk is cheap,show me your code,無論學習處於哪個階段,輸出都是最重要的。
wecatch 微信掃碼關注我們