Linux中國

五步學會任何編程語言

有些人喜歡學習新的編程語言,也有一些人覺得學習一種都是可望不可及的事情。在本文中,我將向你展示如何像程序員一樣思考,這樣你就可以自信地學習任何一門你想要學習的編程語言

事實上,一旦你學會了如何編程,你使用的編程語言就不再是一個障礙,而更像是一種形式。實際上,這就是教育家們倡導 讓孩子儘早學習編程 的眾多原因之一。不管他們的入門語言有多簡單,這種編程的邏輯和兒童們(或成人學習者)以後可能遇到的其他語言的邏輯有著想通之處。

只需有一點編程經驗(你可以從我們這裡的幾篇介紹性文章中獲得),你就可以在短短几天內(有時更短)學習任何編程語言。這並不是魔法,你也確實要為此付出一些努力。誠然,學習一種編程語言每個的可用庫,或者學習打包代碼以及進行交付的細微差別,需要的時間遠遠不止幾天。但是,就入門來說,比你想像中的要容易許多,剩下的則要通過不斷練習來完成。

當有經驗的程序員靜下心來學習一門新的編程語言時,他們會尋找五樣東西。只要你知道了這五件事,你就可以開始編碼了。

1、語法

![Syntax](/data/attachment/album/202011/19/230020xjiui6jonjnedwo4.png "Syntax")

語言的語法描述了代碼的結構。這包括如何逐行編寫代碼,以及用於構造代碼語句的實際單詞。

例如,Python 以使用縮進來指示一個代碼塊在哪裡結束以及另一代碼塊在哪裡開始而聞名:

while j < rows:
    while k < columns:
        tile = Tile(k * w)
        board.add(tile)
        k += 1
    j += 1
    k = 0

Lua 只是使用關鍵字 end

for i,obj in ipairs(hit) do
  if obj.moving == 1 then
     obj.x,obj.y = v.mouse.getPosition()
  end
end

JavaC、C++ 之類的編程語言使用花括弧:

while (std::getline(e,r)) {
  wc++;
  }

編程語言的語法還包括包括庫、設置變數和終止行等內容。通過練習,你將學會在閱讀示例代碼時下意識地識別語法需求(和慣例)。

實踐

當學習一門新的編程語言時,要努力理解它的語法。你不需要去記住它,只需要知道如果忘記了以後去哪裡查找。使用好的 IDE 也很有幫助,因為很多 IDE 在出現語法錯誤時會提醒你。

2、內置函數和條件

![built-in words](/data/attachment/album/202011/19/230059j2dqtq55d2d8amvq.png "built-in words")

就像自然語言一樣,編程語言可以識別的合法單詞是有限的。這個辭彙表可以使用其他庫進行擴展,但是核心語言知道一組特定的關鍵字。大多數語言並沒有你想的那麼多關鍵字。即使在像 C 語言這樣非常低級的語言中,也只有 32 個關鍵字,比如 fordowhileintfloatcharbreak 等等。

了解了這些關鍵字,你就可以編寫基本的表達式,也就是構建程序的代碼塊。許多內置的關鍵字能幫助你構建條件語句,這些條件語句影響整個程序的流程。例如,如果你想編寫一個允許單擊和拖動圖標的程序,那麼你的代碼就必須檢測用戶的滑鼠指針何時位於圖標上。只有當滑鼠游標位於圖標外部邊緣相同的坐標時,才執行導致使滑鼠抓取圖標的代碼。這是一個經典的 if / then 語句,但不同的語言可以用不同的方式表達。

Python 使用 ifelifelse 的組合來實現條件語句,但是並不顯式的關閉語句:

if var == 1:
    # action
elif var == 2:
    # some action
else:
    # some other action

Bash 使用 ifelifelse,並且使用 fi 來結束語句:

if [ "$var" = "foo" ]; then
   # action
elif [ "$var" = "bar" ]; then
   # some action
else
   # some other action
fi

然而 C 和 Java, 使用 ifelseelse if,用花括弧把它們括起來:

if (boolean) {
   // action
} else if (boolean) {
   // some action
} else {
   // some other action
}

各種編程語言雖然在關鍵字的選擇和語法上有細微的變化,但基本是相同的。學習如何在編程語言中定義條件語句,包括 if / thendo...whilecase 語句。

實踐

要熟悉編程語言能夠理解的關鍵字集。在實踐中,你的代碼將不僅僅包含編程語言的關鍵字,可以肯定的是,有包含很多簡單函數的庫來幫助你做一些事情,諸如將輸出列印到屏幕或顯示窗口之類。然而,驅動這些庫的邏輯始於編程語言的內置關鍵字。

3、數據類型

![Data types](/data/attachment/album/202011/19/230117rm7mzwwgmvglm5wv.png "Data types")

代碼是用來處理數據的,因此你必須學習編程語言如何識別不同類型的數據。所有編程語言都能理解整數,大多數的語言能理解小數和單個字元(abc 等等)。它們通常被表示為 intfloatdoublechar,當然,語言的內置辭彙表會告訴你如何引用這些實體。

有時候,在編程語言中內置了一些額外的數據類型,也有時是通過引用庫來啟用複雜的數據類型。例如,Python 可以識別關鍵字為 str 的字元串,但是 C 語言的代碼中必須包含 string.h 頭文件才能實現字元串特性。

實踐

庫可以為你的代碼解鎖各種類型的數據,但是學習編程語言中包含的基本數據類型是一個明智的起點。

4、運算符和解析器

![Operators](/data/attachment/album/202011/19/230133u7d2qoeznzonngz0.png "Operators")

一旦你理解了編程語言可處理的數據類型,就可以學習如何分析這些數據了。幸運的是,數學這門學科是相當穩定的,所以算數運算符在許多語言中通常是相同的(或至少非常相似)。例如,兩個整數相加通常用 + 符號完成,而測試一個整數是否大於另一個整數通常用 > 符號完成。測試是否相等通常使用 == 來完成(是的,是兩個等號,因為通常一個等號用來賦值)。

當然也有一些例外,比如像 Lisp 和 Bash 語言算數運算符就不是如此,但與其他語言一樣,這只是一個心理翻譯的問題。一旦你了解了表達方式有何不同,很快就可以適應它。快速瀏覽一下一門編程語言的算數運算符通常足以讓你了解算數操作是如何完成的。

你還需要知道如何比較和操作非數值數據,比如字元和字元串。這些通常是通過編程語言的核心庫來進行的的。例如,Python 提供了 split() 方法,而 C 語言需要引入頭文件 string.h 來提供 strtok() 函數。

實踐

了解用於處理基本數據類型的基本函數和關鍵字,並尋找可幫助你完成複雜操作的核心庫。

5、函數

![Class](/data/attachment/album/202011/19/230206ri48npt8ptv8jrnp.png "Class")

代碼不只是計算機的待辦清單。通常情況下,在編寫代碼時你往往希望向計算機提供一組理論條件和一組操作指令,當滿足每個條件時計算機就會採取這些操作。儘管使用條件語句以及數學和邏輯運算符進行流控制可以做很多事情,但是引入了函數和類之後,代碼會變得更加高效,因為它們使你可以定義子程序。例如,如果應用程序非常頻繁地需要一個確認對話框,那麼將其作為類的實例編寫一次要比每次需要它時重新編寫實現起來要容易得多。

你需要學習如何在編程語言中定義類和函數。更準確地說,你首先需要了解編程語言中是否支持類和函數。大多數現代語言都支持函數,但是類是面向對象的編程語言中所特有的。

實踐

學習語言中可用的結構,這些結構可以幫助你高效地編寫和使用代碼。

你可以學到任何東西

學習編程語言,就其本身而言,是一種編碼過程中的子程序。一旦理解了代碼如何工作,你所使用的語言就只是一種傳遞邏輯的媒介。學習一門新編程語言的過程幾乎都是一樣的:通過簡單的練習來學習語法,通過學習辭彙來積累進行複雜動作的能力,然後練習、練習、再練習。

via: https://opensource.com/article/20/10/learn-any-programming-language

作者:Seth Kenlon 選題:lujun9972 譯者:xiao-song-123 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國