從第一次下載rust語言的編譯器到今天恰好第14天。 簡單說一下對這個語言的感受吧。java
1、性能git
把之前用java寫的一箇中文地址切分的算法,用rust從新實現了一下(https://github.com/naturemickey/addressCut_use_rust)。運行的速度上,rust的release版本要比java快上一倍左右。程序員
java版本的代碼量是800多行,而rust版本的代碼量是600多行。github
這個體驗仍是很不錯的,畢竟纔剛剛開始學習rust語言,不少代碼本身都以爲寫得醜陋無比(能實現出來就不容易了,尚未能力想怎麼能寫得好看呢),對rust語言的機制與庫都不熟悉(一邊看文檔一邊寫),基本上就是:能用就行,先無論性能。算法
再過一段時間,對rust更熟悉了,再把代碼改得好看一些,說不寫性能也會更好一點。併發
rust的編譯結果在內存結構上是與C語言兼容的,這也是它性能不錯的緣由之一。maven
2、語法工具
rust語言在語法上有一個新東西:RAII——就是經過全部權、借用、生命期機制來作到精確的內存控制(不須要程序員寫代碼來釋放內存,也沒有GC)。post
我也是老程序員了,每一年都會學習一些新的語言(我忘記的語言比不少程序員見過的語言還多),而這些語言中要麼是有GC的,要麼是須要手工管理內存的。而可以經過語法設計來讓編譯器精確控制內存的語言這仍是頭一次見到。性能
不過這個語法也是最折騰人的地方,曾有一行代碼整整搞了兩天才編譯成功。大學畢業以後還從沒有哪個語言像rust語言這樣讓我在初學的過程當中就這樣痛苦(大學的時候第一個用C語言實現的HelloWorld搞了一個星期),從這點來看rust對新手程序員並不友好,但闖過了這一關以後就好多了。
這個機制的好處也是明顯的:
1.性能:沒有GC就表明沒有FGC,能夠用來作實時的系統(若是是JVM用到幾十G內存的狀況下,一次FGC就不是幾秒鐘那麼簡單了)。
2.嚴謹:這種語法上的控制是很是嚴謹的,它會逼迫咱們在寫代碼的過程當中對邏輯進行思考,一但有問題會致使編譯不經過。這樣寫出來的代碼會比其它語言寫出來的代碼bug更少。
除了RAII以外,其它的東西都在其它語言中有出現,並非什麼新玩應,好比:宏(lisp)、模式匹配(Erlang、Scala)、併發模型(和go類似,尤爲channel,但它的Arc又和Erlang很是像,只是Erlang必定會複製數據發送給其它進程,而rust只是內部多了一個引用計數)……。
3、配套設施
1.有一個模塊管理工具cargo,這東西也挺方便的,有點像java裏的maven和gradle。
2.IDE:目前rust語言尚未IDE支持,我寫代碼用的是VS Code,而後手敲命令來編譯的。畢竟這個語言的1.0版本是今年(2015年)5月,之後確定會有好用的開發工具出現。
(ps. 在這14天的經歷中也有一個小發現:VSCode在這兩個星期居然有兩次小版本的升級,看來微軟還挺積極的)
4、總之
這是一個挺不錯的語言:其嚴謹的語法與精確內存控制對程序的質量都有很大的幫助——若是熟悉了它,相對於C++來講,rust更容易寫出可靠的軟件,並且性能可能更好。
不過對於新手程序員來講,rust的嚴謹性就顯得不太友好了。