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

rust美服为什么给我半了_半个月使用rust语言的体验相关推荐

  1. rust进去弹出steam的对话框_在steam上启动rust提示rust launcher error launcher是怎么回事?...

    Rust Launcher Error: LauncherInstallError - EasyAntiCheat Setup failed: Operation cancelled by user. ...

  2. rust大量科技零件_半小时入门Rust,这是一篇Rust代码风暴

    机器之心报道 参与:思.Jamin 据说很多开发者一天入门 Python,两天上手 Go,但到了 Rust 就会发现画风隐约有些不对.它从语法到特性,似乎都要复杂一些.本文介绍的就是 Rust,作者表 ...

  3. C# 进行 Starlink 仿真 万里长征走了半步 ^_^

    Mark一下:  C# 进行 Starlink 仿真 万里长征走了半步 ^_^: 下载地址: https://download.csdn.net/download/hardwork617s/85687 ...

  4. matlab矩阵半张量积,矩阵的半张量积_一个便捷的新工具.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp微积分 矩阵的半张量积_一个便捷的新工具.pdf11页 本文档 ...

  5. 指令引用了 内存 该内存不能为read 一直弹窗_【翻译】使用Rust测试ARM和X86内存模型

    原文标题: The Story of Tail Call Optimizations in Rust 原文标题: Examining ARM vs X86 Memory Models with Rus ...

  6. rust风化速度_反驳《Golang、Rust的执行速度的对照,让人大吃一惊。》——不会别瞎说...

    首先我无意引战,但是今天看到某位同学的文章里有某些错误,不得不指正一下. 1. 测量时间的时候我们使用 `std::time::SystemTime::elapsed` 即可,不必蹩脚的使用两个 sy ...

  7. table表头固定4种方法_移动式、半移动式、半固定式、固定式4种破碎站详细介绍及优缺点对比...

    露天矿山生产离不开破碎设备,采用合适的破碎站可以有效的降低矿岩输送粒度,提高生产效率.露天矿山地表破碎站按照破碎设备与地基的固定程度分为:移动式.半移动式.半固定式.固定式.本文分析对比了这4种破碎站 ...

  8. rust语言与go语言_用户调查显示,Rust语言很难学习和使用

    rust语言与go语言 由Rust语言团队进行的对Rust用户社区的新调查显示,人们对该语言及其使用的兴趣与日俱增,但是,用户对该项目吹捧的一些Rust功能却感到失望,这是该项目的优势. 该调查吸引了 ...

  9. 抽取_内插_半带滤波器_多相滤波器

    文章目录 半带滤波器 多相抽取滤波器 多相内插滤波器 半带抽取器和半带内插器 参考资料:Xilinx FIR Compiler v7.2 LogiCORE IP Product Guide PG149 ...

最新文章

  1. javascript (function(){})()
  2. 20行代码实现电影评论情感分析
  3. 【杂谈】如何使用有三AI生态学习计算机视觉和自然语言处理等内容
  4. PYTORCH:DenseNet做新冠肺炎CT照片是否确诊分类
  5. 看得懂的外观设计模式 python3 实现
  6. go 修改结构体方法_「GCTT 出品」Go 系列教程——26. 结构体取代类
  7. 打开浏览器不是主页_教你如何锁定电脑浏览器主页防止被篡改
  8. 为什么这么多的广告呢
  9. shell输出重定向
  10. 电源大师课笔记 1.8
  11. 计算入瞳、出瞳位置及孔径大小
  12. Java通过HAPI解析HL7消息
  13. 想吃水果的朋友进来吧,水果类英文单词收集
  14. DLink624+A拨号失败的问题
  15. 推荐大家......必看的几部超级鬼片
  16. 【matlab图像处理】直方图均衡化操作
  17. webservice 菜鸟探索之旅
  18. 关于类似“石头、剪刀、布”游戏,需要循环判断的,判断条件设计技巧
  19. 组播报文转发过程RPF
  20. 苹果的又一个坑:InHouse打包后程序不能启动

热门文章

  1. ERP中生产计划的分类(转)
  2. 【每日一题】014 星期一
  3. Apache POI 实现报表导入和导出
  4. Feign接口获取文件流问题
  5. PhD Debate-6 预告|深度推荐系统的探索与实践
  6. oracle enq ta,【案例】Oracle等待事件event enq: KO - fast object checkpoint解决办法
  7. 稳定性测试JVM内存监控
  8. Swin Transformer原文及其代码的理解
  9. 双目立体匹配算法漫谈
  10. 不定积分与定积分(高等数学)