【油管趣搞】Rust 语言是不可避免的趋势

作者: ChaosBot分类: 软件应用 发布时间: 2022-06-10 00:08:25 浏览:89780 次

【油管趣搞】Rust 语言是不可避免的趋势

SunmoonBot:
我觉得不管聊再多语言特性,都不如直接从历史和生态去分析。cpp最被诟病的只是语法和难以debug之类,但cpp正在改变这些。换句话说,现在系统编程的市场rust可能只有5%,而cpp是95%,如果有一天rust占比达到了20%,此时要么是cpp加速自己变的更好,要么就是rust继续增长,这个选择留给开发者们自己,只是历史数次各种语言之争已经证明了只要生态搞好,而语言也烂不到哪儿去,那这个语言只会慢慢变好,继续稳固自己的生态。

【回复】rust完全是基于安全性思考设计的语言,cpp不是并且永远也不会是
【回复】回复 @洛玖只Yurzi : 算盘还跟图灵机等价呢。工具好用不好用当然也是很重要的因素。
【回复】回复 @苍之大灰 :没那么夸张,c++11以后至少语法特性上改变了很多,c++语法是很难,但不要把c++说得这么不堪[笑哭],毕竟它一边出新特性,还要一直兼容老的特性,就越来越庞大。像现在我就是直接接触基于c11或c17以后的语法特性就好了。主要是c++的方向都比较硬核,附加的专业知识会更难,还要学习操作系统,网络,图像,算法…
GanlvTech:
用 Rust 写快速迭代的应用有一个问题。 原本设计的是只有 1 个 owner 的,假如这时候需要引用计数了,T 就变成 Rc<RefCell<T>> 了,所有的泛型类型都得改,所有调用的地方都得改。 假如之后又需要跨线程访问了,所有的 T 全部变成 Arc<Mutex<T>>。 因为是零成本抽象,并不像nodejs那样,所有对象都是引用计数并且确保只有一个线程的。

【回复】[笑哭]如果T设计之初,就没考虑到多owner的应用场景,现在它需要实现多owner,应该做的是把T重命名为TInner,再重新定义一个T,使用Rc或Arc包装TInner,作为其一个字段。新的T实现TInner所有对外接口,并且处理好多owner调用产生的影响。对TInner,则慢慢重构,清理出哪些需要Clone,放到T中;哪些需要共享,放到TInner中。 无脑改成Rc<T>不能解决问题,反而可能会引入逻辑BUG或循环引用导致内存泄露。
【回复】绝大部分情况下,用refcell的情况应该用的是&和&mut,而不是rc<refcell>
【回复】然而可以用 GAT 的抽象能力,给 `Box<T>`、`Rc<RefCell<T>>` 和 `Arc<Mutex<T>>` 设计一套共同的接口
梦念花雨:
rust吹的神乎其神,然后我试图用rust写网站一周后放弃了,有框架但没设计模式,我没办法把抽象的接口给转换为简单的代码,写一堆重复代码我觉得也没意思,我觉得想写web后台可先等等

【回复】这是个红利期,如果能创造一个较通用的模型或框架,你以后就是rust 布道师
【回复】拿面向对象设计模式来套 rust,只能说明没学懂
【回复】说明已经被片面的oop和设计模式毒害太深,转rust这类有fp基底的编程语言需要额外的付出,而众所周知国内写代码的多是被35岁门槛诱导走纯粹的实用主义,那这里的额外付出很显然会被否决掉
Arthur-Is-Used:
哈哈哈哈哈,被带走的,多多少少都用rust了,重构,或者写部分模块。

【回复】回复 @冰馬 :啊哈,是的,打错字了。见谅~~见谅~~
【回复】回复 @Arthur-Is-Used :“引起”是不是“引擎”?
gbalau2:
之前把go吹得神乎其神,现在变成rust了?

【回复】go是针对C++易错,直接禁用了好多,也照搬python简化了语法。但是依然可以编出很多bug,race就易发生。rust是从源头上反思了bug产生的机理,一出生就自带纠察队,有过编译就能跑100年之称。
【回复】coder in 2000 : c++ with Java coder in 2020 : rust with go coder in 22th century : Python!!!
【回复】[嗑瓜子] 后端就看着他们吹,反正搞坏了都得换java
快快一姐:
哈哈哈,有意思,rust是一种概念,它会重构一切

AEdaydreamer:
rust写一些low-level的东西是真不错,最主要的是基本库很完善

【回复】回复 @冰馬 :底层他用了low-level,真得很low
【回复】写高级的东西也不少了,只是任务比较重,完全动手而已。Linux、Windows部分系统都用rust重写了。Firefox的图层渲染也用rust,未来系统级的开发,估计会是它的天下[笑哭]
耘峥:
rust学过一段时间,放弃了。因为我发现他在灌输很多思维模式。牺牲自由度的情况下去实现这些模式。这些模式目前看起来最有价值的是解决内存安问题。但是我在想用其他语言做一套严格的类库标准,也是一样的啊。c里头我也只能用我控制好(调用前检查和全局跟踪销毁)的内存处理函数。一样出不了安全问题啊。而且把这个过程不是让程序员自己去实现。而是越俎代庖。让我想起了php之前的防注入。后来直接取消了。因为安全规则是开发者,开发期间要做的。否则问题反而会变得复杂。简单类比,rust相当节育之后尽情happy。但是安全措施其实是根本意识。不管你节育不节育。

【回复】自己做一套类库标准,自己实现的时候和给别人用的时候需要每时每刻都手动注意不要违反这套标准,而且这个标准同时也是一种限制。我自己用rust的时候,只要满足了rust里面的一些约束,rust编译器就能自动的证明出我的程序在运行时不会出现某些不良特性(并且几乎没有什么额外的运行时开销),并且别人在调用我写的库的时候也要满足这些约束,多人合作的时候编译器帮我保证了一些基础信任[滑稽]相比于手动注意,期待自己不要犯错,同时需要说服自己相信别人的水平; 我更喜欢让机器自动的帮我检查是否有某些问题[滑稽]
【回复】回复 @计算机科学家阿克曼 :如果你用c没法控制内存问题,你用rust也只是找了个脚手架来解决这个问题。关键这个脚手架的这么多高级特性的学习成本相比于c自己写一套安全的内存操作库来说成本高太多太多。意义不大就在于时间。是一个想要加入更多特性的语音叫c++,结果就是实际开发过程中,大家都不会用那么多高级功能,全部追求稳定和效率。没人会在生产和团队中忽略某些成本完全替换某种语言,在一定的时间范畴内。而rust类语言完全可以替代c的时候基本上也是ai编程砍掉90%码农的时候,那个时候他们不需要灵活的语言,只需要僵硬,刻板,统一,高效,安全的语言。这个时候只会剩下架构师和少数对底层极其了解的程序员活下来。那个时候是不是rust语言也不重要了。所以这就是一个悖论,程序员如果推动的是一种极度机器化的语言那程序员会被替代。
【回复】回复 @Dear鹿Q :绝对准确的内存泄露代码检测是个图灵停机问题,不可解,现在的检测工具要么杀错一部分(没问题的提示有问题),要么放过一部分(有问题的不提示)。 把这个约束加在语法规则编译器里比在运行期跑出问题要好。
Bad_Dream_UwU:
本关于rust的视频里头都有一个叫冰馬的人 在几乎所有评论下面都说了句话 不知道意义何在[藏狐]

【回复】回复 @冰馬 :所以为什么大家要为你的习惯买单
【回复】[大哭]还以为就我一个人被这人刷爆了
【回复】回复 @Bad_Dream_UwU :半吊子民科是这样的
AbduweIi:
先是python后是go现在rust了吗 我劝你们省省吧[哈欠]

【回复】回复 @AbduweIi :培训机构就是这样的,什么钱都赚,上次还说见到一个机构说零基础35岁的也可以去做it,我真是服了,为了钱什么都可以宣传
【回复】go还行,web后端已经很完善了,工资普遍比JAVA高
再卖萌就死:
为啥宣传rust的方式永远是踩一捧一,它没有自己的东西吗?

【回复】回复 @不变的音乐101 :踩别人是因为别人都不如它,别人不踩它是因为别人不如它。
【回复】回复 @喵斯卡的荣耀 :这么多语言唯独rust宣传起来有一种奇怪的味道
【回复】啊这,编程语言不比较出来优点谁会去用啊,比较比较就是踩了?[笑哭] 上次调侃高级语言的日期结构直接照抄c语言那上古遗留的奇葩struct tm(有的甚至不改名)竟然被举报引战,我也是服了,工具都有饭圈?[抠鼻]
艾普西隆_lo:
rust就是编译比较慢,比C++还要慢,考虑开发一些重要并小巧的内容,比如驱动,比如内核,一些复杂的工业软件目前还没有见到过。 不过,既然C++能克服编译时间长的问题,Rust应该也能克服。

【回复】尤其是当你还写go的时候,对比鲜明
【回复】确实慢,尤其是使用了rocket这样大量使用宏的框架的时候,一点小改动调试一次都要编译半天
荷兰酒:
看过 rust 的代码,感觉符号特别多,一会儿就看得头疼。 总怀疑,是不是只有搞 cpp 的人才能忍受的了?

【回复】rust符号还多啊[笑哭]加起来估计比cpp都少,像haskell那类可以自定义符号的那才叫符号多,代码里满屏都是>>=,<+>,@,|>,>>>之类的符号,rust用c类语法已经算是很友善了[笑哭]
【回复】回复 @抱起路人就跑 :..我说的是代替 代替和替代应该不是同一个意思 我没注意到最开始那个人说的是用Rust替代C++.. 要这么说的话,任何语言本身就不能互相替代,何必给Rust扣一个造声弄势的帽子...直接对人就是了

Rust语言 Rust编程

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