半个月使用rust语言的体验

 

从第一次下载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的严谨性就显得不太友好了。

-------------------------------------------------------------------

周游[http://www.cnblogs.com/naturemickey]版权全部,未经许可请勿转载

相关文章
相关标签/搜索