|
我的一位老師曾對(duì)我們說,我們之所以現(xiàn)在還不知道Matlab這種語(yǔ)言,是因?yàn)槲覀儾恢烙袀€(gè)叫“參考資料”的命令是干什么用的。昨天,我在Haskellers注冊(cè)了一個(gè)帳號(hào),我發(fā)現(xiàn)Haskell語(yǔ)言里有很多東西我根本沒聽說過。這件事促使了我寫這篇博客,我希望能給下面的這個(gè)問題找到答案:«你對(duì)一種語(yǔ)言了解多少才能肯定的說你會(huì)這種語(yǔ)言?»。
對(duì)一種語(yǔ)言的了解程度有很多等級(jí)。最基本的一種是只知道它的語(yǔ)法。然而,我不知道是不是當(dāng)你知道一種語(yǔ)言的語(yǔ)法,特有結(jié)構(gòu),以及能解讀用這種語(yǔ)言編寫的基本程序時(shí)你就可以稱作會(huì)這種語(yǔ)言。我可以說我對(duì)Brainfuck 和 Piet非常的了解,盡管我從沒用這種語(yǔ)言寫過一行程序(我是用一些工具生成代碼,或類似的編程)。
其次,當(dāng)一個(gè)人知道一種語(yǔ)言的某些生僻的結(jié)構(gòu)和語(yǔ)法時(shí),他可以說他會(huì)這種語(yǔ)言。知道C的extern
和 volatile
可以有助于你完成某些任務(wù),但這要看你干的是什么工作了。不管怎樣,從這種水平往上看,任何一個(gè)人,只要他能看懂一個(gè)用這種語(yǔ)言寫的代碼文件里50%以上的東西,那他就可以說自己會(huì)這種語(yǔ)言了。
下一個(gè)層次的水平表現(xiàn)為掌握這種語(yǔ)言里所有的代碼庫(kù)類庫(kù)的情況。例如,我知道有個(gè)家伙幾乎知道幾乎所有的Python的模塊包。對(duì)最新的包除外,但他的知識(shí)已經(jīng)足夠來鑒別在一個(gè)任務(wù)上采用哪個(gè)程序包更好。
最后,我知道到有兩個(gè)人(只是在網(wǎng)上),他們不僅了解那種語(yǔ)言所有代碼庫(kù),同時(shí)也知道所有相關(guān)的工具。就Haskell而言,包括 Cabal, darcs 和 Hackage internals等,當(dāng)然,他們知道的遠(yuǎn)非只有這些。
現(xiàn)在,問題還是沒有答案。把問題重新復(fù)述一下可能變成這樣:«當(dāng)你對(duì)一種編程語(yǔ)言必須了解多少時(shí),你才能把它寫到你的簡(jiǎn)歷上?»
附言:想起來Perlis在Epigrams on Programming這本書里的一句話:«如果一種語(yǔ)言沒有對(duì)你的編程思維有任何影響,那它是一種不值得學(xué)習(xí)的語(yǔ)言。»。根據(jù)這個(gè),是否是說,當(dāng)你的編程思維改變了,你才能說你會(huì)了這種語(yǔ)言?
[英文出處]:When do you know a language?
it知識(shí)庫(kù):怎樣才算會(huì)一種語(yǔ)言?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。