從零到一百,如何快速學習新編程語言?
本文默認你已經了解至少一種編程語言。
一種也不會?
別怕,文中的概念會幫助你從編程開始學起。
在學校里老師常跟小芯說的一些東西,小芯可以分享給新手開發人員:
最困難的編程語言永遠是你將要學習的第二個編程語言。
不要因為小芯分享的故事而垂頭喪氣——小芯故事的意思是,當你開始學習如何編程,你會對編程有預先的想法。最后,你會做出比理應更多的句法連接和假設,由此,在開始學習第二種編程語言時,你必須忘記上述假設。倘若你嘗試學習第二種甚至第三種編程語言,你就應該把小芯說的牢記于心。
編程分析
世界上有許多編程語言,一下就能列舉出5000多種,但編程語言排行指數列出了前250名,位于列表的前20名編程語言有相似的標準程序庫,這不足為奇。
在小芯看來,剔除“素材資料”所有額外的事情是思考編程很好的方式,由此,你接觸到的就只是跟編程有關的必要事情。
原子
每門編程語言的每個層面都可以用true和false來看待(歸結為真假)。為什么呢?因為電流就是這樣工作的——要么有電荷,要么沒有。記憶以0和1二進制代碼的形式存儲價值,該比特(二進制信息單位)要么帶電,要么不帶電。
八個比特等同于一個字節,這足夠你在ASCII表上列出任何一個字符。比特就是這樣一種翻轉順序,這種順序提供了十進制字符的表示方法,計算機能夠把這種表示轉換為字母。

(如何創建Hello一詞的基本二進制表示)
了解這一概念的原因后,理解接下來的內容就比較容易了。
工具
工具都是一樣的,雖然每個人學習這些工具的順序可能不同,以下是小芯學習這些工具的順序。
變量
這看起來非常簡單,但認真來講,你該如何創造變量?
算符
何為算符?怎么使用算符?假定你已有基本的數學算符知識,但邏輯算符是什么呢?“AND”這個算符是該被拼寫為“and” 、還是“AND,”呢?又或是這個詞運用諸如“&&?”這樣的符號?
條件
令人吃驚的是,關于Swift和 Python兩種語言,小芯讀到最多的是與決策有關。下一步你需要了解的是如何在自己的程序里作出決定。你在嘗試學習的編程語言會用到傳統的“if/elseif/else”判斷結構、還是一些諸如“if/elif/else?”更Pythonic的編程語言?你的編程語言有”switch” 或“guard”語句嗎?
循環
如何循環執行重復的任務?該編程語言包含for循環、while循環、do-while循環還是for-each語句?
函數
可能創造出函數嗎?如果可以,你會如何處理?如何把參數包含在函數內?了解如何運用這些函數會節省時間,使生活更輕松。
類別和結構
你學習的這種編程語言能理解類別和結構的概念嗎?這聽起來像是個蠢問題,但有一些編程語言確實沒有,或者只有一種類別和結構。假如這種語言真的沒有,那么又該如何創建類別和結構呢?這種類別需要用到構建函數或初始化的方法嗎?
錯誤處理
錯誤不可避免。當出現錯誤,該語言有穩妥的處理問題的辦法嗎?這時你又會如何使用這種語言?是會用“try/catch”、 “try/except”還是別的辦法?該編程語言有像“else” 或 “finally”這樣允許選擇差錯的子句嗎?
測試
怎樣測試編碼?是用已經建好的算法庫還是必須下載獨立的工具來測試?
所有這些工具都應該適用于最現代的編程語言,甚至是像COBOL這些較早的編程語言大部分也具備這些工具,但可能叫法不同,例如可能會被叫做段落或復寫本。
逐步優化
一旦你理解這些工具,下一步你需要做的是使用工具然后編寫一個應用程序。你可以通過閱讀文獻了解一門編程語言,但只有真正編寫一些應用程序,才能了解該語言。
通過編寫一個程序,你不得不像某程序員那樣思考。小芯可以說自己知道C++這門語言,因為小芯上過有關課程,閱讀過有關文獻,但直到用C++這門編程語言的特有特征完成一個程序的編寫,小芯才真正了解這門語言。
撲克牌的二十一點(Blackjack)是一個比較好的初學項目,它需要變量、算符、條件、循環(基于許多玩家)、函數、類別/結構以及差錯處理。你可以把潛在故障包含在測試情況內,比如牌用完這種情況。
其他一些項目如射擊(Shoots)、梯子(Ladders)、快艇骰子(Yahtzee)或自動售貨機(SlotMachine)也是較好的初學項目。
對于一些進階項目來說,可以嘗試再創造一個像《大富翁》這樣的游戲,多關注運作方式,使其基于文本運行。
面對困難的任務(例如跳過雙下或分離blackjack的特征),如果偷懶,就只會限制自己對該編程語言的理解,記住這一點至關重要。
還有呢?
小芯知道,上述內容不是一門編程語言的必要要素。事實是,你可以用上述列舉的工具編寫任何東西,但包含在標準算法庫內的附加功能會使你的編寫更加容易。大部分的標準算法庫都有相同的功能,所以你可以使用編程語言間類似的名稱。
使用一門編程語言進行的工作越多,關于標準算法庫就會發現越多,但一定要提前學習這些工具。.
當你用一門編程語言工作,要試著找出這種語言的優缺點,這些會幫助你了解針對特定問題選擇使用特定編程語言。
需要快速做一些數據科學?去看些Python程序包吧。或需要編寫一個快速服務?那就去看看C語言或Go語言吧。編寫網頁服務器?那就去看看Java或Python吧。
如果只看的話,小芯不會了解這些編程語言,而是通過運用來學習。
所以,這里小芯要布置任務啦,希望大家都可以挑戰一下自己,去學習一門新的編程語言~