本文假定你至少已掌握了一門編程語言,然后,可以幫助你更好學習編程。

作者 | Bob Roebling

譯者 | 彎月,責編 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下為譯文:

上學的時候,一位老師在與新手開發(fā)人員分享經(jīng)驗的時候曾說:最難學的編程語言是第二門語言。

不要為此感到難過,這句話的意思其實是說,在你第一次學習編程時,就已經(jīng)對編程有了一些先入為主的想法。你會在語法上做很多的聯(lián)想和假設。因此,在學習第二門語言時,你必須首先忘掉這些假設。在你學習第二門甚至是第三門語言時,一定要牢記這一點。

1.剖析編程

現(xiàn)有的編程語言已經(jīng)超過了5,000種,但是TIOBE指數(shù)只列出了前250種語言。而排名在前20的編程語言都擁有相似的標準庫,這絕非偶然。

我認為思考編程的最佳方法是,剔除所有的“多余部分”,剩下的就只有必需品了。

2.基本組成部分

每種語言的每個方面都可以歸結(jié)為真與假。為什么?電的工作方式就是這樣:要么有電,要么沒電。內(nèi)存以0和1的形式存儲值,這個最基本的單位叫做比特,而比特要么為真要么為假。

8比特等于一個字節(jié),足以表示ASCII表中的任何字符。這些比特以特定的順序翻轉(zhuǎn),以提供字符的十進制表示形式。計算機知道如何將這種表示形式轉(zhuǎn)換為字母。

基本的二進制表示形式,表示了單詞Hello。

理解這個概念后,后面的內(nèi)容就很好理解了。

3.工具

所有語言中的這些工具都是相同的,你可以按照任意順序?qū)W習,但是我通常會采用以下順序:

變量

這似乎很簡單,但話說回來,如何創(chuàng)建變量呢?

運算符

什么是運算符,如何使用?你明白基本的數(shù)學運算符,但是你明白邏輯運算符嗎?“AND”運算符的正確拼寫是“and”還是“AND”,還是使用諸如“&&”之類的符號?

條件語句

出人意料的是,我寫的最受歡迎的Swift和Python文章都與決策有關(guān)。接下來,你需要知道如何在程序中做出決定。你學習的語言使用的是傳統(tǒng)的“ if/else if/else”,還是像Python一樣使用“ if/elif/else?你的語言是否帶有“switch”或“guard”語句?

循環(huán)語句

如何遍歷重復的任務?你學習的編程語言否包含for循環(huán)、while循環(huán)、do-while循環(huán)或for-each語句?

函數(shù)

是否可以創(chuàng)建函數(shù)?如果可以,那么該怎么創(chuàng)建?如何在這些函數(shù)中包含參數(shù)?你是否知道如何正確使用函數(shù)才能節(jié)省時間,并減輕你的工作負擔?

類和結(jié)構(gòu)

這種語言是否有類或結(jié)構(gòu)的概念?這個問題聽起來有點愚蠢,但有些語言要么沒有,要么只有一種。如果有,那么該創(chuàng)建類或結(jié)構(gòu)?類是否需要構(gòu)造函數(shù)或初始化方法?

錯誤處理

錯誤是不可避免的。當出現(xiàn)錯誤時,這種語言是否擁有強大的錯誤處理解決方案,你又將如何使用呢?應該使用“ try/catch”、“ try/except”還是其他語句?是否還有其他子句,比如能進行其他處理的“else”或“finally”?

測試

如何測試代碼?是否有用于測試的內(nèi)置庫,還是說你必須下載單獨的工具?

大多數(shù)現(xiàn)代編程語言都包含上述工具。即使是稍舊的語言(例如COBOL)也擁有大多數(shù)工具,只不過它們有不同的稱謂,例如pharagraph或copybook。

4.

實戰(zhàn)

在了解這些工具后,接下來要做的就是使用這種語言并編寫應用程序。你可以通過閱讀文檔來學習一種語言,但是直到你編寫一些應用程序之后,才能真正掌握這種語言。

編寫應用程序能強迫你像那門語言的程序員那樣思考。在參加了C的課程并閱讀了有關(guān)C++的文檔后說,我可以我了解C++,但是只有真正使用C++特有的功能編寫應用程序后,才算真正掌握了C++。

二十一點(Blackjack)是一個不錯的入門項目。二十一點需要用到變量、運算符、條件、循環(huán)(根據(jù)玩家的數(shù)量)、函數(shù),類/結(jié)構(gòu)和錯誤處理。你還可以嘗試潛在故障的測試用例,例如牌發(fā)完了等。

還有一些其他的入門項目,比如爬樓梯游戲、快艇骰子或老虎機等游戲。

如果想嘗試更高級的內(nèi)容,則可以嘗試重新創(chuàng)建“大富翁”之類的游戲。多多思考游戲的機制,界面以文本為基礎(chǔ)即可。

請務必記住,如果你不愿接受有難度的挑戰(zhàn)(例如不去嘗試二十一點中的雙倍下注或拆牌功能),那么你對這種語言的理解就會很有限。

5.還有什么?

本文無法涵蓋語言必須提供的所有內(nèi)容。事實上,你可以利用上面介紹的工具編寫任何內(nèi)容,標準庫中包含的其他功能只不過減輕了編程的負擔。大多數(shù)標準庫都包含相同的功能,因此在各個語言之間也享有相似的名稱。

隨著使用語言的次數(shù)增多,你可以從標準庫中找到更多的信息,但是一定要先學習這些工具。

在使用某種語言的時候,你需要搞清楚語言本身的優(yōu)缺點。這可以幫助你決定針對某個特定的問題應該使用何種語言。

如果你需要快速進行一些數(shù)據(jù)科學研究,那么可以參考Python或R的幾個包。如果你需要快速編寫一個服務,那么可以考慮C或Go。如果你需要Web服務器,則可以考慮JAVA或Python。

光靠看書或文章不足以學好一門編程語言,你需要真正的實戰(zhàn)。

學習新語言是一種挑戰(zhàn),祝你好運!

原文:https://medium.com/better-programming/how-to-learn-any-new-programming-language-quickly-94996895669b

作者:Bob Roebling,高級系統(tǒng)管理員和技術(shù)傳播者,擁有多種編程語言的背景。

本文為 CSDN 翻譯,轉(zhuǎn)載請注明來源出處。

【END】

1.《快速學編程 如何快速學習一門新的編程語言?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《快速學編程 如何快速學習一門新的編程語言?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/keji/346657.html