go語言以後會不會成為主流web開發語言?

據說go語言的並發處理很好?能不能和java php競爭?


擼主多慮了,沒有競爭關係啦....

雖然 go 成為了世界上最並發的語言,

但是,

這並不妨礙 php 成為世界上最好的語言,

也不妨礙 java 成為世界上最有模式的語言,

更不會妨礙 c++ 成為 21 天就能學會了的語言...


語言真的那麼重要嗎?web後端應用大部分都是死在資料庫上的,用php只要演算法得當,一樣也非常穩。況且現在的伺服器都是白菜價了,實在性能受限就買伺服器搞輪詢咯。現在的互聯網公司能順利活過三年的都寥寥可數,要是被技術再一綁架,那就直接GameOver了


以後會有很多種主流web開發語言。

go也可能會是其中之一。


謝邀。沒想到再次被邀請回答關於golang的問題,這個對於我這個平時寫客戶端C++用得比較多,寫服務端用golang比較少的人真是感到又一次amazing。

我的回答如下:

在用golang這門語言的過程,關於這個關於針對某一門語言能否達到類是這種「xxx的某方面很好,能否跟aa,bb競爭」、「xxx能否成x方面的主流」甚至"xxx能否成為制霸某個領域的語言」之類的的話題,我覺得要回答這類問題。得先自己縱橫下web裡面諸多語言,基本主流的都用過一遍,對主流web語言背後的支持方有一定深入了解才能做出更加接近客觀的答案。所幸,我以前干過這種事。也應用過到實際項目中。用C#的WCF結合ajax寫過WebOS,用PHP寫過網站和系統後台,用Flash寫過網站,用Java寫過B/S,早期的asp的VBScript也做過網站。一直到後面切換到遊戲領域開發的C++和golang。

到現在的自己的總結就是:語言在某種領域顯得比其它語言的強勢與否,跟它背後的支持方、跟它自身的優缺點點、跟它的文檔資料詳細與否,跟語言誕生的時間早晚,成正比關係。拿幾個主流的做對比,Java背後有被Oracle收購的Sun,PHP的整個組織和相關社區支持也很給力,怎麼說Facebook也不會讓人打php的臉的,Golang最開始算是谷歌搞出來(裡面關係詳細自行查找),但是現在也是自成體系。按照上面的剛剛說的成正比的幾個關係依次對好入座。發現最終影響的主要因素就只剩下2個:自身優缺點和語言誕生時間早晚。其它的都是可以當作統一水平直接忽略不計。

拿語言自身優缺點來說,現在只要能成為主流的web開發語言之一,都彼此會有這樣的或者那樣的優點和缺點,會導致使用者有所傾斜,但是從生產環境來看,它們都是合格的。都是可以無視差異進行使用的。寫個網站,golang可以寫,Java也可以寫。那麼這個時候怎麼選,從公司氛圍來看是使用更牛逼更先進的嗎?更牛逼更先進是怎麼定義的?由於語言各自的差異導致的優缺點各自並存誰能界定哪個更牛逼更先進?我覺得這兩個是凡人思考不了的問題。我是個凡人。但是又怎麼樣呢?(So what?)公司只會從項目實際情況去考慮,這麼牛逼先進的玩意兒,誰懂?沒人?懂的人數不多?一定要這個嗎?不一定。其它不行嗎?其它也行。那幹嘛用這個?因為這個的xxx很xxxx。那xxx語言的xxx特點不是也很xxxx嗎?是的,xxx語言的xxx特點也很xxx。那幹嘛還要用這個?。。。。差點死循環。

沒錯,至關重要的最後因素:語言誕生的時間長短。拋開一些奇葩的情況不說(例如apple家的東西),通過排除法,語言誕生的時間更早,意味著這門語言的體系更貼合生產環境(沒得挑,一路用到黑)、自身進化得更全面減少風險性、培養更多使用受眾延續自身體系的推廣和發展形成良性循環、更容易構建更多的早期的基建項目形成體系裡面的應用方案的積累、與系統形成更深層的耦合關係導致不易被摒棄性、容易全面壓縮同領域內後續語言發展的潛力空間增加凝滯性。。。。等等。一大堆東西。說那麼多,就是告訴你大量公司都是用那麼幾種主流現成的,招聘上招的人也是來來回回用那麼幾種主流的,公司還要考慮各種成本、項目風險。用熟不用生。所以,我現在告訴你,就算是golang是種絕對牛逼無敵的web開發利器,也不會成為主流的web開發技術,因為其它的語言也很牛逼,而且他們人多,雙拳難敵四手啊,更何況那麼多手。特別一點是,go的優勢不全在做web上!!!(這裡就不深入了,不然又是長篇大論了。)

回答完畢,覺得回答還行的,有看到的童鞋麻煩你伸伸手指點個贊鼓勵下,促進下知乎回答問題的氛圍。(^_^)


golang 的優勢是microservice 的架構。一些原本php寫的,現在發展起來了。用golang升級。

也就是說,一個產品是多個語言並存的。至少,我們現在php java c golang nodejs 都真實在跑。


選型都有類似的風險/成本評估過程的,這是技術,但主要不是技術,是成本:

  • 庫成熟嗎?我用PostgreSQL和Redis,還有幾個第三方服務和多個支付網關,有庫嗎,這些庫經過實際檢驗嗎?

  • 社區大嗎?行業里是不是有實實在在的應用,背後是不是有大量的技術人員在持續貢獻,而不只是一小撮人在advocate,跟著一幫人後面嚷嚷,但沒多少人實際在用。

  • 資料好找嗎?80%的問題能一次Google解決嗎?

  • 好學嗎?junior的技術能比較快地學會並開始產出嗎?從入門到成為懂最佳實踐的開發者所需要的時間是不是和其他web語言相當。

  • 適合快速開發嗎?Go開發對需求變更的響應能有多快?是不是需要每次變更他們都需要research新方案。

  • 有致命瓶頸嗎?比如現有系統的核心功能嚴重依賴LAMP或LNMP底層的某個實現而Go沒有。

  • 有關鍵優勢嗎?我的這組REST API用PHP,Python要200台伺服器,用Go只需要20台。

  • 條件允許我用嗎?現有系統不會因為引入Go而需要大幅改造,有也是在預算和允許時間內。

用Go寫過兩個小Web項目,Go是適合Web開發的,庫是夠成熟的,Go的性能對一般項目沒意義,所以只是Nice to have,語言設計上的一些優勢對WEB後台開發來說也談不上Must have,況且強類型的語言畢竟沒有PHP,Python這樣的語言好學,或者說,強類型對大多數Web應用沒有意義,業務邏輯需要的數據尤其彆扭。

Web後台的性能不會依賴於單進程的並發實現,而是多進程下保證了服務穩定的前提下的流量平衡,性能問題主要是由架構解決的,而不是某種語言本身。

Go在Web開發領域不會成為主流。


這個問題註定會成為

"Php是世界上最好的語言"

「是你麻痹oc還沒說話呢」

「你們這些傻逼忘了被erlang支配著的恐懼?」

Balabala……


不會,不一定,不能


Erlang 還沒說話呢其他語言出來湊什麼熱鬧(


真閑

國外一個交友網站,plenty of fish, 一個人開發的,03年建站,當時用http://asp.net和SQL Server,這麼多年過去了,每月google廣告收入就有50多萬美元,前不久把這個網站以5點幾個億美元賣了。

用啥語言都行,你擅長什麼用什麼,抓緊把你的idea實現吧。

用什麼語言寫服務,真的不是關鍵,關鍵是你要盈利!


做為一個用 Go 語言做過網站,並運行了幾個月的人。我來說說我的看法。

其實有建站需要的人,很多對技術露出一絲驚詫後,很快就又回到了成本問題上。

像 PHP 各種毛病一大堆,即便是個老手,也很難擺脫對開發文檔的依賴,為什麼大多數網站還是用 PHP 呢?一個公司,除非是創業公司,不然很少會改變他們主要使用的語言。因為他們太熟悉原來的語言,投入了太多資源,他們沒有動力在風險未知的情況下,因為某些誘人的賣點而切換一套新語言。

就像 Google 為什麼選擇 Java 作為主要的 Android的開發語言。選擇什麼語言,還涉及到一個生態問題。受教育人才的影響,受市場接收度的影響,受存在的解決方案的影響。即便 Google 那麼多牛逼的 C/C++ 高手,它們還是選擇了一種面對 Object-C,毫無性能優勢的語言。

再回到 Go 語言的本身,它本身並不是用來做網頁伺服器的。它更注重的是分散式系統,比如廣告和搜索,那種高並發的伺服器。再者,雖然不太喜歡 Node.js ,也用它寫過網站伺服器,伺服器代碼和客戶端共用,只是一個美好的夢想,但不得不承認,它更適合做網站伺服器,除了成千上萬的現成模塊,在Node.js 里載入一個模塊,把其他網站的內容抓過來,就能像客服端一樣,用jQuery來分析和處理。而且,現在的 js壓縮,scss,less,前台開發的工作流,已經越來越難擺脫 Node.js 了。

但 Go 語言在網站開發方面還遠遠不夠,雖然常用的功能模塊都陸續出現了,但它們沒有時間沉澱,沒有豐富的相關資料,還是需要同樣的時間曲線去學習,去研究,去調試。

一種語言要打敗老牌老大,除非能說服各個公司的 CEO,能現實的創造巨大的經濟利益。否則,開發者的話語權其實很少。


Go語言已經殺進排行榜前十名了,你說未來的趨勢會怎麼樣?(當前時間2017年7月,半年以後再回來看這個答案)


我接過那麼多年php的遊戲伺服器的坑

除了資料庫加鎖,就沒見過幾個考慮並發的。

所以要流行起來……

好歹等那麼多挖坑的程序員理解什麼是並發再說吧

雖然作為一個傻逼屌絲,我也不太清楚php做web伺服器的時候,該考慮什麼並發……

其實我想說,go並沒有撓到這些人的癢處啊。

給撓到癢處的人,都特么是寫c和java伺服器的……


不會。

web開發這這方面,php,py,node都更合適。

嗯,性能是很重要,但易用性、經驗積累、人員儲備、工具及生態更重要。

如果在這三者裡面選一個,node可能性最大。雖然目前php是這方面老大。


垃圾有垃圾的優點這個事情還是交給垃圾去做比較好,不管怎麼說人家也是 全宇宙最好的語言沒有之一,go 還是老老實實做好自己的本職工作喲


用了半年的go 之前用php和node都寫過web後端 node的生態環境的確已經很好 大量好用的庫 大量資料和解決方案 php就更不用說 混了那麼久 那麼多人那麼多公司在用 而go卻存在很多問題 比如go的資料極少 官方文檔給的很簡略 大致只是告訴你某個函數是做什麼的 至於怎麼用 他的內部依賴 什麼時候調用會非法 都隻字不提 使用go的過程中 都是一直一邊看go的源代碼怎麼實現的 一邊在自己的工程中使用

但是go的開發效率是可以與php node抗衡的 網路庫 尤其是http包 以及io庫的封裝十分變態 用來寫web效率是足夠的 性能的話 作為編譯型語言 go的性能也是ok的 不過同樣作為編譯型語言 go一旦測試不足 出現致命錯誤 那就是整個伺服器直接崩潰 而php node就比較軟 比如go的類型斷言失敗 而且沒有做異常處理 那麼伺服器gg

我個人觀點是go可以做web開發 但優勢不明顯 不會成為主流web開發語言 然而他的優勢在做一些更底層的服務 比如tcp層面的一些消息推送 比如linux系統的容器技術的管理 go是可以調用c的 這讓go可以做很多系統底層次的事 至於go的並發 的確很好用 並發的控制和消息傳遞也比較簡單 相對於php go是自帶了nginx之類的功能

還有一個比較麻煩的問題是go的gc go的gc據說比較原始 當go程序佔用內存比較大的時候 gc可能會導致go程序所有線程暫停很久

更新

go1.5的gc已經不再有太大問題了 go gc採用了一種不用停止全世界的演算法 可以參加我的博文http://m.blog.csdn.net/article/details?id=50779542


看了這麼多回答 很汗顏。

小型站點沒必要用go。

大站點高並發的go是最佳選擇…會不會流行?

大廠里確實能發揮作用,作為一個工程性極強的語言,確實很適合,重前端+go服務介面也不失為一個良好的架構。當然很多人提到的gc,不排除代碼寫成一堆屎的人會濫用。見到一個寫過CPP幾年的人的go代碼,也很爛,大量的局部變數…

除了渲染頁面,其他甚至到存儲它都可以接管

———————_________更新下

局部變數可能沒說清楚 避免引起攻擊,我指的是 for range 里的局部變數。


業務是公司的,技術是自己的

所以go必學,這是擴展自己知識面,增長見識的大好機會,至於go本身好不好,誰care?反正是公司兜底


go驚人的編譯速度可以實現熱編譯,開發效率和性能兼得。不得不說go的抽象能力並不足,開發起來沒有腳本語言那麼爽快。


If(php是最好的語言),首先你得運行這句


推薦閱讀:

go語言如何開發帶UI的軟體?
Google的新操作系統Fuchsia沒有使用Go語言開發,Go作為系統開發語言的定位是否已經失敗?
scala的akka和go的goroutine有什麼區別,分別更適合哪些應用場景?
Go語言做Web應用開發的框架,哪一個更適合入門?
多線程情況下 很多變數 頻繁訪問 難道每個都要加鎖訪問嗎?

TAG:Web開發 | PHP | Java | Go語言 |