- 主题:用了半年 rust, 不太看好 rust
感觉Rust就是给C++和go码农用的,但这两种语言的码农要转到Rust,学习曲线也还都是有的。包括楼上说的macro。
别的语言要转到Rust,曲线超高,即便是纯C的码农。Rust短期应该是无法大众化的。
但是C++/go码农如果很熟悉c++/go了,也能写出比较稳定、安全的代码,为啥一定要改学、用Rust。
除非是在安全性、稳定性要求非常高的场合,比如沙箱(包括浏览器)、OS模块、工业控制器、长期跑的后台服务。
Rust因为要安全/稳定,但又要能搞system programming,所以direct hardware mapping这个goal是少不了的(虽然官方并没把direct hardware mapping列为design goal),但在现阶段又没必要重新设计,直接借用或者调用c/c++在这方面的东西即可,所以要用Rust搞接近硬件的system programming,现在是必须熟悉C的。
Rust要想和C++一样能大面积使用,还有不少路要走,比如inline asm还没stable,GUI框架也没官方搞的或者认可的较成熟的,exe文件尺寸较大。
个人是很喜欢Rust的,既有较为安全的面向对象、generic programming,也有简洁但速度并不慢的functional programming,还有支持高并发的设计。相比之下,c++的template meta programming是多么蛋疼。
--
修改:z16166 FROM 125.35.125.*
FROM 125.35.125.*
rust的gui库已经有人在搞了,不过和其他语言的gui的成熟度相比都还差得很远,玩具水平
kernel/kernel driver programming这块,应该一直是C的菜,C++/Rust很难抢走,因为编译器自动插入的东西如果不能用编译指示精确控制的话,没法控制生成的代码在kernel的具体表现,顶多只能使用C++/Rust的一个子集。Rust的no std应该是为这种场景搞的。
Rust的macro就是一种meta programming。
【 在 zackyne 的大作中提到: 】
: 用rust写gui疯了吧,火不起来的原因说到底就是太复杂,新手第一眼看到rust奇奇怪怪的符号就给吓跑了
: :
: - 来自「最水木 for iPhone Xr」
--
修改:z16166 FROM 123.118.66.*
FROM 123.118.66.*
Rust一定不会引入Haskell的那些太学究的东西,从erlang引入的比较多
【 在 littleSram 的大作中提到: 】
: 老了,没功夫折腾rust
: 我看到rust的各种语法,让我想起haskell的monad
: 所以我不会去浪费生命了
--
FROM 123.118.66.*
为啥可怕?如果Rust已经有Qt这么成熟的框架,用Rust写gui还很可怕吗?
Rust如果做不了UI,kernel领域又被C牢牢占领,那它就是从cpp/go的后台服务、console工具地盘中分一杯羹,想想就可悲。
【 在 zackyne 的大作中提到: 】
: Rust写gui有什么优势?我理解写gui就是要快速出活,想了下用rust开发ui,太可怕了
: :
: - 来自「最水木 for iPhone Xr」
--
FROM 123.118.66.*
不超过C的范围,连OO也不要了?那搞不了高级抽象
刚开始看Rust时,也觉得这语法挺别扭的,而且有不少不知道干啥的东西如expect、unwrap、Option、Some、Rc、PartialEq等,而且trait怎么和c++中的完全不是一个概念(先入为主了)。
后来因为要改一个东西,发现各种类型之间的cast怎么这么头大。
一边改一边看官方的那本英文书、language reference、std API doc、std实现代码,一周多的时间基本上都能看懂了。
想想我们在C++的学习上花了多少时间。但可能考虑到性价比,已经不愿在一个和C++差不多的语言上花上一两周时间了(除了许诺的安全性/稳定性的好处,这语言的生态现状当然是远不如C++的)
【 在 alextooter 的大作中提到: 】
: 语言应该简洁,尤其不要上稀奇古怪的符号
: 不要超过C语言的范围
--
FROM 114.241.227.*
于我心有戚戚焉,Rust感觉真的比go优雅
以前有同事(是个大佬),为了把C++里的函数中的每个错误返回语句表面上搞掉,把每种"遇到错误就返回失败"都定义一个宏,他的小弟都觉得不错,我看了一下要记住那些宏都比较费劲。现在Rust用?语法糖基本就搞定了。
Scala没看过,以前只看过Erlang和Haskell,所以那几个东西之前没见过。
【 在 DreamDreams 的大作中提到: 】
: 腻歪了Go的error handling的表示这几个真是爽的不得了。
:
--
修改:z16166 FROM 114.241.227.*
FROM 114.241.227.*
c++估计偷不了
c++对于owner,目前是在cpp core guide中建议了一个owner的type,然后等着有人在GSL中实现,并在某个静态检查工具中跟踪owner的变化,对于错误的地方,给出警告。
【 在 allegro 的大作中提到: 】
: 我现在就等c++把rust里面好的idea都偷过来。
--
FROM 123.118.189.*