rust c++ 區別(Rust與Go在區塊鏈中的應用比較 (2022))
雖然Go和Rust并不是最流行的編程語言,但它們經常被那些需要在區塊鏈中使用它們的人比較。
畢竟,這兩種語言都是在上世紀80年代和20年代出現的少數語言之一,使它們在過去兩個世紀才涉足的語言海洋中脫穎而出。
當Golang與Rust被徹底研究后,就會發現這兩種語言有驚人的相似性。
從我們的六個不同類別來看,Rust似乎比Go有更多的優勢。然而,加密原語在Go中得到了更好的支持。它包括本地庫、OpenSSL包裝器和新的Tink庫。
至少,Go的標準庫隱藏了許多危險的方法,如分組操作,這使得原型設計有趣的想法變得很痛苦(是的,你可以用各種方式覆蓋)。
先在每種語言中完成一些加密挑戰,看看你喜歡哪一種。
在這篇文章中,我們將比較和對比Rust和Go作為區塊鏈編程語言。
區塊鏈的Rust與Go的對比
我假設你對學習如何在Go vs. Rust中實現加密算法和協議感興趣,而不是如何使用高級庫。
在實現低級算法方面,這些語言之間似乎沒有什么區別。都是同樣的算術和邏輯運算,這里和那里有一些語言上的怪癖。
對于高性能(和高安全性)的應用來說,你的庫往往只是一個美化的包裝,圍繞著匯編。
Rust有一些好處,可以幫助減少模板(最明顯的是它的宏系統),以及與C庫的零成本互操作性(與Go不同),但沒有革命性的東西。
然而,Go在這里有一個優勢,因為谷歌可以簡單地雇用全職的密碼學工程師來創建一個世界級的最常見的算法的實現(AFAIK,Go的標準中的密碼學算法的實現嚴重依賴于手動編寫的匯編)。
這兩種語言的主要區別在于類型系統的力量。
一個好的類型系統可以幫助實現互操作性,甚至可以通過編碼在編譯時檢查的各種不變量來提高性能(例如,通過允許編譯器消除運行時檢查)。
在這方面,我相信Rust已經遠遠領先于Go,并且還在繼續改進(例如,很快,我們就會有穩定的常量泛型MVP)。
例如,在RustCrypto中,trait crates包含各種算法家族的 "接口"。
在org中幾乎所有的算法實現(以及一些第三方的實現)都是按照這些特質來寫的,允許你像樂高積木一樣交換算法和組合算法,而不需要去挖掘源代碼。
如果你想支持那些沒有被廣泛使用的算法(例如,區域標準或新開發的算法),這個特性就特別重要。
當然,Rust的加密生態系統還包括 "傳統 "的庫,如OpenSSL/libsodium包裝器、操作系統加密提供者,以及最引人注目的ring。
Ring大量借用了BoringSSL(谷歌對OpenSSL的分叉)的代碼,故意限制了支持的算法數量,并被Rustles使用,其性能已經超過了OpenSSL。
Golang和Rust的概述
看看這個Golang和Rust的并排比較。這樣一來,你就可以確定你所選擇的語言的功能得到了最大的發揮。
1、性能
Go和Rust都對其性能指標給予了高度評價。作為新的語言,關鍵是它們不僅要有良好的性能,而且要比以前的語言有更好的性能。
盡管這兩種語言由于其功能設置而顯得比其他語言更快,但現在重要的是要知道它們的比較。
一個簡單的基準測試表明,Rust在各種任務中都優于Go。
Rust在速度和性能方面都超過了Go。
2、特性
Rust的一長串特性,如零成本抽象、錯誤信息、移動語義、數據競爭預防、模式匹配等等,使Go的關鍵特性如二進制文件和包管理相形見絀。
Golang和Rust的比較顯示,Rust的功能比Go多。Rust取得了勝利。
3、開發的便利性和速度
Go的可讀性使其簡單易學,所以編碼應該是輕而易舉的。
相比之下,在Rust中,諸如借用和所有權等高級概念使該語言更難掌握。Rust并不害怕承認它有一個陡峭的學習曲線。
Go比Rust更方便用戶使用。Go贏了。
4、維護
你需要做的所有事情都包括在維護中,以確保你的程序正常運行并將繼續運行。
總而言之,維護你的代碼庫在Go中會比在Rust中更容易,因為Go代碼更簡單。
由于其復雜性,Go的維護將比Rust簡單。Go贏了。
5、社區
開源語言通常有大型的支持社區。開發者社區在幫助新加入語言的人學習其功能和最佳實踐方面發揮著重要作用。
當然,確定一個社區的支持并不是一門精確的科學。然而,許多博主不斷贊美Rust社區的力量,這是其持久性的一個很好的指標。
Rust和Golang都有強大的社區,但在這場Golang與Rust的對決中,Rust的社區得到的關注最多。簡單地說,Rust是贏家。
6、受歡迎程度
很難衡量Go和Rust等年輕語言的受歡迎程度。
Rust和Go無法與JavaScript、Python或Java等經典語言的受歡迎程度相提并論,盡管你已經看到了所有的功能和好處。
根據Stack Overflow的數據,Rust和Go只有不到10%的開發者在使用。盡管如此,Go在頂級語言中排名第14,而Rust則排名第26。
這些排名是基于2021年1月的TIOBE指數,該指數考慮了各種因素,如流行的搜索引擎、計算機科學課程和熟練工程師的意見。
談到Golang與Rust,Go更受歡迎。
現在讓我們深入了解一下這兩種語言:
Golang到底是什么,什么時候使用它?
Go是一種靜態類型的、已編譯的編程語言,通常被稱為 "Golang"。
這種語言是由谷歌開發人員創建的,基于C語言,目的是與C++競爭。由于其簡單的語法,Golang被比作Python。
因為Go是靜態類型的,所以變量的聲明必須遵守更嚴格的準則。
更好的錯誤檢測,特別是在涉及到語法的時候,是這種限制性行為的一個好處。編譯器通常使用靜態類型檢查來實現這一效果。
在執行之前,編譯語言被轉換(或編譯)為機器代碼。因此,一般來說,編譯語言要比解釋語言快。
可編譯語言還能讓你對硬件有更多控制。內存管理和多線程是Go的突出特點,此外還有語言的有意設計。
確保有效內存管理的一個Go組件是垃圾收集。
缺乏內存安全是C語言的缺點之一,Go希望能解決這個問題。另一方面,Go語言使用垃圾收集器在管理堆中分配內存。
簡單來說,這意味著未使用的內存被用來存儲新的對象,而未使用的對象則被從內存中 "扔掉"。垃圾收集程序運行得更快,因為它們不會有任何內存泄漏。
什么時候使用Golang是合適的?
Go可以用于各種各樣的項目。在2021年的調查結果中,Web開發、區塊鏈、數據庫和網絡編程被列為Go的主要使用案例。
大多數Go開發者認為,Go對網絡服務的親和力源于其并發能力。
Go經常被認為是后端網絡開發的最佳語言。快速的網頁執行對于在網上建立品牌知名度的關鍵,其方式比你想象的要多。
谷歌云平臺也得到了該語言的正式支持。
谷歌云提供了許多依靠云計算概念來運作的服務。因此,Go在涉及高性能云計算應用時大放異彩。
什么是Rust,什么時候應該使用它?
Rust是一種經過編譯的靜態類型的編程語言,支持各種編程范式。
該語言的創建是為了優先考慮安全和性能,其主要目標是確保安全的并發性。
Rust在語法上與C++相似。Rust與Go或C++不同,沒有垃圾收集;相反,它依靠借貸檢查器來確保內存安全。
借貸檢查器確保數據所有權規則得到遵守,并避免數據競賽。兩個或多個指針訪問同一個內存位置被稱為數據競賽。
Rust是為一種叫做編程的特殊類型的編碼而創建的。這種類型的編程需要大群或小群的人在一起工作很長時間。
Rust致力于適應和鼓勵高度并發和高度安全的系統,以允許這種類型的編程。
2006年,Mozilla員工開始試驗后來成為Rust的東西。Rust現在被用于Firefox瀏覽器的關鍵部分,在其穩定發布三年后。
何時使用Rust?
Rust幾乎可以在任何地方使用。然而,有些地方比其他地方更適合。
例如,系統編程是一個Rust擅長的領域,因為它具有高質量的性能和零成本的抽象性。系統程序員是與開發過程中的硬件方面緊密合作的軟件工程師。
Rust有一些中間層的功能并不奇怪,因為它的靈感來自C++。中級語言是低級語言和高級語言之間的一種機會主義的妥協。
因為它們可以處理硬件方面管理內存所需的復雜程度,所以它們經常被用來創建操作系統和計算機應用程序。
盡管缺乏抽象性,但它們可以被人眼閱讀,這在機器代碼中是不常見的。
原文:Rust與Go區塊鏈全面分析比較 (2022) - definoobs