感觉 RUST 上手难度有点高开发速度有点慢,

2022-07-07 11:28:34 +08:00
 newghost
个人比较喜欢 RUST 的无 GC 设计,

感觉主体思想是让变量出了当前函数(域)就自动回收,但这样也引出了一大堆变量所有权及标注,生命周期,借用 /引用等概念和独特用法,应该是 RUST 里独一份了

导致在其它语言很简单的功能在 RUST 就要多写很多代码,理解一大堆概念,感觉开发效率慢很多,不知道大家有没有这个感觉?
10219 次点击
所在节点    Rust
49 条回复
ColorfulBoar
2022-08-01 01:40:41 +08:00
@andyJado #40 话说那玩意有啥内容上的硬伤么,我没细看扫了一眼只是感觉行文用语不是很对劲
andyJado
2022-08-01 08:23:45 +08:00
@ColorfulBoar 内容, 我提过一个 issue, 采纳了, 响应很积极, 很棒. 但它该臭还是臭啊.

没有一个 bug 该是 implicitly pass 对吧, 我纯白的时候我没有分辨是非的能力, 我会觉得这个味就应该是这样. 这就不对, 就该骂, 只要它还叫自己圣经一天, 这就是一天的 bug.
ecloud
2022-08-02 09:45:52 +08:00
我最近在转 rust
简单说一下体会
如果讲最初版本的开荒,rust 的确比各种动态语言要麻烦。不要说跟 python/java 之类的比,就是上古的 oc 都比不了
但是,如果你追求性能的话,动态语言根本是无解
而如果跟 C/C++比起来,又是另一个故事了。rust 在调试和测试过程中的便利性可比 C/C++高到不知道哪里去了,编译器输出几乎就帮助你完成了所有非业务逻辑的审查。对于业务逻辑不复杂的应用来说,单元测试都没有太大的必要了。从这一点来说,rust 比 C/C++的开发效率高太多

rust 的另外一个好处是,一旦你完成了最初阶段的开荒,那么后续维护和改进的效率会比大部分动态语言都要高。动态语言最大的问题的,在项目膨胀的过程中,模块之间的语意层级的联系并不大,比如你给一个 springboot 产品增加一个 POST 接口,你可以写的跟他原有的风格截然不同,而且这样做你会很舒服。而 rust ,或者是 C ,一般而言你的新模块都要基于原有构建的某种模式。当然高手也可以放飞自我的写,但是这样你并不会感觉舒服。
ecloud
2022-08-02 09:55:34 +08:00
@kekeabab 非常支持。C/C++除非大神来写,否则性能上真不一定比得过 rust 。因为 rust 编译优化后的代码其实都是指针跳转,而你自己在 C 里面大多情况下是 char x [100],然后一大堆 memcpy 。即便这样小心还是经常 segmentation fault...
ecloud
2022-08-02 10:11:31 +08:00
@agagega 我觉得本质不是 GC 的问题而是静态 /动态类型。比如 objc 即便你使用 mrc ,你看他的汇编代码也跟 arc 是一样的,有非常多的栈跳转冗余来用于对付动态类型。rust 本质上就是一个以大括号为关键字 mrc ,但是因为它是静态类型的语言,所以跟 objc 的风格就完全不同。objc 当你使用 mrc 模式并且开启 Xcode 的内存检查的时候,其结果跟 rust 的借用检查其实差不太多的,但是 objc 在处理类型的时候要舒服很多,光一个 id 类型就无敌了,再加上 NSString 这个神奇的玩意儿,就会给你一种像解释性语言一样的舒服感。
但是,动态类型跟性能是互斥的,这个根本无解
xjiewu
2022-08-03 15:42:16 +08:00
上手难度我觉得还好,毕竟我已经入门十几次了
luckyyD
2022-09-21 14:19:38 +08:00
@march1993 用完就回收≠完美,但是开销肯定少,用它写越基础的服务收益就越大。
gc≠不可靠,但是并不一定所有的场景都能接受 stop the world 。
测试用例可靠、软件通过了用例。才是一个软件可靠的标准。

但是根本是场景问题,汽车的车机甚至可以接受黑屏重启,但是卫星上的程序总不能搞虚拟机和 gc 吧。我给你一个几十 KB 内存的单片机和传感器去做智能家居的网络遥控器,你还想在里面跑个虚拟机?
zagfai
2022-09-21 21:29:35 +08:00
@coeru 大哥有对比过 golang 或者 python 的开发速度吗?
coeru
2022-09-22 11:49:09 +08:00
@zagfai 没对比过,主要都没机会用来开发大型项目

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864629

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX