今天在開(kāi)源中國(guó)社區(qū)看到這樣的一篇文章:怎么樣才算是真正學(xué)會(huì)了一門(mén)編程語(yǔ)言。小編個(gè)人認(rèn)為很有價(jià)值。特分享。 對(duì)一種語(yǔ)言的了解程度有很多等級(jí)。最基本的一種是只知道它的語(yǔ)法。然而,我不知道是不是當(dāng)你知道一種語(yǔ)言的語(yǔ)法,特有結(jié)構(gòu),以及能解讀用這種語(yǔ)言編寫(xiě)的基本程序時(shí)你就可以稱(chēng)作會(huì)這種語(yǔ)言。我可以說(shuō)我對(duì)Brainfuck 和Piet非常的了解,盡管我從沒(méi)用這種語(yǔ)言寫(xiě)過(guò)一行程序(我是用一些工具生成代碼,或類(lèi)似的編程)。 其次,當(dāng)一個(gè)人知道一種語(yǔ)言的某些生僻的結(jié)構(gòu)和語(yǔ)法時(shí),他可以說(shuō)他會(huì)這種語(yǔ)言。知道C的extern和volatile可以有助于你完成某些任務(wù),但這要看你干的是什么工作了。不管怎樣,從這種水平往上看,任何一個(gè)人,只要他能看懂一個(gè)用這種語(yǔ)言寫(xiě)的代碼文件里50%以上的東西,那他就可以說(shuō)自己會(huì)這種語(yǔ)言了。 下一個(gè)層次的水平表現(xiàn)為掌握這種語(yǔ)言里所有的代碼庫(kù)類(lèi)庫(kù)的情況。例如,我知道有個(gè)家伙幾乎知道幾乎所有的Python的模塊包。對(duì)最新的包除外,但他的知識(shí)已經(jīng)足夠來(lái)鑒別在一個(gè)任務(wù)上采用哪個(gè)程序包更好。 最后,我知道到有兩個(gè)人(只是在網(wǎng)上),他們不僅了解那種語(yǔ)言所有代碼庫(kù),同時(shí)也知道所有相關(guān)的工具。就Haskell而言,包括 Cabal, darcs 和 Hackage internals等,當(dāng)然,他們知道的遠(yuǎn)非只有這些。 現(xiàn)在,問(wèn)題還是沒(méi)有答案。把問(wèn)題重新復(fù)述一下可能變成這樣:當(dāng)你對(duì)一種編程語(yǔ)言必須了解多少時(shí),你才能把它寫(xiě)到你的簡(jiǎn)歷上? 附言:想起來(lái)Perlis在Epigrams on Programming這本書(shū)里的一句話:如果一種語(yǔ)言沒(méi)有對(duì)你的編程思維有任何影響,那它是一種不值得學(xué)習(xí)的語(yǔ)言。根據(jù)這個(gè),是否是說(shuō),當(dāng)你的編程思維改變了,你才能說(shuō)你真正學(xué)會(huì)了這種語(yǔ)言。 ![]() |