学习前提
绝对不会有人想自己人生学习的第一门高级语言是rust吧?也不现实…
我学过: c ,c++ ,c# ,php, python,go , java, html,css, js ,vue, node, lua, shell ,等等太多太多语言了,并且在很多大企业工作了好多年了, 然后在学 rust 的时候还是觉得吃力,比学其他语言难度*N 倍,只要你用 Rust 写的代码能成功编译,那么几乎不用为各种安全考虑了,只需要考虑业务就行。
从上面我说的应该就能明白了, 为什小白没法学 rust,甚至没有过至少学过 c/c++ ,外加一们带 gc 的高级语言的经历, 那么就别想学会 Rust, 因为完全看不懂说的啥。
旁白
Rust 是一种一旦了解就会产生使用欲望的语言,Rust 语言连续八年蝉联 stackoverflow 开发者调查问卷 最受欢迎编程语言榜首就是最好的证明。
但比起“最受欢迎”的连胜纪录,增长的使用率更加值得关注。与 2022 年的调查相比,它在所有受访者中增长了 3.7 个百分点,现在紧随 Go 之后。
人们对 Rust 语言普遍的抱怨来自没有太多的 Rust 工作岗位。然而,Rust 语言已经在一些至关重要的基础领域开始铺垫。是否普遍使用不是评价一门语言的唯一标准,更好的方法是看这个工具在哪里被使用以及这个使用案例的重要性。
并且,Jetbrains 也宣布发布独立的 Rust IDE : RustRover。拥有独立的商业 IDE,不是说这个 IDE 最好,而是意味着 Rust 迈入主流语言行列。
在来说一句rust解决的根本不是c++学习成本高的问题,c++就那些东西没什么学习成本就是东西多而已,Rust根本不屑于解决c++的问题,Rust的解决的是c的问题。 如果深入学习 c , Rust, c++ 的应该明白。
在公司里工作写代码大家应该有有这样的想法的: 宁愿在开发阶段解决问题也不愿意在线上运行的时候出问题, 一旦线上出问题轻者写报告扣绩效, 重则罚款, 在者就滚蛋。
下面来谈谈 Rust
- 用rust写程序,我可以一直写8小时,其间不去debug,然后如果能最后编译成功,debug的时间非常少。心智负担极小。找搭档很靠谱,因为不靠谱的混子连编译都过不了。review代码只需要考虑业务逻辑就行了。
- 用c++写程序,我可以一直写8小时,其间不去debug,然后不用太费力编译成功后,debug的时间非常多。心智负担较高。如果会用c++ 现代特性,才会稍好一些。找搭档要小心一些,不靠谱的混子能编译过,但会留下一堆内存安全和线程安全问题,review代码不是一般地累。
- 用javascript写程序,我必须在8小时内一边写一边调试,虽然写出能跑的程序极为简单,但大型项目的调试,心智负担极高,js的程序员上限不封顶,但下限极低,找靠谱的搭档要当心。review代码成本太高,所以一般不review了,鉴于国内的环境,反正都是赚快钱的,多雇些前端和测试,不停地996去磨出一个bug少的东西吧,屎山就屎山,不用管了。提到js这个屎一样的语言,就要看看类似的脚本语言,lua,论特性和js有些类似,在我看来lua简直是脚本语言的天花板,1.定位清晰,咱就是脚本语言,短小精悍,不干别的。2.设计优雅,没有那么多想不明白的设计。3.性能优秀,不用像js一样集天下之牛人搞出一个v8这样的玩意才基本解决了性能问题。
- java/c#/go这类语言,因为有了gc,真的很适合编程新手,强类型约束,运行时检查,比c/c++/rust简单,又没有弱类型脚本语言带来的大规模项目难以为继的问题。事实上我认为上手这类强类型带gc的语言其实难度是小于javascript的。尤其是大型项目。但是,gc真的在某些软件领域是一个大问题,gc带来的性能损耗不可忽略,比如游戏引擎。但这不是主要的,gc的问题在于gc本身的过程不可控,程序员像黑盒一样只能被动接受gc。这样一来,c/c++/rust这类无过多运行时开销的语言仍然不可或缺,rust严格来说也算有gc,raii的自动释放本来也是,但本质在于内存是可控的,完全可以受你的摆布。gc的runtime体积也不容忽视,比如wasm,c和rust生成的wasm体积极小,有人非要用go去写wasm,您先看看这玩意编译完了多大。
- c语言,反倒是简单的,因为对于c,把它当作汇编的高级翻译层,可能更合适,贴近硬件,没有高级货,算是一个通用的接近底层的中级语言。生成的二进制也极为简单,abi不复杂。这些特性注定也会占据这些生态位。我倒觉得,c语言能做的,rust肯定能做,但考虑到使用的场合,rust可能过重了,一是学习成本较高,而是接近底层的使用一定会搞unsafe,这样一来,不如c来得简单。
rust的缺点
rust的缺点,学习曲线较高,前期写出一个能够成功编译的东西都有点难。但用熟了后,心智负担极小。C++的RAII,模板,静态分发,元编程这些东西有多少人在真正在实际项目中大量用?因为写c++不用这些东西也能可以,很多人就当C++是一个有虚函数表的带对象的c语言在用。rust就是强制你去用这些新特性,去思考这些特性,所以我一直说,学了Rust,你的c++功力也会长劲不少,反过来,一个精通现代c++特性的人,上手Rust也不会难。顺便说一下,人总喜欢躲在自己的舒适区,当你用熟了一样语言后,很难容得下别的东西。在喷子喷之前,请你放下心态,静心驱动一下你那僵化懒惰的大脑,你也会发现rust的设计光辉。
Rust不是闭门造车的语言,设计者能看出来,是做过大量工程的人,rust是实践派,不是学院派,rust的创新,是所有权系统和生命周期,这个强大的能力带来了0开销的内存安全和线程安全。其它rust特性或多或少地借鉴了其他语言的优秀特性,npm的包管理,go的channel,Haskell的trait,还有强枚举,闭包,智能指针的这些特性,并非rust原创,但rust确实把把这些优点全部吸收了进来,而没有做过度的设计,从这个角度来看,rust依然是站在前人的肩膀上。

1041

被折叠的 条评论
为什么被折叠?



