程式碼託管服務Bitbucket正在開發可處理來自各種感測器資料的裝置,並透過網頁以及行動應用程式,提供即時分析與智慧功能,而由Mozilla開發的開源系統程式語言Rust,成了Bitbucket的選擇,雖然Rust的學習曲線不低,但是其記憶體安全的特性,以及不輸C++的效能,因此成為了Bitbucket的選擇。

Bitbucket從效能、並行運算以及記憶體安全三方面來評估採用的程式語言。Bitbucket提到,要跨程式語言比較執行效能,通常是一件困難的工作,因為程式的效能跟開發人員選擇的演算法以及資料結構有很大的關係,因此通常很難比較,Bitbucket引用各語言比較基準(下圖),這跟普遍開發者的認知相符,Rust的效能表現與C++非常接近,並且比其他像是Lua或Python使用直譯器或是基於JIT的語言,執行效能好上許多。

由於Bitbucket的裝置需要即時處理來自多個感測器的資料,因此程式的並行處理能力非常重要。Bitbucket使用的硬體裝置有4個核心,因此為了要充分使用CPU核心,程式語言本身必須支援多執行緒,而Rust內建對多執行緒的支援,其變數的所有權(Ownership)以及借出(Borrowing)規則,可以幫助開發者撰寫安全的並行運算程式碼。

Bitbucket也強調了Rust的記憶體安全的重要性。雖然動態類型語言,提供開發者很大的靈活性,但是代價就是存在許多潛在錯誤,同時也犧牲了效能,靜態類型語言則比動態類型語更安全,在開發階段,開發者就能發現大部分的錯誤,編譯過的程式碼執行起來也會快上許多,而Rust的安全性更是超越其他靜態語言,Rust編譯器會嚴格檢查每個變數以及參照的記憶體位置,避免資料競爭以及未定義的行為。Bitbucket提到,Rust能夠避免所有並行以及記憶體安全的漏洞,記憶體安全是Rust的一大賣點。

雖然Rust安全,但是其所有權以及借出的概念,也讓Rust比起Lua或Python更難以學習,但比起C++需要手動管理記憶體,Rust又提供了更多的功能以及抽象記憶體管理,讓Rust更像是高級的程式語言,Bitbucket因此認為,要開發低占用系統資源的高效能系統,比起C/C++,Rust是相對容易使用,而且沒有數十年技術債的最佳選擇。


Advertisement

更多 iThome相關內容