精通one,學習another,關注next
有時有程式設計師發 email 問我他應該學習什麼語言,什麼是最好的程式語言等等。 你至少應該精通一門程式語言,可以相當好的去編寫程式碼,然後再去學習掌握另外一門,逐漸的成長。 以我自己為例,我精通 C#,擅長 PHP,並且已經開始使用 Ruby on Rails 大概有一兩個月了。 為什麼呢?精通一門語言可以使你進步,在進步中寫更好的程式碼,找到完成任務更好的方法等。 進步也是我作為一個程式設計師年一年的工作,卻仍沒有覺得枯燥的原因。 ——justjavac
提問:
houxinyou:我想問下,是隻有學習掌握了另一門,才能成長,還是學習另一門語言,擴大了自己的視野,達到成長的目的?
回答:
justjavac:每個程式設計師都不只是使用一種語言。他們學習的語言也更多。我工作中使用java C這些『工業級』語言開發,很多程式碼和sql都是用python來生成的。
我也學過lisp語言,只是被他的思想所折服,但是沒有用這門語言開發過專案。
現在的語言無非就是 『C語言的風格,然後慢慢增加lisp的思想』!
現在你是否知道我們為什麼要學習多種程式語言呢?
第一、
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這七種新近的語言。用新的語言來提高一下自身的實力,瞭解一下業界先進的技術,相信你會從書中的某些觀點中得到啟發。
噹噹網評價:
京東網評價:
互動網書評:
讀完這本書,如果你對程式語言這個話題本身感興趣,還可以閱讀探討程式語言特性的進階書,比如《程式設計語言:實踐之路》。此外,一些語言中極有用但更高階的技巧,在這本書中並沒有探討。假如你想見識Clojure中巨集的威力,可以閱讀Paul Graham的《On Lisp》,網路上還可以找到將這本書示例用Clojure改寫的版本。
《程式設計師修煉之道》的作者David Thomas鼓勵程式設計師每年學習一門新語言,所以在讀完這本書之後,請不要停下你繼續學習其他程式語言的腳步。
本文由justjavac發表在ITeye的文章和《七週七語言》的書評及網店評論構成。
相關文章
- how to move a MediaWiki wiki from one server to anotherServer
- How to move ASM database files from one diskgroup to anotherASMDatabase
- Recipe 3.1. Stacking One Rowset atop Another
- VUE學習day oneVue
- 為什麼企業需要關注深度學習深度學習
- 微信分享,交流學習oracle技術,歡迎大家關注Oracle
- 分享學習php的非同步協程生態框架(swow),大家有興趣可以關注關注。PHP非同步框架
- 搭建LLM one-api&ChatGPT-Next-WebAPIChatGPTWeb
- Java學習從入門到精通Java
- Java學習從入門到精通的學習建議Java
- Java學習福利,入門到精通學習路線分享Java
- 2016年我們需要關注學習這些框架框架
- 關注遠端工作,關注AP社群。
- ABP VNext學習日記8
- ABP VNext學習日記7
- Vue學習從入門到精通(一)Vue
- Mybatis 多表關聯查詢(1) one-to-one關係MyBatis
- 關注物聯網 關注公司產品
- Java學習從入門到精通[原創]Java
- Java學習從入門到精通(3)(轉)Java
- Java學習從入門到精通(2)(轉)Java
- 真正的Java學習從入門到精通Java
- 譯|新概念Ⅲ Lesson 23 One man's meat is another man's poison(各有所愛)
- 軟體開發中關注習慣的力量
- 入門雲端計算要精通學習什麼?
- 新手學習Java,如何快速從入門到精通!Java
- Python要學習多久可以掌握?多久可以精通?Python
- 真正的Java學習從入門到精通(轉)Java
- 《精通資料科學:從線性迴歸到深度學習》資料科學深度學習
- 關注******技術
- 2018年最值得關注學習的25個JavaScript開源專案JavaScript
- 2018 年,學習WEB前端開發應該關注哪些新技術?Web前端
- 專案管理學習筆記之二視覺化專案,關注結果 (轉)專案管理筆記視覺化
- 關注你所關注的 - Golang社群調研報告Golang
- 蝦皮粉絲關注及取消關注外掛 shopee
- 在自己的網站新增關注新浪關注按鈕網站
- 代瀟瑞部落格-專注於PHP學習PHP
- 關於學習