五步學(xué)會任何編程語言 | Linux 中國

只需一點編程經(jīng)驗,你就可以在短短幾天內(nèi)(有時更少)學(xué)會一種新編程語言。

(本文字?jǐn)?shù):3842,閱讀時長大約:6 分鐘)

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

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

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

當(dāng)有經(jīng)驗的程序員靜下心來學(xué)習(xí)一門新的編程語言時,他們會尋找五樣?xùn)|西。只要你知道了這五件事,你就可以開始編碼了。

1、語法

Syntax

語言的語法描述了代碼的結(jié)構(gòu)。這包括如何逐行編寫代碼,以及用于構(gòu)造代碼語句的實際單詞。

例如,Python 以使用縮進(jìn)來指示一個代碼塊在哪里結(jié)束以及另一代碼塊在哪里開始而聞名:

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

Lua 只是使用關(guān)鍵字 end

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

Java、C、C++ 之類的編程語言使用花括號:

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

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

實踐

當(dāng)學(xué)習(xí)一門新的編程語言時,要努力理解它的語法。你不需要去記住它,只需要知道如果忘記了以后去哪里查找。使用好的 IDE 也很有幫助,因為很多 IDE 在出現(xiàn)語法錯誤時會提醒你。

2、內(nèi)置函數(shù)和條件

built-in words

就像自然語言一樣,編程語言可以識別的合法單詞是有限的。這個詞匯表可以使用其他庫進(jìn)行擴展,但是核心語言知道一組特定的關(guān)鍵字。大多數(shù)語言并沒有你想的那么多關(guān)鍵字。即使在像 C 語言這樣非常低級的語言中,也只有 32 個關(guān)鍵字,比如 for、dowhile、intfloat、char、break 等等。

了解了這些關(guān)鍵字,你就可以編寫基本的表達(dá)式,也就是構(gòu)建程序的代碼塊。許多內(nèi)置的關(guān)鍵字能幫助你構(gòu)建條件語句,這些條件語句影響整個程序的流程。例如,如果你想編寫一個允許單擊和拖動圖標(biāo)的程序,那么你的代碼就必須檢測用戶的鼠標(biāo)指針何時位于圖標(biāo)上。只有當(dāng)鼠標(biāo)光標(biāo)位于圖標(biāo)外部邊緣相同的坐標(biāo)時,才執(zhí)行導(dǎo)致使鼠標(biāo)抓取圖標(biāo)的代碼。這是一個經(jīng)典的 if / then 語句,但不同的語言可以用不同的方式表達(dá)。

Python 使用 if、elifelse 的組合來實現(xiàn)條件語句,但是并不顯式的關(guān)閉語句:

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

Bash 使用 if、elif、else,并且使用 fi 來結(jié)束語句:

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

然而 C 和 Java, 使用 if、elseelse if,用花括號把它們括起來:

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

各種編程語言雖然在關(guān)鍵字的選擇和語法上有細(xì)微的變化,但基本是相同的。學(xué)習(xí)如何在編程語言中定義條件語句,包括 if / then、do...whilecase 語句。

實踐

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

3、數(shù)據(jù)類型

Data types

代碼是用來處理數(shù)據(jù)的,因此你必須學(xué)習(xí)編程語言如何識別不同類型的數(shù)據(jù)。所有編程語言都能理解整數(shù),大多數(shù)的語言能理解小數(shù)和單個字符(a、b、c 等等)。它們通常被表示為 int、 float、doublechar,當(dāng)然,語言的內(nèi)置詞匯表會告訴你如何引用這些實體。

有時候,在編程語言中內(nèi)置了一些額外的數(shù)據(jù)類型,也有時是通過引用庫來啟用復(fù)雜的數(shù)據(jù)類型。例如,Python 可以識別關(guān)鍵字為 str 的字符串,但是 C 語言的代碼中必須包含 string.h 頭文件才能實現(xiàn)字符串特性。

實踐

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

4、運算符和解析器

Operators

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

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

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

實踐

了解用于處理基本數(shù)據(jù)類型的基本函數(shù)和關(guān)鍵字,并尋找可幫助你完成復(fù)雜操作的核心庫。

5、函數(shù)

Class

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

你需要學(xué)習(xí)如何在編程語言中定義類和函數(shù)。更準(zhǔn)確地說,你首先需要了解編程語言中是否支持類和函數(shù)。大多數(shù)現(xiàn)代語言都支持函數(shù),但是類是面向?qū)ο蟮木幊陶Z言中所特有的。

實踐

學(xué)習(xí)語言中可用的結(jié)構(gòu),這些結(jié)構(gòu)可以幫助你高效地編寫和使用代碼。

你可以學(xué)到任何東西

學(xué)習(xí)編程語言,就其本身而言,是一種編碼過程中的子程序。一旦理解了代碼如何工作,你所使用的語言就只是一種傳遞邏輯的媒介。學(xué)習(xí)一門新編程語言的過程幾乎都是一樣的:通過簡單的練習(xí)來學(xué)習(xí)語法,通過學(xué)習(xí)詞匯來積累進(jìn)行復(fù)雜動作的能力,然后練習(xí)、練習(xí)、再練習(xí)。


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

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

本文由 LCTT 原創(chuàng)編譯,Linux中國 榮譽推出

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容