【轉載】遊戲並發編程的討論 & Nodejs並發性討論 & 文法糖術語

來源:互聯網
上載者:User

標籤:

知乎上這篇文章對於遊戲後端、效能並發、nodejs及scala等語言的討論,很好,值得好好看。

https://www.zhihu.com/question/21971645

經常瞭解一些牛逼技術人員的分享,比閉門造車或者停留在陳舊技術固步自封,要好多了。

下面是一些摘錄:

用C++開發,1000並發是基本。
C++的優點是與硬體近,所以處理圖形時速度快很多,如果是處理業務,其實主要是看選用的演算法的時間複雜度。各語言之間的執行效率差別沒那麼大,同樣用過C++跟JAVA,相比較的話JAVA的學習曲線更低,開發效率更高,更推薦用JAVA來做伺服器。當然其它語言像GO,ERLANG,PHP做伺服器的也蠻多的。
因為讓OS處理常式邏輯切換得反覆陷入核心,有的人覺得這樣太慢,做了一些處於user space的線程,進程內自己控制多個邏輯流。因為語言描述能力的限制,在C/C++上面寫還有用這種東西都太麻煩。於是產生了erlang, go, lua裡面的coroutine文法糖。
注意這一點,每次我會運行一個任務,直到它完成或者是發生i\o調用都不會主動切換至其他的程式流。
那麼如果這一個任務裡面涉及過於大量的計算,那麼整個地圖進程都會被block在這裡。而正因為node.js是非同步,所以需要不斷的寫回調監聽i\o完成的訊號。單個任務的邏輯流會多次的被打斷。
當任務變得相當複雜的時候,即有所謂的callbak hell,會帶給調試開發非常大的麻煩。
1. 非同步你提到scala,nodejs,它們的開發模式是非同步。c++也可以寫成非同步,近三年內,我寫了不下20w行,超過50個c++做的非同步伺服器,其中還包括儲存。
你的取捨應該是你的團隊和項目複雜度,在使用c++之後,還能否快速迭代。如果複雜度太高,我也建議使用go語言2. 還是非同步nodejs是函數式的非同步,協程是同步的代碼,執行流程卻是非同步。go和lua,erlang都是原生支援它,c++也可以,還是團隊能力和複雜度的取捨。
go也是系統級的語言,能和c代碼互調,能力區間很大3. 效能取捨scala是跑在jvm上面的,效能你懂。nodejs是js代碼,運行之前先編譯,效能會比前者好一些,使用體驗來看,效能和c++還是有距離。
一些它沒提供介面的系統能力,你就用不到了,束手束腳。c++啥都能做,就是複雜些。就你提到的兩個c++的複雜的地方,nodejs和scala上也不見得簡單。有朋友寫了一個nodejs svr,有記憶體佔用的問題,相當於記憶體流失,只能定時重啟解決。
對象的生命週期問題,不是高手,也搞不定4. 還是效能取捨c++是快。但是國內的絕大多數程式員寫的程式慢,更多的,是自己糟糕的code能力搞出來的。使用c++語言,高手換java做同樣的事情也能比它快很多。
所以,核心問題還是你們Team Dev的人,他們的團隊合作以及單兵作戰的能力。
論個人實力,國內的程式員,能趕上google平均水平的非常少,思考問題的方式,自然要作調整。要更關注團隊本身在語言上的適應度,而不是只論語言本身能否做某件事情。

 

文法糖:

文法糖(Syntactic sugar),也譯為糖衣文法,是由英國電腦科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指電腦語言中添加的某種文法,這種文法對語言的功能並沒有影響,但是更方便程式員使用。通常來說使用文法糖能夠增加程式的可讀性,從而減少程式碼出錯的機會。舉個例子:在C語言裡用a[i]表示*(a+i),用a[i][j]表示*(*(a+i*數組a第二維的長度)+j),由此可見文法糖不是“現代語言”專屬,這種寫法簡潔明了,容易被人理解。比如Erlang, Go, Lua裡面的Coroutine。

 

【轉載】遊戲並發編程的討論 & Nodejs並發性討論 & 文法糖術語

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.