全面認識 RUST -- 掌控將來的雷電

文章目錄html

  • RUST 簡介
  • 如何衡量語言的好壞?
  • 靜態語言
  • 編譯器
  • 語言定位
  • 表明性項目
  • Hello World
  • RUST 前景

RUST 簡介

Rust 是一種兼顧內存安全、高併發和穩定運行的編程語言。它有着驚人的運行速度(有些領域甚至超過 C/C++),可以防止運行錯誤,並保證線程安全。RUST 語言使每一個人都可以構建可靠、高效的軟件。程序員

如何衡量語言的好壞?

在編程領域,人們一般從如下幾個方面判斷語言的 [好壞] :編程

  • 性能
  • 生產率
  • 可靠性

性能:RUST 在這幾個方面作得都不錯,甚至超過同類語。RUST 沒有 Runtime 和 GC,即 RUST 沒有運行時,也不用垃圾回收。這使得它的運行速度很是快,而且很省內存。瀏覽器

生產率:不得不說,RUST 的文檔寫得很好。出色的文檔和友好的編譯器、一流的包管理器和構建工具、精準的錯誤提示,這些都是 RUST 爲開發者準備好的,咱們只須要將精力放在邏輯上便可。七牛雲存儲

可靠性:RUST 的編譯器很嚴格,它幾乎不容許任何不可控的因素存在。它會在編譯時爲你檢查語法、變量、全部權等內容,避免程序在運行中發生故障。安全

RUST 的可靠性真的很強,這並非吹的。嚴格的編譯器將因患扼殺在萌芽時期,一旦編譯經過,那麼你的程序將變得很是穩定(社區討論到,編譯經過後的程序穩定性在 90% 以)。bash

靜態語言

RUST 是一門靜態語言,這也是它運行速度如此快的緣由之一。在遇到 RUST 以前,我是一名 PYTHON 開發者。PYTHON 最讓人詬病的莫過於速度,不管是 WEB 、網絡仍是程序執行方面,都讓人感到難過。動態語言的優點是靈活、簡短和足夠快的開發速度。靜態語言的優點則是運行速度,爲此,咱們必須犧牲開發速度(當你熟悉以後,其實開發速度也不會差到哪裏去)。網絡

編譯器

與 PYTHON 這種動態語不一樣,RUST 程序在運行前必須進行編譯,編譯完成後纔可以運行。RUST 的編譯器是 LLVM(底層虛擬機 Low-Level Virtual Machine),一樣使用 LLVM 做爲編譯器的開發語言還有 Swift。併發

語言定位

每一門語言都應該有本身的定位,雖然最終的結果和開發團隊預想的不一樣。PYTHON 現在被應用在互聯網各個領域,如爬蟲、WEB、深度學習、軟件開發等,雖然 WEB 領域有 JAVA、PHP 和 GO 這樣的強勁對手,但使用 Django、Flask 和 Tornado 的開發者仍然很多。curl

我是一名職業爬蟲工程師,因此爬蟲領域的事我比較清楚,PYTHON 在爬蟲領域幾乎沒有對手,這個領域排名第二的應該是 JAVA,其次是 GO 語言。爬蟲是多變的,爬蟲工程師常常改動它們的代碼,從開發效率和開發時間方面來講,沒有什麼語言比 PYTHON 更省事。爬蟲爬取過程並不追求超高的速度,太快的話會致使目標網站拒絕訪問(大量垃流量是不道德的行爲),若是影響網站運行,那麼就會將本身處於法律邊緣。還有一點, PYTHON 庫很是多,不少東西伸手就用,根本不須要耗費時間去造輪子。綜合考慮來講,爬蟲領域還真的是 PYTHON 更合適一些。

因爲 PYTHON 豐富的生態和極簡的代風格,使它成爲深度學習的首選。PYTHON 佔據着深度學習的大半江,這點是其餘語言難以撼動的。

軟件開發領域,常年以來都被 C# 和 C++ 佔據,系統層面則是 C 和 C++,其餘語言根本沒有參與的能力(相對於 C++ 和 C 來講,GO PYTHON NODEJS JAVA 這些語言太弱了)。

RUST 能作什麼呢?適合作什麼呢?

RUST 語言對標的是 C 和 C++,但它還具有了抗衡 GO 語言的能力,在深度學習和爬蟲領域也有必定的機會。RUST 被視爲 [系統級] 語言,它可以開發出穩定性超強、運行速度極快的項目。可以成爲系統級編程語言,是由於它無 GC 和 Runtime,它超強的穩定性來源於全部權。

有實際案例證實,RUST 將會成爲下一代操做系統的開發語言。火狐用它編寫了一個名爲 Redox 的類UNIX 操做系統。系統界面以下:

C++ 一直是遊戲和高性能軟件的首選,但不少開發者都會遇到內存(C 語言也有,如懸垂指針)方面的問題。RUST 嚴格的編譯器和良好的設計使它規避了這些問題,它並不會出現內存安全方面的故障。而且,因爲 RUST 和 C++、C 同樣,都是無 GC 和 Runtime 的編程語言,也同爲靜態語言,因此它可以扮演 C 和 C++ 的角色,甚至還有些優點。

在 WEB 領域,如今 GO 語言火得一塌糊塗。這得益於它的運行速度和開發效率——它既有 JAVA 的運行速度,有又堪比 PYTHON 的開發效率,並且它在高併發場景的處理能力高過 PYTHON 等語言。這些因素綜合在一塊兒,使它成爲現在 WEB 開發的首選。RUST 的運行速度和高併發處理能力只會比 GO 更強,但開發效率方面卻沒法保證(語法方面其實也還能夠,但因爲編譯器的嚴格要求,使得開發效率不高)。

有人用 RUST 代替 GO 了嗎?固然有,否則我也不會拋出這個話題,請看:

  • TiDB 團隊使用 RUST 來構建 TiKV 產品,團隊開發人員在 RUST 大會上有談論過 RUST 與 GO 的選擇。在綜合因素的考慮下,他們最後選擇了 RUST。

  • 一些區塊鏈項目正在/已經從 GO 專爲 RUST,不爲別的,安全。

深度學習方面,Tensorflow 已經支持 RUST 了。若是這還不能說明什麼,那麼咱們能夠從速度上考慮這個問題。神經網絡的發展很迅速,並且層級愈來愈深,還有不斷加深的趨勢。我對圖像識別和卷積有一些瞭解,卷積經過不斷的計算圖片像素張量得出特徵。程序不斷的迭代圖像,直到得到 [合適] 的特徵,這個過程其是計算的過程。目前來講,GPU 的計算能力比 CPU 要高,因此計算方面都由 GPU 完成,而不是 編程語言。可是程序自己的運行速度是總體效率的一個部分,因此 RUST 有可能被用來處理那些耗時的工做。(深度學習領域的生態確定趕不上 PYTHON,不要想了)。

爬蟲領域,爬蟲不僅僅是網絡請求和文解析的問題,它是綜合技術的應用。程序運行速度並非硬需求,但每一個爬蟲工程師都但願 PYTHON 的運行速度再提高一個等級(事實上,大部分 PYTHON 開發者都但願 PYTHON 和 C 同樣快)。因此,若是 RUST 下降網絡請求和文本解析的門檻,我認爲它也會吸引一部分使用 PYHTON 的爬蟲工程。我就是這麼被吸引過來的,我要造幾個輪子(網絡請求文本解析方面的輪子)。

表明性項目

新的語言,若是沒有表明性項目,那麼就很難斬露頭角。固然,若是有 Google 這樣的大公司推進,事情就會徹底不同(參考 GO 和 Flutter)。但 GO 語言已經有了足夠強大的產品做爲證實,好比 Docker、七牛雲存儲、TiDB 和 Kubernetes。

RUST 生於火狐,由火狐研發人員和 RUST 社區維護。目前來講,RUST 還未出現相似於 Docker 或 Kubernetes 這樣的流行項目,但 RUST 在一些領域已經有了大的邁步,如:

  • Redox - 類 UNIX 操做系統。
  • Servo - 火狐新一代瀏覽器引擎。
  • TiKV - 分佈式的 KV 系統。

而且,不少大企業都在嘗試將 RUST 融入到生產中。我相信在將來幾年,RUST 確定會大放異彩。

Hello World

以前提到過,RUST 文檔很友好,咱們能夠經過一個案例瞭解 RUST。

在開始以前,咱們須要下載並安裝 RUST 語言。根據官網文檔教程(若是你們不習慣看英文文檔,能夠到 RUST 中文站查看教程,如下爲 Linux 環境下的安裝,Window 環境安裝以教程爲準)的提示,咱們在終端運行如下命令:

curl https://sh.rustup.rs -sSf | sh
複製代碼

便可完成 RUST 的下載,並安裝 RUST。這會安裝最新穩定版 Rust。過程當中可能會提示你輸入密碼。若是安裝成功,將會出現以下內容:

Rust is installed now. Great!
複製代碼

而後配置環境變量,在 ~/.bash_profile 文件中增長以下內容:

$ export PATH="$HOME/.cargo/bin:$PATH"
複製代碼

配置保存後,使用命令讓其立生效:

$ source ~/.bashrc
複製代碼

一切準備就緒後,咱們就能夠開始編寫代碼了。新建名爲 hello.rs 的文件,並將如下內容寫入 hello.rs:

fn main() {
    println!("Hello, world!");
}
複製代碼

代碼編寫完成後,須要進行編譯,才能運行。在終端執行如下命令:

$ rustc hello.rs
$ ./hello
複製代碼

若是看到終端輸出 Hello, world! 則表明程序運行成功。

你已經正式編寫了一個 Rust 程序,成爲一名 Rust 程序員,歡迎!

RUST 前景

花裏胡哨的語言咱們見得多了,它們既不安全又慢。多年來,沒有任何語言可以撼 C/C++ 的地位,RUST 的出現使得編程界有了新的氧氣。做爲一名從事爬蟲工做的開發者(接觸的技術較多),我認爲編程語言 [快] 是趨勢,靜態語言是將來。我很喜歡 PYTHON,它的語法簡潔、開發效率超高。但不得不認可,我從心底裏但願 PYTHON 變得更快,但動態語言出身的它決定了它速度的上限,因此我將目標轉投到 RUST 上。GO 語言很是優秀,生態也很好,但我看好 RUST 而不是 GO 的理由是:RUST NO GC NO RUNTIME,SAFTY。

這使得 RUST 必將成爲將來掌控雷電的語言,尤爲是 Redox 的出現,使我更加堅信 RUST 的將來。

相關文章
相關標籤/搜索