我想建立自己的技術堆疊 目前考慮的語言有 PHP javascript python c++ ruby go
有不錯的推薦也請說明,謝謝。
請從長遠的角度進行分析 並說明原因,感激不盡!
回覆內容:
1.程式語言只是工具,先選一種精通了(Python、php、Java等)。
2、web開發,javascript 必須會的,前提是1中的任意一種精通了,javascript 不是事兒,很快就可以拿下。
3、web開發,有走前端和後端路線。除非你想當全端工程師。
4、重點來了,如果走後端,不是純程式語言的事,你要研究的多了,分佈式,高並發,資料庫主從,讀寫分離。 Nosql,快取、API開發,全文檢索、維運等等。
先選擇一門程式語言精通了,Go 可以關注,目前選擇Python 深入學習是比較好的選擇之一。
不要陷入語言之爭!
每當有人問我學哪門語言的時候,我都是這樣回答的:
你身邊有會JAVA 的,你就去學JAVA,
你身邊有會PHP 的,你就去學PHP,
你身邊的人會什麼,你就學什麼,不會就問他。
他不理你?
請他吃飯呀!
他還會告訴你接下來該學什麼。
跟人,而不是跟技術。
你說身邊一個會程式的都沒有要怎麼辦?
你不是遇見我了嗎?
關注我,學前端!
對於找學習,做項目,找工作,推薦Java!用了一年的Python,除了熟悉呼叫各種方法,庫,框架,感覺沒啥進步。果斷轉Java。
Python記憶體是怎麼回收的?
引用計數。
然後呢?
不知道了…
Python形參傳遞是值傳遞還是引用傳遞?
啥?
能談談Python的並發嘛?
不能,我只知道有GIL,其它並不知道…
Java是咋記憶體回收的?
首先Java將記憶體分為堆疊區,虛擬機棧區…
使用可達性分析…安全點… serial,parNew,parallel scavenge CMS… 記憶體擔保吧啦吧啦…
我們聊聊並發吧
嗯,偏置鎖,輕量級鎖,重量級鎖…volatile關鍵字的語意…
能聊聊Java的重載和重寫嗎?
重載底層使用靜態多分派,根據方法靜態參數類型在編譯期就決定好了使用哪個版本的方法,重寫使用的是動態但單分配,根據接受者的類型選擇相關方法…
不是要噴學Python 不好,因為語言沒有好壞,只有合適和更合適。而是覺得應該要有一門比較過硬的靜態型別語言如c/c++,java,c#等基礎,再來用Python等腳本語言才能事半功倍。初學就學腳本語言,感覺很虛。
因為要做Web,所以推薦Java。學Java好處就是:很多公司用,而且如果你想,能夠學到更多所以然。而腳本語言,不是頂級大神,只能調調API。對於底層的機制,很少有相關的資料供你一步一步學習。不要跟我說直接看源碼,我們都是普通人。不是大神。
以上就是個人愚見。
英語。
Web 開發,是一件非常龐雜又繁重的工作,而且大多數情況下都是在和各種規則打交道,像什麼HTTP 協議,數據庫的鏈接字符串,CSS,HTML,JavaScript的語法,開發工作流輔助工具的配置,什麼angular ,jQuery框架…
根本學不完,學了也是過兩年又有什麼把原來的擠掉了,像es6擠掉了jQuery,像typescript擠掉了coffeescript,像nodeJS ,PHP,elixir,f#,Ruby ,julia,Python之間在相同領域的廝殺與混戰。
作為一個有點經歷的人,想給的建議是:
把電腦換成Linux 系統,用c 語言實現一個靜態文件伺服器,然後用JavaScript在盡量不引用第三方庫的情況下,做一個可以登入評論動態更新的小網站,然後買個雲端伺服器,實實在在的部署一次。
盡量用最原始的辦法,盡量不要用什麼框架,當這個過程完成以後,至少會有一個骨架,有了骨架就可以讓它豐滿。
為什麼是 Linux 系統,它比較直白的告訴你,作業系統到底是怎麼運作的。
為什麼是 c 語言,它更直白的告訴你,事情是怎麼完成的。
為什麼是JavaScript,它浩如煙海的開源程式碼和nodeJS 簡單的哲學,更真實的向你展現,那些規則和如何玩那些遊戲。
(先說一下,請注意大小寫,關懷強迫症患者...)
就以你考慮的這幾門語言開始說吧:
PHP:後端路線選修,小型的互聯網公司適用,學習門檻低,適合快速開發,但是性能比較平庸(PHP7有顯著改善),作為專為Web而生的語言,近幾年沒啥太大動靜,不如JS和Python發展活躍,好在市場佔有率高,需求量比較大,但是同樣由於門檻低,學的人越來越多,競爭也逐漸加大。(在回答問題之時,我不推薦深入學習PHP)
JavaScript:前後端路線必修,這個目前潛力巨大,熱度很高,如果是搞前端,怎麼深入都不過分,能把JavaScript學好是可以讓你實現財務自由的...但是缺點是知識體系越來越龐大,分支較多,框架更是數不勝數,想學好幾乎沒個頭。後端的話JS也是要掌握的,不然在JS大行其道的今天,你一個後端不懂JS,與前端交流很困難。 JS從一門單純的網頁腳本語言已經蛻變成一門Web全端開發語言,如今JS能做的東西實在太多了,JS社群甚至像Facebook這種矽谷公司都熱衷於努力為JS做開源貢獻!而且像是為非同步而生的Node.js,甚至跨入Native App開發領域的React,每開源一項技術都會是一種Web黑科技,敢問哪種語言能做到? (推薦最有學習精神的開發者深入學習)
Python:後端及運維選修,說是選修,其實基本上不修不行了,如今的創業公司更傾向於Python,從某一方面講他與PHP是極其相似的,但Python能做的事太多了,我最喜歡把Python比喻成一把瑞士軍刀! PHP遠遠做不到。效率上要從兩方面講,性能上,語言本身性能一般,但是作為膠水語言,你懂得;開發上,效率高,這也是受追捧的重要原因。 WEB的話還有維運方向,Python對他們來說就顯得尤其重要了...當然你應該不想去做維運。深入學習Python,會讓你變得更加Geek,會讓你的工作更加Automatic,優秀的Python崗還會付給你大把的薪水(同樣推薦每位工程師深入學習,但是不一定只專注這一項)(
2016.11.15 增:Python一種優秀的性能解決方案是PyPy實現,儘管需要和官方磨合,但是對Python及其性能感興趣,有意了解其底層實現的話好好研究下PyPy)
C++ :底層工程師必修,如果一個Web工程師想深入研究C++,我不排除他有自虐傾向。我本科EE搞硬體的,C++是給我們用的,你對底層開發有追求的話,像是Web Server,你可以深入研究C++,還有C++搞Server也基本上是遊戲領域...而且C++難啊,你就是深入研究幾年也夠嗆研究出什麼道道來,你搞廣義的Web開發的話,有這份心還是好好研究其他的吧。 (不推薦)
Ruby:個人開發者選修,聽過Eagles樂團的《Hotel California》嗎?這首歌太出名了,以至於Eagles的其他優秀歌曲都失去了光澤。提到Ruby,肯定就是RoR框架了,RoR太出名了,人們很難對Ruby有其他的期望,但除了RoR,Ruby還有什麼?是的,還有那紅寶石般優美的語法。寫Ruby是挺享受的,隨心所欲,但抱歉,有時候太自由了卻不是團隊開發所需要的。學習Ruby,可以,我將其定義為個人開發者選修課,或許這門語言更適合創業...當然,你會說Ruby在矽谷很受歡迎,But,這裡是CHINA,you know。還有一點,Ruby畢竟出生在島國,你要是日文沒兩把斧子,還想融入他們社區? (不建議)
Golang:底層工程師選修,這還是一門搞Web底層的語言,他的正確歸類和C/C++一樣,叫做“系統程式語言”,明白了嗎?畢竟是出生在新時代,天生自帶優秀並行程式設計能力,2016年10月TIOBE排行上,Go表現出了強勁的勢頭,而且學Go的人普遍有點想抱Google的大腿的意思嘛...Go和同樣勢頭很猛的Swift一樣,需要觀望,先不要急。 (不做引導)(
2016.11.15 增:目前Go方面成熟的Web框架有gorilla以及國內的beego,可以自行搜尋了解。)
丫的,找了一遍竟然沒提我大Java,網路程式設計第一語言,這可是走向人生巔峰的重要途徑之一啊,你這是戰略性忽視了嗎?
不要去學語言。
去學框架,學工具,最重要的是學原理。
這東西,口味問題而已。
js Python ruby go地位會上升,php會下降,java不變。
學啥都行。
JS簡單即是美
學習無止境!多門技術多條路!