精通one,學習another,關注next

有時有程序員發 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的文章和《七週七語言》的書評及網店評論構成。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章