不做“語言律師”(language lawyers)

  有人在 Slashdot 上問了一個問題:什麼認證最好?( Best Certifications To Get?)提問者說他想在 IT 領域有所提升,所以想要考取一些有價值的認證,以便簡歷可以更好看一些。 Slashdot 上的人給出了很多回答,其中有一個回答很精彩,而且還被投遞到了 Hacker News ,回答的原文在這裏,我簡單翻譯如下(翻譯倉促,建議直接閱讀原文):

  我曾經是一名程序員,後來去做了日本的一名英語教師。日本是一個很有意思的地方,這裏的學 生知道懂得很多英語,但是卻不能在麥當勞順利點一杯飲料。在編程領域也有一些這樣的人,我們把他們叫做“語言律師”(language lawyers)。這種人可以回答有關編程語言的任何問題,但是卻沒有真實的編程能力;他們可以很容易通過面試,但是當他們真正編程的時候卻非常令人失 望。這些程序員和我的學生非常像:他們有5000詞彙量,知道書上寫的所有語法規則,但就是不會說英語。

我現在的觀點是編程就像寫作。有關編程的很多概念並不困難,它之所以困難是因爲我們不善於“寫作”。大部分的程序員並不能做到“流利”,也沒有寫得 “流利”的意願。他們不閱讀別人的代碼,不認識也不會使用“成語”,思維模式不是編程語言的思維模式(They don’t think in the programming language)。很多代碼之所以爛是因爲它的“流利”程度就好像3歲小孩寫的小說。這也是爲什麼我們的程序呈現出不必要的複雜。


我們教授編程的方法是錯誤的,那種方式和日本的英語老師教授英語的方式如出一轍。我們只是傳授有關編程的一切概念,然後期望學生可以從那些東西當中自發地學會如何編程。


在語言學習方面有一個假說:所有的語言只有在被理解的情況下才會真正被吸收。也就是說,如果你可以根據你已經知道的或者上下文理解你聽到或讀到的詞 句,那麼你就會吸收它。解釋不能幫助你吸收語言。我相信這對編程而言也是正確的。我們應該讓學生寖浸在好的代碼中,讓他們不通過解釋來真正吸收編程的能 力。


我個人很認同這個回答中表達的觀點。如果文中所說是真的,那麼中國的英語教育和日本的英語教育實在沒有什麼差別,教的都是“啞巴英語”。我們學習英語 的時候都是偏重於“單詞意思”、“語法”等東西,結果學習完之後還是中文思維,聽到英文第一反應是先把它翻譯成中文,然後再去理解它的意思。因爲有了 “翻譯”這個環節,聽和說幾乎都會慢半拍,怎麼可能流利呢?編程也是一樣,你的腦子裏記的都是一些所謂的“代碼規範”、“最佳實踐”⋯⋯ 寫代碼的時候總是先想到這些,而且每每以“符合規範”爲榮。我並不是說規範不好,但是如果你不能把這些規範“忘掉”,寫出來的代碼雖然沒有什麼毛病,但肯 定不會讓人覺得很妙。一個寫作的人如果在寫作的時候總是念念不忘語法規則,也肯定寫不出好看的文章。

語言是用來使用的,編程語言也是一樣。不少人喜歡在那裏死記硬背一些語言特性然後去和別人談論,有時候還美其名曰“注重細節”,這對提高編程能力完全 沒有用處。說來慚愧,我一直都是一個 language lawyer,編程書籍和文檔都看了不少,但真正做出來的東西就實在太少了。有時候想要看別人的代碼然後模仿,但是看懂別人的代碼之後就覺得自己已經了 解,然後就失去了動手的興趣。做東西也是一樣,當我做到80%的時候就會發現剩下的自己都知道怎麼做,於是很容易就半途而廢。

“知道怎麼做”和“真正去做並且完成”完全是兩回事,知道所有的單詞也未必可以寫出一個優美的句子。希望以後在英語和編程學習方面都可以擺脫中國語言教育留下的壞習慣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章