程序員想要通曉多種編程語言可以這樣做
學習一門新的語言是一種冒險。我總是熱衷于嘗試新的東西——學習新的語法,了解不同的模式,乃至徹底改變思維方式。不幸的是,許多開發人員對此不以為然,甚至可能是深惡痛絕的——學習新語言,就得走出舒適區,花時間花精力來學習新的理念和方法。
這段日子,我每天都要用大約5種不同的語言來寫不同的項目!
我應該先學哪種語言?
有關這方面的討論真可謂數不勝數。很多剛進入編程社區的初學者,都會問這個問題,簡直就是前赴后繼。有些人建議先學不費力的,如Python和 Ruby,也有的人認為應該先學例如C、C++和GO這類難一些的低層次的內容。我要說的是我們在選擇新的語言之前,應該注意以下幾個要點。
類型系統
從我的經驗和先前的學習路徑看,這是最重要的概念之一。我很慶幸我一開始學的是C,接著嘗試了C ++,一段時間之后,我又投入了Java的懷抱。然后是Scala,以及現在我開始玩Ruby。同時,我對Objective-C、Python、甚至是 OCaml也有所涉及。哦,對了,最近我正在搗鼓Swift和CoffeeScript。
如果我一開始學的是JavaScript、Python或Ruby,那么后面去理解什么是類型和變量就會非常困難。理解靜態和動態以及弱類型和強 類 型系統之間的區別,對于領悟語言的工作原理是至關重要的。我無法想象,如果我一開始不能掌控類型,那么后面涉及到的聲明與定義,以及匯編與解釋之間的差 異,會是讓人多么頭大的一件事。
不過,也有很多開發人員希望能有立竿見影的效果:既想快速看到結果,又不愿意過多地了解細節。他們喜歡接軌新的應用程序。最好是不用動腦子的語 言, 碰到這樣的他們最開心了。因為在他們眼中,掌握 integer、string和boolean是學習編程的超級大障礙。最好能夠毋須分辨類、對象和方法,直接寫代碼:
- scala> println(“Hello World!”)
- Hello World!
- >>> print "Hello World!"
- Hello World!
- 2.2 . 1 : 001 > puts "Hello World!"
- Hello World!
不可否認這種途徑能夠給人信心,讓人覺得自己學到了新的東西。
首先,請明確你屬于哪種類型,擺正自己的位置。你想要探究隱藏起來的工作原理嗎,喜歡深入研究本地執行嗎?愿意去理解語言結構嗎?又或者你只在乎能有快速的結果,不想了解虛擬機和編譯工作,并且語言內部機制對你而言也一點都不重要?
從自己的利益角度考慮
你可能需要處理哪些數據?你打算寫復雜的業務系統還是相對簡單的CRUD創業公司?請基于可能會讓自己感興趣的內容來確定工作領域。
所以,如果你確定你想要去企業工作,那么你可以試試Java或者.NET。如果你傾向于黑客并高度注重安全問題,那么不妨學習C/C ++或Bash。如果你夢想成為一名Web開發人員,那么先掌握PHP、JavaScript或Ruby吧。如果你想要編寫一些機器、機器人、汽車或其他 電子方面的程序——也行,先學C ++或Python吧。你喜歡搗鼓移動設備?那么Java、Swift或C#就應該是你的首選。如果你喜歡數學和算法,那么Lua、Erlang或R就很 適合你。等等等等,不勝枚舉。總之——一切取決于你的目的和愛好。