精通one,學習another,關注next

紫鳳發表於2012-11-16

 有時有程式設計師發 email 問我他應該學習什麼語言,什麼是最好的程式語言等等。 你至少應該精通一門程式語言,可以相當好的去編寫程式碼,然後再去學習掌握另外一門,逐漸的成長。 以我自己為例,我精通 C#,擅長 PHP,並且已經開始使用 Ruby on Rails 大概有一兩個月了。 為什麼呢?精通一門語言可以使你進步,在進步中寫更好的程式碼,找到完成任務更好的方法等。 進步也是我作為一個程式設計師年一年的工作,卻仍沒有覺得枯燥的原因。                                                  ——justjavac

提問:

houxinyou:我想問下,是隻有學習掌握了另一門,才能成長,還是學習另一門語言,擴大了自己的視野,達到成長的目的?

回答:

justjavac:每個程式設計師都不只是使用一種語言。他們學習的語言也更多。我工作中使用java C這些『工業級』語言開發,很多程式碼和sql都是用python來生成的。

我也學過lisp語言,只是被他的思想所折服,但是沒有用這門語言開發過專案。

現在的語言無非就是 『C語言的風格,然後慢慢增加lisp的思想』! 

現在你是否知道我們為什麼要學習多種程式語言呢?

          enter image description here

              你可知巴別塔的寓意?

第一、

  Peter Norvig曾談到他在程式設計上成功的祕訣之一:至少要學會六門程式語言。一種面嚮物件語言, 如Java或C++; 一種函式式語言, 如Lisp或ML; 一種支援語法抽象的語言, 如Lisp; 一種宣告式語言, 如Prolog; 一種支援協同式程式設計的語言, 如Icon或Scheme; 還有一種支援並行的語言, 如Sisal。”

  Eric Raymond也表達過相似的觀點:Python、C、Perl和Lisp除了是最重要的四種基本語言,它們還代表了四種非常不同的程式設計方法,每種都會讓你受益匪淺。

  程式語言會影響你思考問題方式,因為每種語言所包含的一系列特性——靜態型別和動態型別、早期繫結與延遲繫結——都會鼓勵你採用某種特定的解決方案。Raymond甚至認為,即使你並不真的使用Lisp,單是學習它就會讓你成為更好的程式設計師——假如你只使用命令式語言,但只要頭腦中思考著函式式方案,寫出的程式碼也許就會不同。John Carmack在“用C++進行函數語言程式設計”中就談到過他的體會。

  維特根斯坦曾說“語言的界限就是我與世界的界限”,當你新學會一門程式語言,才有可能領略由這門語言搭建起來的軟體世界的精妙。松本行弘曾經談到,他在設計Ruby時,Emacs帶給他極大的靈感,假如他不曾深入研究Emacs Lisp,我們看到的Ruby不會是今天的樣子。

  所以,掌握和了解更多的程式語言,對每個程式設計師來說都是必要的。

第二、

  隨著對計算機程式的需求越來越複雜,計算機語言也在發展演化。每隔20年左右,老的程式設計範型就會變得不足以應對一些組織和表達思想的新要求。新的範型必定會湧現出來,但這並不是一個簡單的過程。每個新的程式設計範型都會引入一批程式語言,而不僅僅只是一種語言。最初的語言往往具有驚人的生命力,但也很不實用。比如物件導向程式語言Smalltalk或者函數語言程式設計語言Lisp。接下來,其他範型的語言會加入一些新特性,允許開發人員在採用新概念的同時也可以安全地使用原先的老範型。例如Ada語言,它能夠在過程式語言中使用一些物件導向的核心思想,比如封裝。某些時候,一些混合語言恰恰是搭建在新老範型之間的一座實用的橋樑,比如C++。緊接著,你將看到一些可用於商業應用的程式語言,比如Java或C#。最後,你才會看到新範型的一些成熟且完整的實現。

第三、

  瞭解多門語言蘊涵的思維方式,在編碼中互相借鑑,再挑出一兩門對自己口味的語言深入學習,這些已經成為在軟體行業中安身立命之本。從這個意義上說,每個程式設計師都應該學習不止一門語言。

給大家推薦圖書

  圖靈今年5月份出版的一本《七週七語言》,這本書在豆瓣有140人評價,平均分為8.4,在各大網店的書評多的有幾百條,少的也有幾十條,借用互動網購買者的評價:“它的價值不在於讓你學會7種程式語言,而是讓你知道程式語言的世界絕不僅僅是單一的C家族,而是有那麼多完全不同的風景等你去發現。在欣賞這些風景的時候,你的思維、視野會被大大地擴充。”這本書中介紹了Ruby、Io、Prolog、Scala、Erlang、Clojure、Haskell這七種新近的語言。用新的語言來提高一下自身的實力,瞭解一下業界先進的技術,相信你會從書中的某些觀點中得到啟發。

噹噹網評價:

enter image description here

京東網評價:

enter image description here

互動網書評:

enter image description here   讀完這本書,如果你對程式語言這個話題本身感興趣,還可以閱讀探討程式語言特性的進階書,比如《程式設計語言:實踐之路》。此外,一些語言中極有用但更高階的技巧,在這本書中並沒有探討。假如你想見識Clojure中巨集的威力,可以閱讀Paul Graham的《On Lisp》,網路上還可以找到將這本書示例用Clojure改寫的版本。

  《程式設計師修煉之道》的作者David Thomas鼓勵程式設計師每年學習一門新語言,所以在讀完這本書之後,請不要停下你繼續學習其他程式語言的腳步。

本文由justjavac發表在ITeye的文章和《七週七語言》的書評及網店評論構成。

相關文章