C++还是比Rust更适合coding的

作者: wharton0分类: 计算机技术 发布时间: 2023-11-24 06:05:00 浏览:12111 次

C++还是比Rust更适合coding的

blackcater:
C++ 本身没问题,问题是开发体验远不如 Rust。 没有第一方包管理工具,没有第一方构建工具,各版本语法差异等等,这些都严重影响 C++ 在新时代依旧保持高活力。

【回复】回复 @cck901 :MSVC可以,Clang甚至开始支持部分草案中的C++26但是依旧没对C++23全面支持,就挺离谱的
【回复】回复 @JC熵 : 编译器还没跟上23吧
不偷不抢丶安度因:
我就觉得我c++写完自己有时觉得还挺漂亮,rust写完我真的觉得好混乱

【回复】因为夹杂了一些和程序逻辑无关的东西
【回复】回复 @Brleias :不用这个就是满屏幕错误处理
狐白白白白白白白白白:
其实编译器优化这件事上默认情况下Rust因为本身所具有的保证能够做出更多的优化,而cpp只有通过所谓的best practice才能获取同等的优化。

【回复】例如在cpp中默认的设置下编译器是认为你的指针、列表、结构体是可能重叠的,只有通过添加(原本是个c的keyword,但很久都加不到cpp标准,不过编译器自己实现)的关键字restrict才能保证不重叠从而给出更好的汇编。 但在Rust中因为 &mut 的存在,已经保证了这是唯一的引用,从定义上就不可能重叠,因此默认情况下能做出更好的优化。
【回复】回复 @何不忆往昔 :这并不是一个装饰,这个是一个trait bound代表 T 内部并没有UnsafeCell,并且 Freeze 是 Rust 内部API你是用不了的
【回复】能和做了是两回事,rust的优化确实有更高的上限,有更多上层信息的优化一定优于相对信息更少的一方,但是顶不住他们还没做到。。。
JJ2015:
rust就像js里的Promise,他很好的解决了回调地狱问题。然而async才是优雅的解法。可惜估计有生之年都等不到async的到来了。

【回复】啥?Rust现在不就有async吗
【回复】[思考]js async只不过是promise得语法糖,属于编译行为怎么着就反直觉了,事实上Promise 根本没解决回调地狱问题,它本身就是回调地狱,不会举例子建议别举,除了那些还在没法稳定feature rust上手其实问题不大 cpp 后面各种语法糖按你的说法更“反直觉”
【回复】你们没理解层的意思吗?层主的意思是rust的设计目标,比如生命周期以及所有权建模,还有安全基础上进行zero overhead的语法设计仍处在一个反直阶的阶段。就好比promise之于async,做不到用比较少的学习成本一眼就看出来代码该怎么编写。
CutieDeng:
瞎扯啥,unsafe 就是 Rust 设计中的核心组件,Rust 的设计哲学核心就体现在 safe 和 unsafe 的交互上,不会可以学,别在这误导人,还类比内联汇编 [呲牙]

楠明樆火:
要是c++的包管理也现代化一点,我觉得写c++还是可以接受的,对于后来者实在无法接受c++的包管理

寒荒冷焰:
rust说自己又效率又安全,可好多时候求效率是却得来个unsafe

【回复】Rust 是一个强调静态检查的语言,但是编译器不能帮你做所有事,比如你可以通过数学归纳法证明,某一个变量n在整个程序正常运行过程中不会超过10,所以使用它来移动某个指针不会使这个指针指向未定义的内存,但是编译器无法证明这个事实,unsafe 的作用就是告诉编译器,我已经再三确认此段代码不会有问题,请相信我!
【回复】回复 @LIN_MemoYeru :对,这还是有点区别的
【回复】回复 @QuenTine :我之前说的应该是 unsafe block,你说的应该是 unsafe 函数,这下清楚了,果然和b友讨论直接更上一层楼[原神_欸嘿]
登山的蚂蚁:
gcc和clang在性能上基本半斤八两,但说到compiler竟然没提到ICC,看来的确是时代的眼泪,我印象里这个在intel cpu上的确真能艹翻gcc和clang的。

【回复】成oneapi了,llvm二次开发的
【回复】ICC好像在兆芯上也比GCC厉害。
峡雨:
c++ 就算了吧,每过三年就要重新学一下,有数不尽的坑,要花费大量时间才能掌握如何正确使用特性的语言,纯粹折腾人。 rust如果也是这样频繁更新,还不如用C,C 既简单又难,没什么过多特性,全靠你自己。

【回复】連Fortran都剛更新2023,衹有死語言不會更新。
【回复】回复 @6637dif :看懂和正确使用特性写出可靠的扩展性好的代码是两回事,要用好c++必须研究STL,这对很多人来说是很大的挑战。世界上精通c++的不到5%,绝大多数都是不合格的。如果一门语言一直需要修修补补,而且实现的又不是那么优雅,又要用户了解各种细节来正确使用和避坑,那只能说这语言设计之烂。
【回复】回复 @衡之 :所以c语言已经死了就?汇编也死了?只有垃圾语言才需要整天修修补补,搞一堆奇葩东西。
开始摆烂鸟:
各种软件包提供的接口绝大多数还是c的,c++与Linux发行版并没有很强的绑定。我搜索了我机器上的文件数量, .cpp : .hpp : .c : .h = 783 : 1031 : 194168 : 167228。c++的那么点头文件还都是g++附带安装的。

【回复】冷知识:.h可以是C++的。[吃瓜]
【回复】c的rs绑定现在不要太方便,cxx 写两行配置基本上可以自动生成完所有绑定。
【回复】回复 @幻の上帝 :一般比较标准的规范是.h需要能做到c兼容
何不忆往昔:
算术溢出优化的理由有点瞎扯了,一方面Rust的【iu】N::unckecked_*就快稳定了,另一方面,先转成高精度类型计算手动检查溢出后配合unreachable_unchecked也能实现unckecked_*效果。

【回复】你不能这么比,理论上说C++也可以做到内存安全,you just need pay more to get it。反过来说,放在这里也合适。you get safety,you will pay more to get performance
【回复】回复 @SGKoishi :或者你也可以参考std::num::Wrapping整一个非常不安全的unchecked系列算术封装类型(只要不怕被打[doge])。
【回复】可以是可以,但问题是这样写噪音太大了吧,本来一个加减乘除变成了一长串,看起来真的非常难受

C++ RUST rust好玩吗

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