rust語言和go哪個好 rust和go誰好
對比 Go 語言,Rust 有什么優勢和劣勢?
我并沒有什么編程的經驗,覺得編程實在是太復雜了,不喜歡去研究太多,對這個也不怎么懂,只能說自己是個半吊子,就是所掌握的知識,也是東拼西湊的,朋友和我說點兒,自己去書上看一點兒,只能說根據自己的體驗給出一些體會吧。
成都創新互聯公司是一家專業提供郴州企業網站建設,專注與做網站、成都網站設計、H5頁面制作、小程序制作等業務。10年已為郴州眾多企業、政府機構等服務。創新互聯專業網站設計公司優惠進行中。
Rust的優勢是:
1、Rust把安全、精確的內存管理作為一切的中心放在首要的位置。
2、Rust同時擁有特別強的控制性和特別強的安全性。
3、Rust語言通過: 優秀的類型系統設計、 嚴格的編譯器靜態審查、 配合程序員局部核對、加上少量的運行時校驗,保障了內存安全。
4、Rust的語言特別的復雜,導致學習曲線比較陡峭,對于初學者來說難度較大。但學通之后將終生受益。
5、效率高,速度特別的快
6、 支持范型
7、 社區活躍度很高,更加的強調了社區的作用。
8、Rust 有更強的語義,更容易捕獲錯誤的邏輯,編譯器直接檢查出你代碼中的不安全的部分
Rust的劣勢是:
1、 語言相對來說比較復雜,對于新手來說,讓新手摸不著頭腦。
2、還不算太穩定。
其實我覺得什么代碼啊編程啊這些東西還是比較適合理工的學生去研究,我一看腦袋就大,完全不明白在講什么。我大概了解的就是這些,語言的話大家可以多方面的去了解,也不是說有缺點就是不好,看配置看個人吧,每個人習慣不一樣,也許有的人用不穩定的還覺得挺好呢,有的人就喜歡比較完美的,在我看來編程這個東西真的是很復雜,會有很多的代碼,這些代碼弄得我自己頭都大了,有的時候還得去惡補一下。
Rust 和 Go,哪個性能更好?
要說性能,那是Rust更好。更多的編譯期優化、無 GC 等特點加持,開發高性能應用自然是 Rust 性能高。據統計利用 Rust 開發的 RipGrep 性能甚至賽過使用 C 開發的 Grep。
但是性能不是唯一考量,當你糾結 Borrow Check,糾結 unsafe,糾結 copy clone,糾結各種奇怪的類型限制的時候;當你 cargo build 怒草電腦風扇三分鐘的時候;人家 GoLang 可能早就發兩個版了。
同時 Rust 的語法花活眾多,遍歷數組可以寫循環也可以 for_each() 一行流。不像 GoLang 那么白開水誰寫都差不多一個味道,經常第一天想到神來之筆快樂 Coding 到半夜第二天爬起來發現昨晚寫的都甚么東西看不懂不如蜘蛛爬,這是墜痛苦的!
Go 的編譯器為了個編譯速度快連循環不變式提升、循環展開、對齊等等優化一個都不做,函數內斂一堆限制大多數情況都不做(比如函數里有個 for 或者 defer 或者 select 等,或者函數多于 40 個表達式),擁有的優化一只手都能數的過來:
基礎優化欠缺,高級優化更是一個沒有,和在 Debug 配置編譯下的 -O0 優化的 C++ 差不多一個概念(而且跑得更慢),哪來的資本和 rust 比性能。
其他方面:
而且 Go 的 GC 吞吐量也很低,大多數情況下各方面 Go 跑的甚至都比 Java 更慢。只不過得益于 AOT 編譯的設計,相比 Java 而言除了內存占用小和啟動速度快之外就沒有任何優勢了,比較適合拿來做性能不關鍵的命令行工具。
個人還是更喜歡 Rust。
Rust 和 Go 的并發模型有什么不同,為什說 Rust 的并發模型更好
1.根據Rust的特點和定位適用于對控制性比較強,對性能很敏感的領域,比如底層軟件(OS/driver),基礎系統軟件(Compiler/VM/DB等),性能要求比較高的應用軟件(瀏覽器/圖形圖像處理/游戲/高性能服務器軟件等,或者可能包括近來很火的ML應用方向)。2.底層軟件(比如OS/driver)部分是和C應用領域有很大重合度的,在這個領域我認為對C沖擊不大。在這里C已經足夠好了,而且這些領域技術性很高,但業務邏輯其實并不算太復雜,Rust的優勢作用有限。而且Rust相比于C語言,帶來了一定的“黑盒”和這些領域一些不需要的語言復雜特性。C作為“可移植的匯編”恰到好處的非常適合這個領域,其他語言基本無法構成挑戰。3.前面1中提到的領域除了底層軟件(OS/driver之類)剩下的領域,C++目前最具有優勢。在這些領域C++相對于C提供了高級特性方便開發,相對于JVM系的性能更高內存更少。(雖然這些領域有些知名軟件是C和JVM系的,比如postgresql/redis/nginx/Hadoop/spark等,但在這些領域目前只有C++一個是全能型)我認為rust的主要戰場就在這里,需要對決的對手就是C++。C++既有的力量(系統/代碼/人員/習慣)太強大了,在這些領域完全打敗C++是非常困難的。而且C++也在不斷發展,近年來發展的步伐也快了起來,C++11/14/17等等。但C++的歷史包袱是很重的,越發展其實復雜性也在不斷提高,何況有些問題(像安全/異常/復雜繼承等等)是基因里的,通過增加feature打補丁是彌補不了的。Rust最容易吸引的人群可能是C++程序員:因為,一方面解決了不少C++的痛點,另一方面Rust的很多特性其實有點復雜也有點門檻的。這些特性背后的動因有C++背景的程序員是非常容易理解,也是不少C++程序員夢寐以求的。相對而言,其他語言背景出身的程序員,對Rust的共鳴性遠遠沒有C++程序員強烈。猜測Rust會:a.蠶食掉一定的C++份額。一些可能本會選擇C++開發的新項目,可能會選擇Rust。b.蠶食掉一定的Java份額。有些項目選擇JVM系是由于C++開發太復雜,同時該項目對性能又有一定的要求。那么Rust出現以后也會蠶食掉一定的此類項目。c.蠶食掉一定的golang份額。不滿意gc(即使1.5改善了,gc的先天問題是無法徹底解決的),不滿意泛型,不滿意性能的一部分項目。不過也要依賴于Rust未來并發的解決方案是否足夠理想了。1.0這種是沒戲的。d.移動端Rust從自己實力上說是夠的。不過這個真的要看出品移動端設備的“爹”的意思了。Rust自身有一些優勢非常明顯,在這些領域是很有競爭力的。Rust社區一定要重視IDE開發環境,花費精力出eclipse/intellji/vs的高質量的IDE插件,對于推廣和流行大有幫助。只要Rust社區不要犯D語言曾經反復折騰的毛病,能像golang社區那樣基礎做的不錯并且工程質量優秀,那么未來Rust出幾個殺手級的應用,前途還是很可期的。
對比Go 語言,Rust 有什么優勢和劣勢
對于Rust的優勢我的體會如下:
* Error Handling機制好太多,用Result封裝函數運行結果靈活性大大提高,代碼也大大簡潔
* 函數式編程支持較好,有Lambda這種東西,使得它寫起來甚至有Ruby的感覺
* 效率高,沒有了GC和Runtime,速度是沒得說的
* 支持范型
* 有宏和編譯器插件這些黑客技,語言擴展性較好
* 社區活躍度更高,更強調社區的作用,有[RFC](GitHub - rust-lang/rfcs: RFCs for changes to Rust)。[中文社區](Rust China)也有了
Rust的劣勢是:
* 語言特性復雜,對新手就不會那么友好
* 穩定性不夠,語言的進化較激進
* 第三方庫的成熟度還落后于Go,商業化的應用也還不夠
名稱欄目:rust語言和go哪個好 rust和go誰好
標題來源:http://www.xueling.net.cn/article/ddcigjp.html