Anders Noras

語言不只是語法#

作者在高中時不得不學外語。他覺得自己英文夠好就行了,所以法文課都在睡覺。幾年後去突尼西亞度假,由於語言障礙,只能待在泳池邊讀 James Joyce 的 Finnegans Wake。Joyce 在超過 40 種語言間的嬉戲式混搭,讓作者意識到:交織外來詞彙和片語給了作者全新的表達方式,這個領悟一直伴隨著他的程式設計生涯。

The Pragmatic Programmer 中,Andy Hunt 和 Dave Thomas 鼓勵我們每年學一門新程式語言。作者遵循了這個建議,多年來使用了很多語言。他從多語言的冒險中得到的最重要教訓是:學習一門語言,不僅要學語法,更要理解它的文化(culture)

真正地擁抱語言#

你可以用任何語言寫 Fortran,但要真正學會一門語言,你必須**擁抱(embrace)**它:

  • 如果你的 C# 程式碼是一個很長的 Main 方法,裡面全是 static 輔助方法——不要找藉口,去學為什麼 class 是有道理的
  • 如果你對函數式語言中的 lambda 表達式感到困難——不要逃避,強迫自己去使用它們

跨語言的啟發#

一旦你學會了一門新語言的竅門,你會驚訝地發現自己開始以新的方式使用你已經知道的語言:

  • 作者從學習 Ruby 中學會了如何在 C# 中有效使用 delegates
  • .NET 的 generics 給了他關於如何讓 Java generics 更有用的靈感
  • LINQ 讓他輕鬆學會了 Scala

你還會透過在不同語言之間移動來更好地理解設計模式(design patterns)。C 程式設計師會發現 C# 和 Java 已經將 iterator pattern 商品化了。在 Ruby 和其他動態語言中,你可能仍然使用 visitor pattern,但你的實作不會像 Gang of Four 書中的範例那樣。

結論#

有些人認為 Finnegans Wake 不可讀,有些人讚嘆它的文體之美。諷刺的是,它的第一個單語言翻譯版本是法文。

程式碼也是如此。如果你用一點 Python、一點 Java、再加一點 Erlang 的風格來寫「Wakese」程式碼,你的專案會變成一團糟。但如果你去探索新語言來拓展思維,獲得關於如何以不同方式解決問題的新想法,你會發現你用慣有語言寫的程式碼會因為你學過的每一門新語言而變得更漂亮