找回密码
 立即注册
查看: 2787|回复: 13

[软件] rust强在编译器,为啥不能弄个类似的cpp编译器

[复制链接]
     
发表于 2024-12-28 21:25 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 lactone 于 2024-12-28 21:28 编辑

都说rust学习成本高,但是我觉得至少safe rust对小白来说有个好,就是别的语言里的很多小问题,rust analyzer都能识别,编译器都过不了

结果就是,一般情况下只要能编译过不报错,safe rust的计算结果就很难有错
其实反而并不需要你有太多的内存管理之类的知识

别的语言最麻烦的就是编译能过但是算的结果怎么弄都不对

但是话说回来,如果cpp也有一个类似强大的编译器或者语法检查器,是不是也可以达到类似效果
回复

使用道具 举报

     
发表于 2024-12-28 22:08 | 显示全部楼层
RUST不是说 规则比C++还麻烦。。。
回复

使用道具 举报

     
 楼主| 发表于 2024-12-28 22:09 | 显示全部楼层
208208 发表于 2024-12-28 22:08
RUST不是说 规则比C++还麻烦。。。

safe rust是这样的

但也恰恰是这样,很大程度上让编译只要能过,大概率结果就没啥问题
回复

使用道具 举报

     
发表于 2024-12-28 22:10 来自手机 | 显示全部楼层
一个“报错信息更加友好”的c++编译器是可能的,其实已经改进过很多了,从前我真的是看到模板烂了痛不欲生

但是在继续屎山雕花的情况下应该是搞不出rust那个等级的编译器,在能玩裸指针而且大家都大玩特玩的情况下c++自由的过了头,这无法提供足够强的假设给编译器使用

—— 来自 vivo V2339FA, Android 15上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
发表于 2024-12-28 22:11 | 显示全部楼层
我大C++ 今天就是要NEW ,NEW来NEW去怎么了
回复

使用道具 举报

     
发表于 2024-12-28 22:14 | 显示全部楼层
C++如果可以,那还要Rust干嘛?
这方面C++有两个问题,一个是兼容C,另外一个是基于引用计数的std::shared_ptr,这两个问题都是解决不了的,不兼容C,C++就没有存在的必要了,在std::shared_ptr之外重新引入一套基于ownership的内存管理,只会让现在C++的内存管理变得更混乱
回复

使用道具 举报

     
发表于 2024-12-28 22:41 | 显示全部楼层
别的语言最麻烦的就是编译能过但是算的结果怎么弄都不对

这个 rust 也会出现啊,当有些块必须用 unsafe 包的时候,出了问题,难查出来的一样难查出来。
回复

使用道具 举报

     
发表于 2024-12-28 23:31 | 显示全部楼层
vc开最大警告一样很严格。c++主要还是模板库的出错信息很难看懂
回复

使用道具 举报

     
发表于 2024-12-28 23:32 来自手机 | 显示全部楼层
因为cpp编译器需要兼容历史悠久的屎山,而且开发者也不会积极升级编译器,就像死守旧版windows那样
回复

使用道具 举报

     
发表于 2024-12-29 07:19 | 显示全部楼层
本帖最后由 無始無終 于 2024-12-29 11:07 编辑

C++的几个主流编译器连统一标准和默认行为都做不到,还想开发新的?

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2024-12-29 08:04 来自手机 | 显示全部楼层
还是得要相关的语法特性支持才行的,可以关注下下面的这个今年中的旧闻 safe c++   https://www.oschina.net/news/312570/safe-c-plusplus
回复

使用道具 举报

     
发表于 2025-3-3 13:27 | 显示全部楼层
(知乎)llvm怎么不用rust重写

省流:Rust语言特性迭代速度是cpp的十倍甚至九倍

C++就是三叶虫。

我们看看最古老的C++问题之一:模板报错。

这个问题2006年就有解决方案了:Concept。但是Concept 2020年才进入C++,而且只能算‘如入’:连C++标准库都没有用Concept定义数据结构!

而同时,Rust
是2006年,一并出来的,并且在2012年就有Concept的对应物:Trait

。就是说,Concept弄进C++的功夫,你可以拿来做2.5个Rust,然后去对战宿傩了。

道理很简单:不兼容性。弄出Concept原型简单,难的是跟template的100个小特性进行兼容。

同理,module也是2006年就有的,也是2020年进入C++,也一样没人用。也是一样需要考虑无数的兼容性问题。

而我们看看隔壁Rust的进化速度:NLL

是2017年提出来的,并在同年已经进入了unstable。而NLL在2022年就是默认feature了。这是C++ concept/module的三倍速(而且这两feature还没人用,要大规模迁移不知道还要等个多少年)。

而最致命的甚至不是concept/module,而是C++没有一个safe并高性能的subset。同理,C++在遥远的以后,可能进化出来,但这时候Rust已经进化成变形金刚了。

你只不过是一个生在没有我的时代的语言罢了!
回复

使用道具 举报

     
发表于 2025-3-3 13:47 | 显示全部楼层
obiy 发表于 2025-3-3 13:27
(知乎)llvm怎么不用rust重写

省流:Rust语言特性迭代速度是cpp的十倍甚至九倍

如果语言更新快就能流行的话,c#早就该君临天下了
回复

使用道具 举报

     
发表于 2025-3-3 13:57 | 显示全部楼层
精钢魔像 发表于 2025-3-3 13:47
如果语言更新快就能流行的话,c#早就该君临天下了

java22:你c#快可爷也不慢啊

要比不是得用同一生态位的比?

论坛助手,iPhone
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-4-20 12:28 , Processed in 0.130886 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表