工作好几年了,除了大学写了一年的 C++,工作中基本没写过,
最近给表弟处理问题写了点 C++代码,发现还是那么好用。。。
有同感的吗?
我也想过为啥其它语言没有那么吸引我,可能是因为太高级的原因?
让我写代码的过程中完全体会不到计算机的美。

啊? 为啥还有那么多老铁在说内存问题呢? 我理解不是用了智能指针后,内存管理完全像写 java 一样丝滑吗?

要不是编译各种报错 我就信了

还是用的少,当爱好成为职业。。。你就会发现坑很多。

有同感的吗 没有

c++大而全,该有的都有了,挺好的。但是坑多、features 滥用严重,template metaprogramming 比 rust 难学。

如果我还是学生也许就信了

C++就是语法历史负担太重,模板元编程完全可以有更好的语法,再加上静态反射。另外就是 C++工具链倒是不少,就是缺少一个像 cargo/rustup 这样方便的套件。语法方面,我觉得 Cpp2 是个好思路,虽然很多人觉得太极端了,但是要演进又要保持兼容性就必须这样。

因为 C++它就是那么强啊!极致的性能表现,极低的资源占用,完全的硬件访问能力,各式各样的编程模式,你可以随心所欲的写,没有束缚,只要你能力够。这种从心所欲的体验没有其他任何语言能代替。

我选择用 c

因为 c++是一门民主的语言,c++委员会民主决策。反观 rust…………

不民主吗

rust 为啥不民主哇?

C++不像民主制,倒有点像贵族制,一帮利益相关方派代表相互扯皮

#6 rust 就是事实上的 cpp2 ,不只是语法,概念、范式也都是 cpp 的延续。

c++要写的小心翼翼,不知道 LZ 觉得哪里爽了……

以前我也这么觉得,现在我觉得哪个好用用哪个,甚至无缝使用多门语言。回过头来觉得争论语言没啥意义,技术人员应该根据不同场景寻找合适的技术方案而不是根据偏爱

我也更偏向用 C++,尤其是个人项目。Windows Only 的项目除外,这时候我会根据实际需求选择 C# 或者 C++,不会定死只用一种。个人项目跨平台时,我只能选 C++,因为我跨的平台相对“偏门”。不但有 Windows 和 Linux ,还有整个 BSD 系列——FreeBSD, NetBSD, OpenBSD, DragonflyBSD 这几种。毕竟我既想用到方便的语言特性,又想二进制文件尽量小,不要“拖泥带水”挂靠 VM ,还要兼容 DragonflyBSD (尽管没什么人用,但我还是会给它编译出二进制文件)。这样下来可选范围非常窄,对我来说也就 C++最适合了。

因为你没写过大项目,我虽然没写过 c++,但之前写 Java 用到 jni c++ lib ,那编译速度,少说也是五分钟起步

楼主一看就是自虐型人才

没有一门语言是完美的,只有使用场景合适不合适,毕竟语言只是工具。能让人体会到计算机的美的语言有很多,你只是不愿意去了解,scheme,Racket,Haskell,Erlang 这些函数范式语言所体现的思想让很多现代语言比如 C#,JavaScript ,C++,Java 等拿来重新包装,体现所谓的“先进思想”,其实多去了解一下,就会发现这些思想在上世纪七八十年代就已经有了,只不过没有大规模使用。

怎么这么多没写过 C++ 的人在这里乱说,C++ 14 、17 、20 已经让 c++ 上手难度降低了很多,要对比,肯定是比 Rust 容易上手的。需要用 C++的地方自然会用 C++, 不需要的地方就是接触也只是皮毛。现代 C++ 包管理工具也不是唯一,估计这些都是 CRUD 程序员吧,找不到集中式包管理,就觉得 C++ 不好。了解一下 CMAKE, Vcpkg, Conan 没多长时间。

群里整天在喷 cpp 连个标准 socket 库都没有,全靠手撸

有个大家都知道的黑历史,Linus 一直拒绝使用 C++重构 Linux 内核,但是近年开始接受 Rust 。

我选择用汇编 完虐 C++让我写代码的过程中完全体会不到计算机的美

Linus 除了 C 、Rust 语言以外,其他语言像 JAVA 都喷了,怎么大家就只记住 C++。C++ 一定不要看国内的书会让你误入歧途。C++ 的项目可是不断维护的,有的项目比群里这些小辈年龄都大, 这些库的稳定性足够强,而不像什么 JS/ Rust 还没几年就被人抛弃了。大多数人喷 C++ 只是因为他学不会而已, 作为高校和信息奥赛指定的语言,学 C++ 的每年可并不少。

如果我不是在生产环境中用 C++的话就真信了你的邪了

我也愛死 C++了 多謝你給這麼多內存溢出和桟攻擊的 CVE 我才能黑了你的程序 Rust 的內存安全機制是壞文明

win11 canary 频道前段时间也推了 rust 重写的部分内核

要不是用了 golang 我差点就信了 🤣核心用 c++ , 插件用 golang, 爽

C++ 的 feature 太多了,我不太喜欢,反而更喜欢 C

写自己代码用合适的语言完事,Rust 这几年高危的 CVE 一个都不少, 比如去年修复了一个编号为 CVE-2022-21658 的高危漏洞语言之争都是底层程序员的无畏之争。写基础设施和专门系统开发的人, 写 c++ 和 rust 都是随便切换的, 在数据结构和系统编程、网络编程、计算机组织结构都熟练掌握的情况下, 不会特意挑,反而 Rust 黑粉 什么语言都学不会叫嚣的很多。

那是因为你的工作不是 C++

我只对钱感兴趣 c++做 hft 有 80 万美元一年呢

只用到一小部分而已,20%的语法完成 90%的工作

工作中没用过 结论是你喜欢 c++ 不够严谨的

对我来说,感受完全一样,只不过语言换成了 java

写代码体会到计算机的美?能借几行代码说话吗

你先干几年,找几个线上 bug 再说。

参考 林纳斯的观点。

写的不够多,写的多了语言不是问题,在于怎么样设计架构来更好的满足需求和解决问题,一步步细化以后后面才有语言的选择问题,那个时候不是我们选择语言,而是生态和需求确定语言

很多人对 c++ 的印象还停在 20 年前。实际上现在 c++ 写起来轻松又愉快。

这二十年,,又加了好多内容,,spec 又厚了一倍不止

c++ 不搞 deprecated features 就是这样了, 一切为了兼容。挑新特性出来用就好了。modern cpp 上手很快 也没啥难度。

C/C++唯一优势就是资源可控性强,当然业务复杂时也是软肋

写 C++的时候我是真的有思考变量在内存中是怎么保存的。😓也不怕被笑话,刚转 C 的时候,我 debug 某个字节列表时,Clion 怎么只显示第一个元素,我一度怀疑是不是数据错了挣扎了半天,出去上厕所的时候突然想起指针是内存中的地址,Clion 并不知道具体的长度,所以只会提示第一个元素,这时候我是真的茅塞顿开。这时候可以体会到计算机的美,但是 deadline 的时候也是真要命,C++开发效率太慢了,而且语法也多,每次引入新的 SDK 都有看不懂的语法。

要不是我真写过 c++,差点就信了

不管什么语言,写到深处都会踩坑的。有些坑是语言本身会让你更容易写错代码,有些坑是语言本身非常难实现一个很普通的需求。

去学习下开源的大型 Asm/C/C++混合项目,体会下:一次编写,到处编译,还编译不过 :)

可以直接跟内存打交道嘛,大小端都不一样,要编译一下也是理清之中啦

我现在工作在写 C🤔

C++ 封装好了比写脚本还爽,只要别和别人合作,猪队友和云队友太多了,像写 Java 一样无脑接口,实现到处乱飞,鬼知道是个什么东西,找个实现还要全部代码都搜索一遍,没错我说的就是 Chromium 。

#9 rust 可太民主了,以至于出现一堆政治正确的破事……

#30 CVE-2022-21658 这个例子不太好。这玩意在 rust 标准库里算漏洞,在 c++ 标准库里算 UB ,调用者负责。

我也喜欢 C++, 喜欢那种自己可以掌控一切的感觉, 合理使用 智能指针, 可以极大的减小心智负担和内存出错的问题. C++17, 20 的完善, C++ 难度和友好度已经比以前好多了, 以前动不动几百上千行的 编译报错, 随着 C++20 里 模板的 require 支持, 编译报错也友好了.C++ 语法繁杂,就是一个大杂烩, 能在 C++里找到几乎所有编程语言的特性. 都是学 C++, 实际使用 C++--C++虽然比以前好用了, 但是易用程度还是不如和 go Java 这些, 在合适的敌方用合适的语言, 才是最优解

自从把内存搞崩,我再也不敢用 cpp……

hhhhhhhhhhhhhhhhhhhh 笑屎

写了点 C 以后觉得 C++ 还是挺好用的(

如果工作中没用过,那就有点叶公好龙的感觉了

#16有调研过 rust 的 BSD 兼容性么?

c++的工具链太复杂。make ,cmake ,xmake ,bazel 。debug 工具 gdb ,各种劝退

不同项目不同环境都能遇到编译问题,很多 Github 项目拉下来无法编译通过,这是 C++最大特点

我喜欢 C 但不喜欢 C++,不过也不讨厌就是。

modern cpp 好用,写起来比较顺滑。

这里就有: doc.rust-lang.org/nightly/rustc/platform-support.htmlTier 3 当中就有提到,RISC-V FreeBSD 并不支持,但 RISC-V Linux 却又是 Tier 2 支持,显然对 BSD 的支持并算不完善。而 BSD 系统自己支持的平台比这个列表要多,虽然我个人并不可能每个支持的平台都编译一次二进制文件,但如果有人刚好有 BSD 支持的偏门硬件(而 Rust 不支持)又刚好想拿来编译一下,那么他就没办法做到编译了。我并不喜欢给 BSD 使用者设限,因为我自己就是 BSD 使用者,尽管我跟对方所使用的 BSD 未必是同一种类。

顺便再补充个我是怎样迁就 BSD 的首先,有个很重要的一点,BSD 全系列全部自带 C/C++编译器,我很喜欢这一特点。哪怕是 FreeBSD 的衍生版本,即使是变成了防火墙系统(比如 OPNSense ),依然都自带编译器。其次,我发布的二进制文件未必涵盖 BSD 系统自己支持的硬件平台,但我希望其他人在这些平台里,可以顺利用自带编译器编译我的代码。这样就不需要额外安装其它语言的编译器了。那么能用的语言就只有两种:要么 C ,要么 C++。再结合我先前提到的,“想用到方便的语言特性”,只能选 C++。语言选好了,接下来选标准。到目前为止,FreeBSD 仍在受支持的最低版本是 12.x ,其中 12.0 自带的编译器是 LLVM 6.0, 最高能支持到 C++17 。直到 2022 年更新的 12.4 才升级到 13.0 ,可以稍微支持 C++20 。所以当下这段时间我会继续使用 C++17 。等到 FreeBSD 12.x 停止支持了(今年年末),我再升级语言标准也不迟。

喜欢 C ,不喜欢 C++,经验是写过 8 年 C++游戏服务器端

我在公司里会用 C++写命令行工具(哪怕是 Windows Only 的),这时候就可以放飞自我了,因为不用开源,我想怎么写就怎么写,甚至写出一大堆不符合 C++ Core Guidelines 的代码。反正这时候的目标只有一个:能跑不崩就行。

写了一段时间 rust,编译器告诉我,“是为你好,听我劝,我不要你觉得,我要我觉得,没有但是,理由都是借口,不是包不好,这么多年了你还不进步是你的问题”,以上换成人话后,你还喜欢 rust 吗?抱歉,有些事情我必须自控不需要你指指点点,你这些鸡汤留给新手就可以了。

有没有可能,C++的开发体验完全取决于行业?不同行业用 C++的方式完全不同,相似的只有无尽的内存操作

我也喜欢 c++,但我写不明白 makefile

也写不明白 cmakelist

像 rust 面向编译器编程,C++的编译报错还远远不够(手动狗头)。C++ 的门槛和天花板都很高,一不小心就会带入奇怪的问题。

我觉得需要一个 C++14/17/20/23/26 的 Modern C++教程系列。我之前稍微玩过一点 C++,结果连智能指针都没完全搞明白。

www.modernescpp.com/index.php/table-of-content/ en.cppreference.com/w/ www.geeksforgeeks.org/c-plus-plus/书《 More Effective C++》

书 在 github 上《 modern c++ tutorial c++11/14/17/20 on the fly 》 github.com/changkun/modern-cpp-tutorial然后看各种现代 c++ 的库的写法stl boost envoy

想要个官方的包管理工具 不知道过不过分

只要不需要和菜鸡合作,不需要处理屎山,那 modern cpp 就是很爽,一切尽在掌握中的这种精准性是别的语言比不了的。。。内存管理啥的,用好智能指针和左右值引用和 rust 也没啥区别,生态还更加丰富,相比之下 rust 在目前根本就写不了任何严肃的 GUI 和 GPU 代码。虽然现在做的东西用 rust 越来越多了,我自己也用 rust 更多一点,但是目前来说肯定还是 cpp 更胜一筹。当然了,如果队友多的话,我还是更倾向于用 rust 或者 java 这些强迫每个人都不准写烂代码的。

笑死,距离产生美嘛

Rust 现在进入了 Linux 内核,而 JS 是 Web 的根基。根本不会被人抛弃!

过不了多久 rust 就会被移出内核,有生之年系列

C 以及 C++连“官方”编译器都没有,更别说官方包管理器了其实很长时间以来,包管理是由操作系统自己的软件包管理器负责的,系统的软件包管理器同时就是 C/C++的包管理器。这原本是很方便的优势。只不过 Linux 发行版特别多,无法保证想用的包全都能出现在所有发行版当中。再加上 Windows 和 macOS 完全不做这种事,想要管理那就只能靠第三方软件(例如 vcpkg ,尽管也是微软的,但并不是预装在 Windows 当中)。于是,优势成了劣势。难怪不少语言索性自带包管理工具。如果 C 以及 C++背靠大公司,那么或许还能有个集大全的包管理器。可惜现实并不能。当初诞生 C 以及 C++的贝尔电话公司早就被拆散了,ISO 委员会也没资源去干这样的事。真想要做,那就必须两个 ISO 委员会( C 语言的 9899 和 C++的 14882 )同时协调着做,难度就更高了(时间会浪费在官僚式扯皮当中)。

手误,“贝尔电话公司早就被拆散了”应为“AT&T 公司早就被拆散了”

还是写的少了,我还是觉得限制多的语言写起来舒服,写不出花哨的代码,犯错的机会就少一些

你给个“过不了多久”的具体期限。我们来个 100 元话费的赌注:)

怎么讲?

你看不懂我说的意思吗? Rust 开源项目大多都是开始有人维护,最后都不了了之的,(没人维护,没人更新)。Rust 本身并没有什么明星项目,也没有建立起相关领域。上个叫嚣要干死 C++ 的 DLang 坟头草都长了好久了。另外 Rust 语言设计开始不想着兼容 C/C++,所以 C++ 项目迁移时很难的,倒不如谷歌 Carbon 语言的设计思路。

Obviously rust is the future, Microsoft, Google and Cloudflare all knows that.

看好 Carbon ,投 Carbon 一票,等编译器出来了一定会第一时间试用一下

感性认识到理性认识的过程,很明显你没有工程经验,属于感性认识阶段。

我以前也挺喜欢的,只作为爱好使用。看了评论区,受益匪浅。