作為一名WEB工程師從長遠的角度來講 哪幾種語言 更值得深入學習?
我想建立自己的技術棧 目前考慮的語言有 PHP javascript python c++ ruby go
有不錯的推薦也請說明,謝謝。請從長遠的角度進行分析 並說明原因,感激不盡!
不要陷入語言之爭!
每當有人問我學哪門語言的時候,我都是這樣回答的:
你身邊有會 JAVA 的,你就去學 JAVA,
你身邊有會 PHP 的,你就去學 PHP,你身邊的人會什麼,你就學什麼,不會就問他。他不理你?
請他吃飯呀!他還會告訴你你接下來應該學什麼。
跟人,而不是跟技術。
你說身邊一個會編程的都沒有要怎麼辦?你不是遇見我了嗎?關注我,學前端!1、編程語言只是工具,先選一種精通了(Python、php、Java等)。2、web開發,javascript 必須會的,前提是1中的任意一種精通了,javascript 不是事兒,很快就可以拿下。3、web開發,有走前端和後端路線。除非你想當全棧工程師。4、重點來了,如果走後端,不是純編程語言的事,你要研究的多了,分散式,高並發,資料庫主從,讀寫分離。Nosql,緩存、API開發,全文檢索、運維等等。先選擇一門編程語言精通了,Go 可以關注,目前選擇Python 深入學習是比較好的選擇之一。
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 簡單的哲學,更真實的向你展現,那些規則和如何玩那些遊戲。英語。
對於找學習,做項目,找工作,推薦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。對於底層的機制,很少有相關的資料供你一步一步學習。不要跟我說直接看源碼,我們都是普通人。不是大神。
以上就是個人愚見。(首先說一下,請注意大小寫,關愛強迫症患者...)
就以你考慮的這幾門語言開始說吧: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,網路編程第一語言,這可是走向人生巔峰的重要途徑之一啊,你這是戰略性忽視了嗎?C#大法好,退python保平安
人在碼 天在看 弱類型留禍患類型一錯天地滅,TypeScript保平安非同步回調反人類,教你await莫拒絕編不下去了,軟粉來續選擇一種語言精通,掌握其他語言。
既然是做互聯網,高效是重要的一點。
什麼大數據,無非也是數據進去洗一遍,最終還是從資料庫取
什麼集群分散式,解決方案都爛大街了漫天的框架,只有你用不到,沒有涉及不到
遇到問題,能找到100種方法解決,並能從100種方法中選擇目前階段的最優解才是正事。養家糊口用Java喜歡折騰用Node簡單快速用php敏捷開發用ror彰顯逼格用python
JS簡單即是美
python and js
作為web工程師來說,因為是做前端的,同時後台的一些知識也需要掌握,比如:
1、你可能需要掌握的是JAVA以及C#開發語言。相較於腳本語言來說,稍微困難些。
2、 HTML、CSS 、JavaScript 這些對於後台來說,都需要進行掌握。學習 &>&> HTML5入門教程(前端必備)
3、 jQuery ,現在有個崗位叫全棧工程師,和web工程師有所交集,或許對你也有所幫助。
還有時間學別的語言...
最後你會發現你都要懂,當然,靠一門語言是沒什麼問題的,我會好多門,但是還是已經快餓死了。
略懂php。我覺得這些語言都可以學,而且僅僅做後端的話,學的也很快
java,js或者:Go+python
學習無止境!多門技術多條路!
為了深入理解現在流行的函數式編程(js裡面也用到),我tm去學Haskell了(匿了)
在合適的場景下選擇合適的語言。先精通了某一門語言了,再來擴充技術棧吧。題主提到了web工程師,php是世界上最好的語言!(逃
個人建議,僅供參考。1.先學一個需要部署到伺服器(容器)才能跑起來的語言,如Java或C#。這些學起來要比腳本語言難,但對於理解整個Web機制非常有幫助,又不像C++/C那樣艱難。這個階段不要用任何框架,踏踏實實搞清楚每一個步驟的意義和原理。2.然後去學PHP。這個時候應該就輕車熟路了,開發效率也會提高很多。可以搭配適當的框架,幫助學習設計模式。3.之後可以再返回來去學Java上的一些框架,如著名的Structs、Spring等。Ruby之類可以先放一放,可以到3步的時候再著手學習。PS:至於前端,不要著急,慢慢來,做後台的時候捎帶學學HTML(5)/CSS 3/JavaScript,審美沒有問題基本就可以做出能入目的頁面了。這個時候可以考慮用現成框架,不要用壓縮好的成品,去下源碼,看看人家怎麼做的,CSS用LESS/SASS編譯,(喜歡的話也可以用CoffeeScript編譯JavaScript不過個人覺得jQuery已經做得很好了,再用CS反而不適應,這個依個人喜好而定)依葫蘆畫瓢,慢慢地也就熟練了。
目前看 js夠了 從負載均衡 自動伸縮 後端前台 api 業務邏輯 資料庫 都能完美搞定
後端後台大數據分析當然還是python java但js也能搞定 python做prototypejs優化提升性能你要記住 語言只是工具 只有編程思想是值得學習的 建議你去看看java和jvm了解這個老古董為什麼一直佔盡優勢 還有Haskell,Lisp,scheme,不用精通只需了解核心思想;
那些現在流行的玩意比如node,Go,Erlang都多多少少借鑒了老語言設計的編程思想,當你掌握思想了之後,選用什麼工具還不是分分鐘的事情?推薦閱讀:
※如何理解 Golang 中「不要通過共享內存來通信,而應該通過通信來共享內存」?
※為什麼 Go 語言如此不受待見?
※Golang 里的fatal error怎麼處理?
※golang里gc相關的write barrier(寫屏障)是個什麼樣的過程或者概念?
※為什麼go語言gc的時候要暫停整個程序?
TAG:JavaScript | Python | PHP | C | Go語言 |