自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員想要通曉多種編程語言可以這樣做

開發(fā) 開發(fā)工具 前端
歸根究底我們?yōu)槭裁匆獙W(xué)習(xí)新的語言呢?因為沒有哪種工具是適用于所有目標的。而我們有著不同的項目,不同的問題,不同的體系結(jié)構(gòu)。也許在啟用新的應(yīng)用程序和選擇技術(shù)堆棧之前,我們首先應(yīng)該考慮的是解決實際的業(yè)務(wù)問題,然后才能選擇出最切合實際的最佳工具。

學(xué)習(xí)一門新的語言是一種冒險。我總是熱衷于嘗試新的東西——學(xué)習(xí)新的語法,了解不同的模式,乃至徹底改變思維方式。不幸的是,許多開發(fā)人員對此不以為然,甚至可能是深惡痛絕的——學(xué)習(xí)新語言,就得走出舒適區(qū),花時間花精力來學(xué)習(xí)新的理念和方法。

這段日子,我每天都要用大約5種不同的語言來寫不同的項目!

我應(yīng)該先學(xué)哪種語言?

有關(guān)這方面的討論真可謂數(shù)不勝數(shù)。很多剛進入編程社區(qū)的初學(xué)者,都會問這個問題,簡直就是前赴后繼。有些人建議先學(xué)不費力的,如Python和 Ruby,也有的人認為應(yīng)該先學(xué)例如C、C++和GO這類難一些的低層次的內(nèi)容。我要說的是我們在選擇新的語言之前,應(yīng)該注意以下幾個要點。

類型系統(tǒng)

從我的經(jīng)驗和先前的學(xué)習(xí)路徑看,這是最重要的概念之一。我很慶幸我一開始學(xué)的是C,接著嘗試了C ++,一段時間之后,我又投入了Java的懷抱。然后是Scala,以及現(xiàn)在我開始玩Ruby。同時,我對Objective-C、Python、甚至是 OCaml也有所涉及。哦,對了,最近我正在搗鼓Swift和CoffeeScript。

如果我一開始學(xué)的是JavaScript、Python或Ruby,那么后面去理解什么是類型和變量就會非常困難。理解靜態(tài)和動態(tài)以及弱類型和強類 型系統(tǒng)之間的區(qū)別,對于領(lǐng)悟語言的工作原理是至關(guān)重要的。我無法想象,如果我一開始不能掌控類型,那么后面涉及到的聲明與定義,以及匯編與解釋之間的差 異,會是讓人多么頭大的一件事。

不過,也有很多開發(fā)人員希望能有立竿見影的效果:既想快速看到結(jié)果,又不愿意過多地了解細節(jié)。他們喜歡接軌新的應(yīng)用程序。最好是不用動腦子的語言, 碰到這樣的他們最開心了。因為在他們眼中,掌握 integer、string和boolean是學(xué)習(xí)編程的超級大障礙。最好能夠毋須分辨類、對象和方法,直接寫代碼:

  1. scala> println(“Hello World!”) 
  2. Hello World! 
  3. >>> print "Hello World!" 
  4. Hello World! 
  5. 2.2.1 :001 > puts "Hello World!" 
  6. Hello World! 

不可否認這種途徑能夠給人信心,讓人覺得自己學(xué)到了新的東西。

首先,請明確你屬于哪種類型,擺正自己的位置。你想要探究隱藏起來的工作原理嗎,喜歡深入研究本地執(zhí)行嗎?愿意去理解語言結(jié)構(gòu)嗎?又或者你只在乎能有快速的結(jié)果,不想了解虛擬機和編譯工作,并且語言內(nèi)部機制對你而言也一點都不重要?

從自己的利益角度考慮

你可能需要處理哪些數(shù)據(jù)?你打算寫復(fù)雜的業(yè)務(wù)系統(tǒng)還是相對簡單的CRUD創(chuàng)業(yè)公司?請基于可能會讓自己感興趣的內(nèi)容來確定工作領(lǐng)域。

所以,如果你確定你想要去企業(yè)工作,那么你可以試試Java或者.NET。如果你傾向于黑客并高度注重安全問題,那么不妨學(xué)習(xí)C/C ++或Bash。如果你夢想成為一名Web開發(fā)人員,那么先掌握PHP、JavaScript或Ruby吧。如果你想要編寫一些機器、機器人、汽車或其他 電子方面的程序——也行,先學(xué)C ++或Python吧。你喜歡搗鼓移動設(shè)備?那么Java、Swift或C#就應(yīng)該是你的首選。如果你喜歡數(shù)學(xué)和算法,那么Lua、Erlang或R就很 適合你。等等等等,不勝枚舉??傊?mdash;—一切取決于你的目的和愛好。

#p#

語言內(nèi)部機制

你有組織化的堆棧內(nèi)存嗎?你在程序中傳遞變量時使用引用類型還是只使用值類型?你是否利用指針和析構(gòu)函數(shù)來控制對象的生命周期?你是自行清理存儲器還是使用相關(guān)的垃圾收集器?你是否計算和跟蹤引用類型和子類?

這些都是我們平時不會關(guān)心的問題。但是有時候,它們卻是一些你不得不處理的概念,所以理解內(nèi)部機制很重要。雖然現(xiàn)在你會覺得這些概念很復(fù)雜,理解起來很難,因為終有一天,你會慶幸自己現(xiàn)在的選擇,有道是,書到用時方恨少,不要到用的時候追悔莫及。

我應(yīng)該學(xué)習(xí)哪些語言?

#p#

社區(qū)——StackOverflow、Reddit

下面是一些Reddit上面有關(guān)于通用編程的內(nèi)容:

你也點擊http://stackoverflow.com/tags 或http://www.reddit.com/subreddits在特定的語言社區(qū)中尋求幫助。許多樂于助人的高手就在那里等你。

函數(shù)庫

函數(shù)庫之所以重要是因為它能讓你有效利用現(xiàn)有資源,而不必再“重新發(fā)明輪子”。我們通常需要解決特定問題,實現(xiàn)業(yè)務(wù)規(guī)則,處理重要進程,從數(shù)組中找 出所需元素,利用給定字符串,過濾特定集合等等。最好語言本身或者第三方函數(shù)庫能夠提供一些可以加快開發(fā)進程的實用程序、輔助工具和數(shù)據(jù)結(jié)構(gòu)。

下面是一些不同語言的社區(qū)函數(shù)庫代碼倉庫:

保持對第三方支持可擴展性、開放性和易于集成等方面的審查。

#p#

從創(chuàng)造者/維護人員那兒獲得文檔和支持

你閱讀文檔嗎?文檔是不是易于理解的,全面的,最新的?更新頻率如何?有多少維護人員,是否也在社區(qū)中?從文檔中你能提取多少信息?你能否輕松駕馭不同的部分?

這是一個非常有效的觀察報告。只要有創(chuàng)造者提供有助于學(xué)習(xí)和理解語言的文檔,其他的其實無所謂。例如,Ruby就有不少提供文檔的網(wǎng)站,如:https://www.omniref.com/,http://ruby-doc.org/。 Scala也有相當不錯的API說明書http://www.scala-lang.org/api/current/。

語言的創(chuàng)造者對待社區(qū)的態(tài)度也很重要。他能否像Ruby創(chuàng)始人Matz一樣愿意接受和傾聽反饋?他是否像Scala之父Martin Odersky一樣有著純粹的經(jīng)營方針?又或者他是否會像Clojure的發(fā)明者一樣鼓勵社區(qū)發(fā)展?

資源和實例——博客、GitHub代碼倉庫

下面是一些可作為起步指導(dǎo)的好例子:

至于網(wǎng)上教程,下面這些是很不錯的門戶網(wǎng)站,如:

不妨去看一看。

資金

沒錯,前面我們談?wù)摿怂枷?、激情,以及一些抽象的概念,但是最后所有這一切都歸結(jié)到資金,也就是金錢。在選擇語言之前最好先搞清楚哪種薪酬/需求相 對比較高。當然,你也可以純粹是因為好玩而選擇它。新事物總在不斷地出現(xiàn)和發(fā)展,雖然這可以拓寬我們的視野,但學(xué)一些有用的東西還是非常重要的。在這種情 況下你有以下兩種解決方案:

  • 學(xué)習(xí)當前市場上最流行/需求量最大的語言/技術(shù)/框架。這能確保你不但能找到工作,還能獲得優(yōu)渥的報酬。

  • 按照自己的觀點學(xué)習(xí)。這可能有點難以想象。因為誰也不能打包票說下一個流行的就一定是這種編程語言。試想一下,10年前你要是說Ruby會成為當 前社會的寵兒,誰會相信。還有Scala和GO,沒人知道之后,比如說,5年以后它們會發(fā)生什么變化。如果你現(xiàn)在選擇了它們——那么,要么你將成為高薪專 家,因為以后會變得非常普及;要么你只是掌握了一種沒用的,被淘汰的語言。

點擊這里查看市場分析:https://gooroo.io/analytics。

我要不要一次學(xué)習(xí)多種編程語言

剛開始——不要這么做。從長遠來看——是的,你應(yīng)該學(xué)習(xí)多種編程語言。

當你剛踏上編程之旅時,你應(yīng)該只專注于一種語言。你需要掌握所有的概念,全神貫注于學(xué)習(xí)某個特定區(qū)域。

當你已經(jīng)是一個有一定經(jīng)驗的程序員,那情況就有所不同了。由于你已經(jīng)知道內(nèi)部機制和程序的工作原理,這時你需要做的就是學(xué)習(xí)新的語法和新的范式,因為很多概念在不同語言里面都是相通的。

萬事開頭難,一旦正確起步之后,就會像滾雪球一樣越滾越順。

#p#

總結(jié)

那么歸根究底我們?yōu)槭裁匆獙W(xué)習(xí)新的語言呢?因為沒有哪種工具是適用于所有目標的。而我們有著不同的項目,不同的問題,不同的體系結(jié)構(gòu)。也許在啟用新的應(yīng)用程序和選擇技術(shù)堆棧之前,我們首先應(yīng)該考慮的是解決實際的業(yè)務(wù)問題,然后才能選擇出最切合實際的最佳工具。

不要從工具和興趣愛好入手。要從問題著手,然后找出解決方案。只有在了解這些的基礎(chǔ)上,你才能選出合適的語言,幫助你用最有效的方式實現(xiàn)業(yè)務(wù)規(guī)則。

當然,如果你通曉多種編程語言,那你肯定能更快,更高效。因為你總是可以挑選出完美的工具,用最經(jīng)濟的方式解決問題,并提供最有力的實現(xiàn)。

書籍

下面這些是我認為對大家學(xué)習(xí)初級概念很有幫助的書。

工具

下面這些工具可以用于比較編程語言——不但包含語法,還包括社會普及程度和社會支持程度。

資源

下列資料展示了學(xué)習(xí)不同的語言和新架構(gòu)的方法和原理。

最后,如有不同意見,歡迎指正。

責(zé)任編輯:王雪燕 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2015-06-10 10:43:07

2015-05-15 10:09:09

程序員

2009-07-28 08:28:15

2009-02-27 09:25:28

編程語言程序員C#

2021-10-26 16:25:25

編程語言JavaPython

2018-08-02 16:00:26

程序員專家自我學(xué)習(xí)

2022-08-11 09:41:35

阿里程序員

2018-06-25 13:37:13

2013-12-30 10:08:13

2015-08-14 09:14:29

2015-08-14 09:15:34

轉(zhuǎn)行變成前途

2015-05-19 14:34:17

程序員編程語言

2013-08-23 11:06:34

編程語言

2012-08-30 10:05:40

編程編程語言程序員

2015-04-16 13:02:50

程序員編程選擇編程技術(shù)書

2021-03-29 09:35:22

程序員技能開發(fā)者

2018-07-06 15:25:50

程序員編程python

2013-11-06 09:54:22

程序Windows

2013-11-14 10:05:25

程序員職業(yè)轉(zhuǎn)型

2015-05-19 14:41:22

點贊
收藏

51CTO技術(shù)棧公眾號