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

發表於2011-06-12

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

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

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

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

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

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

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

“知道怎麼做”和“真正去做並且完成”完全是兩回事,知道所有的單詞也未必可以寫出一個優美的句子。希望以後在英語和程式設計學習方面都可以擺脫中國語言教育留下的壞習慣。

原文:zhuoqun

相關文章