Rust是一個由Mozilla主導開發的程式語言,2015年釋出正式版本。它主打著「安全,並發,實用」,引入了多種其他程式語言的優點,藉由編譯階段時嚴謹的檢查來實現出安全性和效能皆優於其它大部份程式語言的功能。除了適合用來開發高效能的作業系統、系統程式與應用程式之外,也適合用來進行Web服務的開發。



開發作業系統與系統程式

許多高階的程式語言所製作出來的程式需要仰賴「執行階段函式庫(runtime library)」(如Golang程式語言),或是「執行階段系統(runtime system)」(如Java程式語言),在程式執行階段處理型別檢查、偵錯、I/O和記憶體管理等功能。這使得程式無法有效的掌握硬體資源,因為使用這套語言來開發程式的人不太能夠預期「Runtime」究竟在什麼時候會進行什麼動作。另外,包含在「Runtime」中的功能也並不一定都會被程式使用到,但為了要能夠正常執行程式,我們還是必須把「Runtime」編譯至程式執行檔中,或是放到執行環境下。舉例來說,想要執行Java程式語言做好的一個能在終端機使用的「Hello World」程式,即便該程式已經被編譯成「class」檔案了,我們依然還是要去安裝上百MB的JRE(Java Runtime Environment)才能正常執行它。

如果作業系統以及其使用的系統程式本身就沒效率、不穩定、不安全,那麼將會連帶影響著運行在其上的各式各樣的應用程式、服務和計算。因此,為了開發出有效的作業系統,通常會選擇使用低階語言,當然在使用低階語言做開發的同時也就需要付出大量的努力來確保程式可以穩定、安全的運行。相信有用過C/C++等低階語言的開發者,都知道這類型的程式語言很容易因為使用不當而產生出記憶體相關的bug。

Rust程式語言雖然屬於高階語言,但它擁有很多C/C++等低階語言(嚴格來說,C/C++仍屬高階語言,但是相比Java, C#等程式語言,C/C++程式語言是相對低階的)的特性,包含支援指標的使用,且沒有(幾乎沒有)「Runtime」,因此也被認為是適合開發作業系統的程式語言之一,其強大嚴謹的編譯器可以在程式編譯階段就能避免許多常見的bug發生,也能在程式執行的時候發揮出接近C++程式語言的效能。

開發應用程式與服務

應用程式的開發著重於開發速度,雖然屬於高階語言的Rust程式語言開發速度並不會慢到哪去,但是官方還是很貼心的提供了「Cargo」這個套件管理工具,以及「Crates.io」這個網站平台來加速Rust程式的開發。

Rust程式語言採用「一次編寫,到處編譯」的原則,開發出來的應用程式能夠跨平台編譯,並在該平台使用。只不過現階段使用Rust開發跨平台帶有圖形介面的應用程式還是會很有困難,需要引用大量的C/C++函式庫。

若是要開發服務應用程式,例如資料庫、Web伺服器等等的程式,就十分適合使用Rust程式語言來開發。因為並發式、多執行緒的程式是Rust程式語言的強項之一,也是一樣,我們可以利用其強大嚴謹的編譯器可以在程式編譯階段就能避免許多常見的bug發生,也能在程式執行的時候發揮出接近C++程式語言的效能。

開發WebAssembly

WebAssembly能大大提升JavaScript的效能。在這電腦作業系統甚至可以只用一個網頁瀏覽器來解決的年代,網頁的功能已經愈來愈強大,已經出現了許多網頁式的專業級繪圖協作工具或是網頁的3D遊戲,原先的JavaScript引擎再怎麼優化,肯定也跟不上這些應用的效能需求。WebAssembly可以使用高階語言來開發,在官方推薦的高階程式語言中,便有Rust程式語言。

易學、易用

雖然Rust程式語言理論上是比起其它如JavaScript、Golang等高階語言還要更難學一點,但相較於C/C++等低階語言,Rust程式語言的標準函式庫資源相對整齊、豐富且實用,也不太需要擔心用錯會造成程式執行結果有問題,因為只要一有問題,程式在編譯階段就會知道了。

對於學生來說,Rust可觸及底層程式的特性能夠使他們加深對電腦系統的了解,並且也不用花費時間在學習處理程式安全性不佳所造成的各種不穩定的問題,而能真正地專注在全面了解程式的概念上。

此外,Rust有支援Markdown語法的文件產生功能,因此替Rust程式撰寫文件十分方便,閱讀Rust程式的文件也很輕鬆。

對比C++程式語言的優勢

人們普遍會將Rust和C++程式語言作比較,以下整理Rust程式語言所擁有的優勢,會在之後的章節做介紹:

  • 有官方的套件管理工具和套件分享平台。
  • 有官方的程式碼排版工具,確保每位開發者程式碼風格的一致性。
  • 編譯器能避免常見的記憶體相關問題。
  • 編譯器能避免常見的並發程式的相關問題。
  • 整齊、豐富且實用的標準函式庫。
  • 靈活的模組系統。
  • 內建測試和benchmark。
  • 文件註解支援Markdown語法和測試。

總結

雖然每個程式語言都有其不同的專精領域,也很難只用一種程式語言就涵蓋各種應用和底層的程式開發,但Rust確實是一個能比其它語言應用範圍都還要廣的程式語言,而且效能通常也比大部分的程式語言來得好。學一套Rust,就可以做出應用範圍廣、品質也好的軟體程式,因此對於不想學太多程式語言的人來說,Rust會是個很適合深入學習的程式語言。

這個系列的文章將會有24個章節,學習範圍主要參考自官方的第二版教材,部份說明段落以及程式範例參考官方文件以及Stack Overflow

在下一章節中,我們將會開始介紹Rust程式語言,設定Rust的開發環境,並學習如何實際用Rust程式語言寫出可以執行的程式。

在此先提醒一下,這個系列的文章並不會介紹程式開發的基本邏輯概念(如變數、迴圈等定義),因此可能比較不適合完全不懂程式語言的人參考。

下一章:認識Rust程式語言