为什么我那么喜欢 C++??

2023-09-27 21:08:33 +08:00
 WhoCanBeRich

工作好几年了,除了大学写了一年的 C++,工作中基本没写过,

最近给表弟处理问题写了点 C++代码,发现还是那么好用。。。

有同感的吗?

我也想过为啥其它语言没有那么吸引我,可能是因为太高级的原因?

让我写代码的过程中完全体会不到计算机的美。

8957 次点击
所在节点    C++
96 条回复
LitterGopher
2023-09-28 14:20:09 +08:00
我喜欢 C 但不喜欢 C++,不过也不讨厌就是。
Longerrrr
2023-09-28 14:23:43 +08:00
modern cpp 好用,写起来比较顺滑。
cnbatch
2023-09-28 14:40:52 +08:00
@Cu635 这里就有:
https://doc.rust-lang.org/nightly/rustc/platform-support.html
Tier 3 当中就有提到,RISC-V FreeBSD 并不支持,但 RISC-V Linux 却又是 Tier 2 支持,显然对 BSD 的支持并算不完善。
而 BSD 系统自己支持的平台比这个列表要多,虽然我个人并不可能每个支持的平台都编译一次二进制文件,但如果有人刚好有 BSD 支持的偏门硬件(而 Rust 不支持)又刚好想拿来编译一下,那么他就没办法做到编译了。

我并不喜欢给 BSD 使用者设限,因为我自己就是 BSD 使用者,尽管我跟对方所使用的 BSD 未必是同一种类。
cnbatch
2023-09-28 15:05:34 +08:00
@cnbatch 顺便再补充个我是怎样迁就 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 停止支持了(今年年末),我再升级语言标准也不迟。
Daeyn
2023-09-28 15:09:43 +08:00
喜欢 C ,不喜欢 C++,经验是写过 8 年 C++游戏服务器端
cnbatch
2023-09-28 15:12:03 +08:00
我在公司里会用 C++写命令行工具(哪怕是 Windows Only 的),这时候就可以放飞自我了,因为不用开源,我想怎么写就怎么写,甚至写出一大堆不符合 C++ Core Guidelines 的代码。反正这时候的目标只有一个:能跑不崩就行。
Yayiliu
2023-09-28 15:14:39 +08:00
写了一段时间 rust,编译器告诉我,“是为你好,听我劝,我不要你觉得,我要我觉得,没有但是,理由都是借口,不是包不好,这么多年了你还不进步是你的问题”,以上换成人话后,你还喜欢 rust 吗?抱歉,有些事情我必须自控不需要你指指点点,你这些鸡汤留给新手就可以了。
idealhs
2023-09-28 15:26:24 +08:00
有没有可能,C++的开发体验完全取决于行业?不同行业用 C++的方式完全不同,相似的只有无尽的内存操作
Masoud2023
2023-09-28 15:28:51 +08:00
我也喜欢 c++,但我写不明白 makefile
Masoud2023
2023-09-28 15:29:03 +08:00
也写不明白 cmakelist
yx1989
2023-09-28 15:52:25 +08:00
@weak 像 rust 面向编译器编程,C++的编译报错还远远不够(手动狗头)。

C++ 的门槛和天花板都很高,一不小心就会带入奇怪的问题。
msg7086
2023-09-28 16:02:01 +08:00
@mightybruce 我觉得需要一个 C++14/17/20/23/26 的 Modern C++教程系列。我之前稍微玩过一点 C++,结果连智能指针都没完全搞明白。
mightybruce
2023-09-28 16:19:18 +08:00
mightybruce
2023-09-28 16:28:55 +08:00
书 在 github 上
《 modern c++ tutorial c++11/14/17/20 on the fly 》
https://github.com/changkun/modern-cpp-tutorial
然后看各种现代 c++ 的库的写法
stl boost envoy
holy_sin
2023-09-28 18:33:30 +08:00
想要个官方的包管理工具 不知道过不过分
Kirscheis
2023-09-28 19:44:26 +08:00
只要不需要和菜鸡合作,不需要处理屎山,那 modern cpp 就是很爽,一切尽在掌握中的这种精准性是别的语言比不了的。。。内存管理啥的,用好智能指针和左右值引用和 rust 也没啥区别,生态还更加丰富,相比之下 rust 在目前根本就写不了任何严肃的 GUI 和 GPU 代码。虽然现在做的东西用 rust 越来越多了,我自己也用 rust 更多一点,但是目前来说肯定还是 cpp 更胜一筹。

当然了,如果队友多的话,我还是更倾向于用 rust 或者 java 这些强迫每个人都不准写烂代码的。
buaacss
2023-09-28 20:03:12 +08:00
@joyhub2140 笑死,距离产生美嘛
xiaopanzi
2023-09-28 21:54:22 +08:00
@mightybruce Rust 现在进入了 Linux 内核,而 JS 是 Web 的根基。根本不会被人抛弃!
duke807
2023-09-28 22:43:15 +08:00
@xiaopanzi 过不了多久 rust 就会被移出内核,有生之年系列
cnbatch
2023-09-28 23:09:25 +08:00
@holy_sin C 以及 C++连“官方”编译器都没有,更别说官方包管理器了

其实很长时间以来,包管理是由操作系统自己的软件包管理器负责的,系统的软件包管理器同时就是 C/C++的包管理器。这原本是很方便的优势。
只不过 Linux 发行版特别多,无法保证想用的包全都能出现在所有发行版当中。
再加上 Windows 和 macOS 完全不做这种事,想要管理那就只能靠第三方软件(例如 vcpkg ,尽管也是微软的,但并不是预装在 Windows 当中)。
于是,优势成了劣势。

难怪不少语言索性自带包管理工具。

如果 C 以及 C++背靠大公司,那么或许还能有个集大全的包管理器。可惜现实并不能。当初诞生 C 以及 C++的贝尔电话公司早就被拆散了,ISO 委员会也没资源去干这样的事。
真想要做,那就必须两个 ISO 委员会( C 语言的 9899 和 C++的 14882 )同时协调着做,难度就更高了(时间会浪费在官僚式扯皮当中)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX