據說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最開始算是Google搞出來(裡面關係詳細自行尋找),但是現在也是自成體系。按照上面的剛剛說的成正比的幾個關係依次對好入座。發現最終影響的主要因素就只剩下2個:自身優缺點和語言誕生時間早晚。其它的都是可以當作統一水平直接忽略不計。
拿語言自身優缺點來說,現在只要能成為主流的web開發語言之一,都彼此會有這樣的或者那樣的優點和缺點,會導致使用者有所傾斜,但是從生產環境來看,它們都是合格的。都是可以無視差異進行使用的。寫個網站,golang可以寫,Java也可以寫。那麼這個時候怎麼選,從公司氛圍來看是使用更牛逼更先進的嗎?更牛逼更先進是怎麼定義的?由於語言各自的差異導致的優缺點各自並存誰能界定哪個更牛逼更先進?我覺得這兩個是凡人思考不了的問題。我是個凡人。但是又怎麼樣呢?(So what?)公司只會從項目實際情況去考慮,這麼牛逼先進的玩意兒,誰懂?沒人?懂的人數不多?一定要這個嗎?不一定。其它不行嗎?其它也行。那幹嘛用這個?因為這個的xxx很xxxx。那xxx語言的xxx特點不是也很xxxx嗎?是的,xxx語言的xxx特點也很xxx。那幹嘛還要用這個?。。。。差點死迴圈。
沒錯,至關重要的最後因素:語言誕生的時間長短。拋開一些奇葩的情況不說(例如apple家的東西),通過排除法,語言誕生的時間更早,意味著這門語言的體系更貼合生產環境(沒得挑,一路用到黑)、自身進化得更全面減少風險性、培養更多使用受眾延續自身體系的推廣和發展形成良性迴圈、更容易構建更多的早期的基建項目形成體系裡面的應用方案的積累、與系統形成更深層的耦合關係導致不易被摒棄性、容易全面壓縮同領域內後續語言發展的潛力空間增加凝滯性。。。。等等。一大堆東西。說那麼多,就是告訴你大量公司都是用那麼幾種主流現成的,招聘上招的人也是來來回回用那麼幾種主流的,公司還要考慮各種成本、項目風險。用熟不用生。所以,我現在告訴你,就算是golang是種絕對牛逼無敵的web開發利器,也不會成為主流的web開發技術,因為其它的語言也很牛逼,而且他們人多,雙拳難敵四手啊,更何況那麼多手。特別一點是,go的優勢不全在做web上!!!(這裡就不深入了,不然又是長篇大論了。)
回答完畢,覺得回答還行的,有看到的童鞋麻煩你伸伸手指點個贊鼓勵下,促進下知乎回答問題的氛圍。(^_^)選型都有類似的風險/成本評估過程的,這是技術,但主要不是技術,是成本:
- 庫成熟嗎?我用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開發領域
不會成為主流。
做為一個用 Go 語言做過網站,並運行了幾個月的人。我來說說我的看法。
其實有建站需要的人,很多對技術露出一絲驚詫後,很快就又回到了成本問題上。
像 PHP 各種毛病一大堆,即便是個老手,也很難擺脫對開發文檔的依賴,為什麼大多數網站還是用 PHP 呢?一個公司,除非是創業公司,不然很少會改變他們主要使用的語言。因為他們太熟悉原來的語言,投入了太多資源,他們沒有動力在風險未知的情況下,因為某些誘人的賣點而切換一套新語言。
就像 Google 為什麼選擇 Java 作為主要的 Android的開發語言。選擇什麼語言,還涉及到一個生態問題。受教育人才的影響,受市場接收度的影響,受存在的解決方案的影響。即便 Google 那麼多牛逼的 C/C++ 高手,它們還是選擇了一種面對 Object-C,毫無效能優勢的語言。
再回到 Go 語言的本身,它本身並不是用來做網頁伺服器的。它更注重的是分布式系統,比如廣告和搜尋,那種高並發的伺服器。再者,雖然不太喜歡 Node.js ,也用它寫過網站伺服器,伺服器代碼和用戶端共用,只是一個美好的夢想,但不得不承認,它更適合做網站伺服器,除了成千上萬的現成模組,在Node.js 裡載入一個模組,把其他網站的內容抓過來,就能像客服端一樣,用jQuery來分析和處理。而且,現在的 js壓縮,scss,less,前台開發的工作流程,已經越來越難擺脫 Node.js 了。
但 Go 語言在網站開發方面還遠遠不夠,雖然常用的功能模組都陸續出現了,但它們沒有時間沉澱,沒有豐富的相關資料,還是需要同樣的時間曲線去學習,去研究,去調試。
一種語言要打敗老牌老大,除非能說服各個公司的 CEO,能現實的創造巨大的經濟利益。否則,開發人員的話語權其實很少。
基本很難,因為錯過web應用發展高峰了。如果2000年左右出現還有戲Erlang 還沒說話呢其他語言出來湊什麼熱鬧(不會,不一定,不能真閑
國外一個交友網站,plenty of fish, 一個人開發的,03年建站,當時用http://asp.net和SQL Server,這麼多年過去了,每月google廣告收入就有50多萬美元,前不久把這個網站以5點幾個億美元賣了。
用啥語言都行,你擅長什麼用什麼,抓緊把你的idea實現吧。
用什麼語言寫服務,真的不是關鍵,關鍵是你要盈利!