半个月使用rust语言的体验

从第一次下载rust语言的编译器到今天刚好第14天。 简单说一下对这个语言的感觉吧。

一、性能

把以前用java写的一个中文地址切分的算法,用rust重新实现了一下(https://github.com/naturemickey/addressCut_use_rust)。运行的速度上,rust的release版本要比java快上一倍左右。

java版本的代码量是800多行,而rust版本的代码量是600多行。

这个体验还是很不错的,毕竟才刚刚开始学习rust语言,很多代码自己都觉得写得丑陋无比(能实现出来就不容易了,还没有能力想怎么能写得好看呢),对rust语言的机制与库都不熟悉(一边看文档一边写),基本上就是:能用就行,先不管性能。

再过一段时间,对rust更熟悉了,再把代码改得好看一些,说不写性能也会更好一点。

rust的编译结果在内存结构上是与C语言兼容的,这也是它性能不错的原因之一。

二、语法

rust语言在语法上有一个新东西:RAII——就是通过所有权、借用、生命期机制来做到精确的内存控制(不需要程序员写代码来释放内存,也没有GC)。

我也是老程序员了,每年都会学习一些新的语言(我忘记的语言比很多程序员见过的语言还多),而这些语言中要么是有GC的,要么是需要手工管理内存的。而能够通过语法设计来让编译器精确控制内存的语言这还是头一次见到。

不过这个语法也是最折腾人的地方,曾有一行代码整整搞了两天才编译成功。大学毕业之后还从没有哪一个语言像rust语言这样让我在初学的过程中就这样痛苦(大学的时候第一个用C语言实现的HelloWorld搞了一个星期),从这点来看rust对新手程序员并不友好,但闯过了这一关之后就好多了。

这个机制的好处也是明显的:

1.性能:没有GC就代表没有FGC,可以用来做实时的系统(如果是JVM用到几十G内存的情况下,一次FGC就不是几秒钟那么简单了)。

2.严谨:这种语法上的控制是非常严谨的,它会逼迫我们在写代码的过程中对逻辑进行思考,一但有问题会导致编译不通过。这样写出来的代码会比其它语言写出来的代码bug更少。

除了RAII之外,其它的东西都在其它语言中有出现,并不是什么新玩应,比如:宏(lisp)、模式匹配(Erlang、Scala)、并发模型(和go相似,尤其channel,但它的Arc又和Erlang非常像,只是Erlang一定会复制数据发送给其它进程,而rust只是内部多了一个引用计数)……。

三、配套设施

1.有一个模块管理工具cargo,这东西也挺方便的,有点像java里的maven和gradle。

2.IDE:目前rust语言还没有IDE支持,我写代码用的是VS Code,然后手敲命令来编译的。毕竟这个语言的1.0版本是今年(2015年)5月,以后肯定会有好用的开发工具出现。

(ps. 在这14天的经历中也有一个小发现:VSCode在这两个星期竟然有两次小版本的升级,看来微软还挺积极的)

四、总之

这是一个挺不错的语言:其严谨的语法与精确内存控制对程序的质量都有很大的帮助——如果熟悉了它,相对于C++来说,rust更容易写出可靠的软件,而且性能可能更好。

不过对于新手程序员来说,rust的严谨性就显得不太友好了。

时间: 2024-10-18 11:31:33

半个月使用rust语言的体验的相关文章

QCon2016演讲《Rust语言的核心竞争力》总结和补充

应 QCon北京2016|全球软件开发大会 主编臧秀涛邀请,我(Liigo)于2016年4月23日在大会上做主题演讲<Rust编程语言的核心优势和核心竞争力>(PDF演讲稿).由于是初次登台,现场表现不佳,个人不是很满意.故做本文对此次演讲进行总结和补充. 核心三要素:系统编程,零运行时,内存安全 我把Rust编程语言的核心优势和核心竞争力概括为三个要素:系统编程,零运行时,内存安全.在强调底层控制的系统编程领域,同时保持极小的运行时开销和极高的运行时效率,又保证了系统内存安全的现代编程语言,

5分钟APIG实战: 使用Rust语言快速构建API能力开放

序言:Rust语言简介参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题"被" 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Firefox的开发者们同样经历过这个问题.浏览器可以说是我们日常使用最为频繁的软件了,目前主流的浏览器主要 有Google Chrome.Internet Explorer.Mozilla Firefox.为了提升用户体验,Mozilla就已经启动了多线程渲染的计划.然而,面对大型的C/C++工

Atitit.rust语言特性&#160;attilax&#160;总结

Atitit.rust语言特性 attilax 总结 1. 创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升.1 2. 不会出现Null指针等等1 2.1.1. Rust 1.1 稳定版 更新内容1 2.1.2. Rust 1.2 测试版 更新内容2 3. RAII2 3.1. 无数据竞争(Data Race)…无需竞争的并发,Rust能够确保在并发编程中的数据安全3 4. 是基于继承的组合,Rust能基于继承实现组合,

我持续推动Rust语言支持Windows XP系统

前言 Rust好像长期以来不支持Windows XP系统.有不少用户发帖提议官方支持XP,基本上都被Rust官方开发人员明白的拒绝了.他们的对话大致上是以这种形式開始和结束的(当中乙方代表官方及其拥趸): 甲方:Rust应该支持XP呀 乙方:微软官方已经放弃维护XP.我们为什么要支持一个不安全的系统? 甲方:从技术上说Rust支持XP应该也不难 乙方:不是必需为一个老旧的系统付出开发和维护成本 甲方:XP在全世界还有非常多装机量.甚至远超Mac OS系统 乙方:XP是不安全的系统 甲方:我们的客

Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争

2006年,编程语言工程师Graydon Hoare利用业余时间启动了Rust语言项目.该项目充分借鉴了C/C++/Java/Python等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在的问题.其最大的特点在于保持较高的运行效率.深入的底层控制和广泛应用范围的同时,解决了传统C语言和C++语言中的内存安全问题.2009年,Mozilla接手Rust项目,创建了以Graydon为首的专业全职开发团队,并且开放了该项目的源代码.2012年1月,第一个面向公众的预览版本--v0.1 发布

Rust语言

Rust语言 https://doc.rust-lang.org/stable/book/ http://www.phperz.com/article/15/0717/141560.html Rust是一款全新的系统编程语言,专注于安全性和性能,致力于打造更高效.更可靠的系统.同一时候,Rust也是Mozilla新一代浏览器引擎Servo的编写语言,希望能在确保安全性的同一时候提升在移动设备上的性能和表现. on command installation: $ sudo curl -sf -L

“冰桶”热了半个月 秒拍“假人挑战”能火多久?

文/张书乐 据媒体报道,11月末,张杰.吴亦凡.周笔畅.张馨予等众多明星大咖纷纷在"秒拍"上参与一项名为"假人挑战"活动,视频引发网友疯狂围观."假人挑战"是继"冰桶挑战"后又一风靡全球的新游戏,玩法是参加者必须像假人般一动不动,彷佛世界突然静止. 通过冰桶挑战登顶短视频舞台的秒拍,能否通过此次"假人挑战"更加辉煌?当年在国内,真正火爆的时间其实就是半个月的冰桶,是否预示着"假人"的寿命

入职公司半个月感悟

今天进中软差不多半个月了,此前一直是阳老大每天早上开电子流,到了R5再打电话叫他下来接. 下午等了半个月的厂牌终于发下来了,激动了一把,以后不用每天早上再去前台等那女的墨迹了 ,哈哈! 那女的真她M墨迹,每次等上5分钟以上,有时电脑还不开机,工作态度真是差! 嗯,工资卡也发下来了,嘿嘿,高兴呀,还是张特制金卡,公司名字中软国际都印在上面的, 我算是高大上了吗?  看了几天项目方面还有很多不懂,一直在加油努力!就说这么多了 ! 这一天还有1分钟就过了 ,给自己加油!

寒假近半个月的收获

寒假已过去半个月,自己还是太懒,做的事情太少,很对东西都丢了,像css的很多属性和用法,一部分都忘记,果然还是经常用,才能更熟练.前些天在 学Photoshop,曾经以为很简单,没想到,往深了学,东西太多,收获还是有不少,更加觉得充分利用网络资源是进步的工具,以后再也不用担心图的问题 了,切图,修图,作图,基本都差不多.寒假在家任务还是很重的,不能被泡沫剧给淹没了.今天做了个论坛的头.界面如下:其实很简单,但我花的时间却比较长,差不多做了3个多小时才弄好,原因还是CSS部分,属性方法忘记很多,东