精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
如何成為一個(gè)通曉多種編程語(yǔ)言的程序員 - 灌水樂(lè)園 - 云計(jì)算開(kāi)發(fā)者社區(qū) - Powered by Discuz!
本帖最后由 歐陽(yáng)志愿_135 于 2015-6-10 17:43 編輯

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


這段日子,我每天都要用大約5種不同的語(yǔ)言來(lái)寫(xiě)不同的項(xiàng)目!



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

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

類(lèi)型系統(tǒng)

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


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


不過(guò),也有很多開(kāi)發(fā)人員希望能有立竿見(jiàn)影的效果:既想快速看到結(jié)果,又不愿意過(guò)多地了解細(xì)節(jié)。他們喜歡接軌新的應(yīng)用程序。最好是不用動(dòng)腦子的語(yǔ)言,碰到這樣的他們最開(kāi)心了。因?yàn)樵谒麄冄壑校莆?integer、string和boolean是學(xué)習(xí)編程的超級(jí)大障礙。最好能夠毋須分辨類(lèi)、對(duì)象和方法,直接寫(xiě)代碼:

scala> println(“Hello World!”)Hello World!>>> print 'Hello World!'Hello World!2.2.1 :001 > puts 'Hello World!'Hello World!

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


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

從自己的利益角度考慮

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


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





語(yǔ)言?xún)?nèi)部機(jī)制

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

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


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



社區(qū)——StackOverflow、Reddit

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


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


函數(shù)庫(kù)

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


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



保持對(duì)第三方支持可擴(kuò)展性、開(kāi)放性和易于集成等方面的審查。


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

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


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


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


資源和實(shí)例——博客、GitHub代碼倉(cāng)庫(kù)

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


至于網(wǎng)上教程,下面這些是很不錯(cuò)的門(mén)戶(hù)網(wǎng)站,如:


不妨去看一看。


資金

沒(méi)錯(cuò),前面我們談?wù)摿怂枷搿⒓で椋约耙恍┏橄蟮母拍睿亲詈笏羞@一切都?xì)w結(jié)到資金,也就是金錢(qián)。在選擇語(yǔ)言之前最好先搞清楚哪種薪酬/需求相對(duì)比較高。當(dāng)然,你也可以純粹是因?yàn)楹猛娑x擇它。新事物總在不斷地出現(xiàn)和發(fā)展,雖然這可以拓寬我們的視野,但學(xué)一些有用的東西還是非常重要的。在這種情況下你有以下兩種解決方案:


  • 學(xué)習(xí)當(dāng)前市場(chǎng)上最流行/需求量最大的語(yǔ)言/技術(shù)/框架。這能確保你不但能找到工作,還能獲得優(yōu)渥的報(bào)酬。
  • 按照自己的觀點(diǎn)學(xué)習(xí)。這可能有點(diǎn)難以想象。因?yàn)檎l(shuí)也不能打包票說(shuō)下一個(gè)流行的就一定是這種編程語(yǔ)言。試想一下,10年前你要是說(shuō)Ruby會(huì)成為當(dāng)前社會(huì)的寵兒,誰(shuí)會(huì)相信。還有Scala和GO,沒(méi)人知道之后,比如說(shuō),5年以后它們會(huì)發(fā)生什么變化。如果你現(xiàn)在選擇了它們——那么,要么你將成為高薪專(zhuān)家,因?yàn)橐院髸?huì)變得非常普及;要么你只是掌握了一種沒(méi)用的,被淘汰的語(yǔ)言。




點(diǎn)擊這里查看市場(chǎng)分析:https://gooroo.io/analytics


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

剛開(kāi)始——不要這么做。從長(zhǎng)遠(yuǎn)來(lái)看——是的,你應(yīng)該學(xué)習(xí)多種編程語(yǔ)言。

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

當(dāng)你已經(jīng)是一個(gè)有一定經(jīng)驗(yàn)的程序員,那情況就有所不同了。由于你已經(jīng)知道內(nèi)部機(jī)制和程序的工作原理,這時(shí)你需要做的就是學(xué)習(xí)新的語(yǔ)法和新的范式,因?yàn)楹芏喔拍钤诓煌Z(yǔ)言里面都是相通的。

萬(wàn)事開(kāi)頭難,一旦正確起步之后,就會(huì)像滾雪球一樣越滾越順。


總結(jié)

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


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


當(dāng)然,如果你通曉多種編程語(yǔ)言,那你肯定能更快,更高效。因?yàn)槟憧偸强梢蕴暨x出完美的工具,用最經(jīng)濟(jì)的方式解決問(wèn)題,并提供最有力的實(shí)現(xiàn)。


書(shū)籍

下面這些是我認(rèn)為對(duì)大家學(xué)習(xí)初級(jí)概念很有幫助的書(shū)。


工具


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


資源


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


原文地址:http://www.codeceo.com/article/be-a-polyglot-programmer.html













本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
函數(shù)式編程很難,這正是你要學(xué)習(xí)它的原因
圖靈社區(qū) : 閱讀 : 為什么《七周七語(yǔ)言》選中的是這幾種語(yǔ)言?
Ruby程序員小組
不要做一個(gè)只會(huì)面向搜索編程的程序員
9個(gè)殺手級(jí) JVM 編程語(yǔ)言
2019編程語(yǔ)言評(píng)測(cè):真只有Python最適合你?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 无棣县| 延津县| 台山市| 娄底市| 溆浦县| 和龙市| 来凤县| 方城县| 宁蒗| 府谷县| 隆安县| 泰兴市| 剑川县| 锡林浩特市| 陇西县| 和田县| 永春县| 黄梅县| 揭东县| 江源县| 长垣县| 永仁县| 吐鲁番市| 方山县| 临武县| 大兴区| 云霄县| 钦州市| 长宁县| 锡林郭勒盟| 元阳县| 汝州市| 抚松县| 晋州市| 南通市| 定南县| 台北市| 忻州市| 高要市| 苏尼特右旗| 隆德县|