全文共2531字,預計學習時長8分鐘
本文默認你已經了解至少一種程式語言。
一種也不會?
別怕,文中的概念會幫助你從編程開始學起。
在學校裡老師常跟小芯說的一些東西,小芯可以分享給新手開發人員:
最困難的程式語言永遠是你將要學習的第二個程式語言。
不要因為小芯分享的故事而垂頭喪氣——小芯故事的意思是,當你開始學習如何編程,你會對編程有預先的想法。最後,你會做出比理應更多的句法連接和假設,由此,在開始學習第二種程式語言時,你必須忘記上述假設。倘若你嘗試學習第二種甚至第三種程式語言,你就應該把小芯說的牢記於心。
編程分析
世界上有許多程式語言,一下就能列舉出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吧。
如果只看的話,小芯不會了解這些程式語言,而是通過運用來學習。
所以,這裡小芯要布置任務啦,希望大家都可以挑戰一下自己,去學習一門新的程式語言~
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範