Go vs Rust,我到底该学习哪一个?

作者: 波波微课分类: 野生技能协会 发布时间: 2022-07-17 15:50:52 浏览:36315 次

Go vs Rust,我到底该学习哪一个?

恍恍惚惚卧倒躺平:
学rust,工作用go[doge],原因:学习要卷,走出舒适区,工作要躺平,钱多事少头发多[呲牙]

【回复】我就是这么做的,虽然工作也想用rust奈何时机不成熟
【回复】我是工作用java兴趣学rust[脱单doge]
0兰o兰0:
当前,rust还是以兴趣为主,工作什么的就不要考虑rust了

【回复】说出这种话的人,一般技术岗都走不远
【回复】回复 @嗯嗯哈哈嗯嘿 :外包岗直接躺平。
【回复】回复 @冰馬 :都是一些区块链项目,分布式账本项目,web汇编项目之类的,虽然业许开得多,但岗位少
丿张无忌丿:
如果rust有门槛为啥不花时间去进阶c++呢?

【回复】c++是个怪物,没人能驾驭他,精通cpp太难了。而rust严格规定各种代码格式,让风险在build前被解决,要实现这一点,就需要很多语法糖,从而提升了学习成本。 相比之下,用cpp写大型项目,你会感到很自由,但随时会出bug,被背刺;而用rust写,你会感到被束缚,很难受,但出bug的机会很少,后期维护也很方便。 其他也有很多不同,比如内存管理上rust采用的所有权机制几乎完美解决了内存管理问题,既保证安全又节约效率。 在我看来,rust是当今与完美最接近(集安全效率于一身,美中不足是易用性很差)的语言(个人意见,勿喷),很推荐去学习。[tv_调皮]
【回复】回复 @bili_263063313 :这也是易用性差的原因了,但是代码写好以后是真的舒心,绑住程序员而使代码自由安全,也不失为一种解决方案[歪嘴]
【回复】回复 @一只大帅比丶 :rust难受得一批,在敲代码阶段就开始加"锁",直接从语法上检查
funnystack1024:
从工程角度看,rust 的事务编程,异常捕捉,ioc这些怎么样呢?

【回复】回复 @0xb800 : rust就是不可恢复错误(panic)和可恢复错误(Result(Ok,Err)),这两种
【回复】还在演进中,和java/C#之类有差距
【回复】看你自己怎么玩,rust语言是可以写的很优雅的,异常处理用error-chain我觉得很好,至于设计思想和模式,你要深入学习了宏之后就会发现新天地.
之后的之前:
我感觉golang不容易呀,只是写的简单,但是用起来也不容易呀

【回复】回复 @MarioYoo :你这纯粹驴头不对马嘴(~_~;)
【回复】中文你写起来觉得容不容易?那让你用中文写一本长篇小说,你觉得容不容易?
【回复】回复 @之后的之前 :难道你看不出来我是讽刺你不懂工具使用然后说工具不好用!
霄汉景行:
go是糸统级语言就离谱,一个有CG的语言哪来的勇气的做糸统语言???

【回复】docker/kubernetes都是属于云计算系统软件,都是go写的
【回复】回复 @波波微课 :系统软件,不能叫系统
【回复】又不是让你开发底层,只是让你写中间件这些东西。
CodeGo99:
rust不安装msvc只用mingw的话是不是很多库用不了?会用java和go,结果rocket一个hello world都编译不过[笑哭]

【回复】rocket可以在mingw下运行,你应该是其它地方的问题。msvc工具链确实是应用最广的,像actix就需要msvc,mingw跑不通。能msvc就msvc
【回复】[脱单doge]跨平台这么差,学它何用?GO再怎么不好,单凭优秀跨平台能力,足以秒杀一切。现在这个IT+时代,各种ARM、MIPS架构的兴起,没有良好的跨平台能力,无疑是增加压力。
【回复】回复 @撒米呆鸡 :Rust跨平台能力还不行啊…
白嫖无双:
go语言一个库路径问题把我整哭了,怎么弄弄到最后总是报错,最后只能放弃。rust完全没这问题

【回复】不能重复导包确实是问题
寂静岭的公爵:
两者要归纳的事情不一样,rust盯着的是未来的软硬结合部的项目,和希望通过二进制多端支持还有高性能;我觉得前端最好学习一下,因为从企业运营角度deno和webAssembly等技术,可以高效的借用用户端的算力资源而节省企业的服务器成本还能保证支持复杂而且高性能要求的业务场景;

海岛码农:
补充下:前端开发人员想写wasm的话,学习rust也是很有必要的。

中二不是黑阔:
go和rust一般来说 就没什么交集 go对标java rust对标c++ 使用范畴压根不一样

WinstonRD:
大神,golang满屏幕判断err!=nil有没有更优雅的方式啊

【回复】java生态里多亏了lombok这个库里的@Sneakythrow这个注解,让java程序员连try catch都不用手写了。但是lombok有潜在的安全隐患,阿里是禁止用lombok的。就是说最好还是手写try catch,其实也没有多方便。抛异常的方式开销也比较大。其实写java的程序员绝大多数都不考虑内存开销,不考虑性能,根本不会考虑那么多,只是为了交作业罢了。
【回复】你可以panic然后用defer捕获,就像用try catch一样,不过还是不推荐,老老实实return err吧,还有好多库为了优雅会提供must开头的方法,可以提供一种出错时的默认处理方法
【回复】回复 @小马不要睡着啦 :可以不返回err,直接panic,然后在外层函数里调用recover捕获panic,恢复程序执行。其实跟try catch一样,只是语法不同,推崇的理念不同罢了。你不喜欢err !=nil,完全可以按我说的方案搞。
风居的街道:
请问波波老师:想出国发展web3,要学习什么语言呢?现在自学了一年的Java

【回复】web3你学JAVA?肯定是js全家桶+rust啊。。。
吃螃蟹的日常:
小孩才做选择,成年人表示我全都要[doge]

俗世如尘我欲登仙:
全都学,反正已经学麻了[捂眼],多学一个少学一个问题不大了[大笑][大笑][大笑]

【回复】回复 @天鹰座53 : 其实多学学可以触类旁通的,因为底层原理都是相同的
【回复】回复 @HowardYourDad :你可以看看rust和go的设计思路,都是摈弃继承,用组合替代,这两个语言都没有很强的异常处理机制,提倡有错误当场解决。不要纠结于实现的技术,技术是学不完的,你要看他们的思想,思想都是一致的。
【回复】回复 @小虫跳跳 :底层原理得多底层才能相通?每个语言都有他的脾气,设计思路,最佳实践,优势方向和应用框架。就跟养家畜一样,虽说底层都是吃喝拉撒防病繁殖,但不同家畜之间差异巨大,你会养牛不一定真的能养好羊,学会养羊还真不一定能开养鸡厂,就算是鸡,散养和集中饲养用的都不是一种抗生素。之前学C,java,php,python,js,dart和go,每一个语言在同一场景下各有各的解决方案,可能存在巨大差异,咱就拿一个sleep 5秒来说,每个语言实现方式都不同,是否阻塞,回调,语法糖都不一样,要说写一个curd的学生管理系统确实都差不多(其实还是差相差挺大的。技术栈,产品形态,社区啥的都不一样),但真想摸清楚脾气和脉络,哪一个不需要2-3个大中型项目才能略知一二呢。大神的世界我不清楚,但干了20年技术,前后共事过的技术没有200也有150,还真没见过一门语言有人说上手就上手,或者攒出第一个项目就既稳定又优雅的[doge]
_惜取少年时:
说的不太对呀,现在go最新1.19,然而1.11就有go moudle了,也支持函数作为参数传递[妙啊]

【回复】回复 @explocion :没有lambda表达式确认不太方便

Go Rust Golang Go编程 Rust编程

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!