工作好几年了,除了大学写了一年的 C++,工作中基本没写过,
最近给表弟处理问题写了点 C++代码,发现还是那么好用。。。
有同感的吗?
我也想过为啥其它语言没有那么吸引我,可能是因为太高级的原因?
让我写代码的过程中完全体会不到计算机的美。
1
weak 2023-09-27 21:11:26 +08:00 via iPhone 11
要不是编译各种报错 我就信了
|
2
joyhub2140 2023-09-27 21:42:38 +08:00 1
还是用的少,当爱好成为职业。。。你就会发现坑很多。
|
3
y1y1 2023-09-27 21:43:59 +08:00
有同感的吗 没有
|
4
passive 2023-09-27 21:58:56 +08:00 via Android
c++大而全,该有的都有了,挺好的。
但是坑多、features 滥用严重,template metaprogramming 比 rust 难学。 |
5
jedrek 2023-09-27 22:04:39 +08:00
如果我还是学生也许就信了
|
6
agagega 2023-09-27 22:26:43 +08:00 1
C++就是语法历史负担太重,模板元编程完全可以有更好的语法,再加上静态反射。另外就是 C++工具链倒是不少,就是缺少一个像 cargo/rustup 这样方便的套件。语法方面,我觉得 Cpp2 是个好思路,虽然很多人觉得太极端了,但是要演进又要保持兼容性就必须这样。
|
7
iceheart 2023-09-28 00:18:22 +08:00 via Android 3
因为 C++它就是那么强啊!
极致的性能表现,极低的资源占用,完全的硬件访问能力,各式各样的编程模式,你可以随心所欲的写,没有束缚,只要你能力够。 这种从心所欲的体验没有其他任何语言能代替。 |
8
duke807 2023-09-28 00:20:19 +08:00 via Android
我选择用 c
|
9
tyzandhr 2023-09-28 00:35:53 +08:00 via Android 1
因为 c++是一门民主的语言,c++委员会民主决策。
反观 rust………… |
10
allAboutDbmss 2023-09-28 00:47:18 +08:00
@tyzandhr 不民主吗
|
11
allAboutDbmss 2023-09-28 00:48:21 +08:00
@tyzandhr rust 为啥不民主哇?
|
13
Jirajine 2023-09-28 01:26:54 +08:00 via Android
@agagega #6 rust 就是事实上的 cpp2 ,不只是语法,概念、范式也都是 cpp 的延续。
|
14
xarthur 2023-09-28 03:11:11 +08:00 via iPhone 1
c++要写的小心翼翼,不知道 LZ 觉得哪里爽了……
|
15
keepRun 2023-09-28 03:44:27 +08:00 via Android 1
以前我也这么觉得,现在我觉得哪个好用用哪个,甚至无缝使用多门语言。
回过头来觉得争论语言没啥意义,技术人员应该根据不同场景寻找合适的技术方案而不是根据偏爱 |
16
cnbatch 2023-09-28 07:08:42 +08:00 1
我也更偏向用 C++,尤其是个人项目。
Windows Only 的项目除外,这时候我会根据实际需求选择 C# 或者 C++,不会定死只用一种。 个人项目跨平台时,我只能选 C++,因为我跨的平台相对“偏门”。不但有 Windows 和 Linux ,还有整个 BSD 系列——FreeBSD, NetBSD, OpenBSD, DragonflyBSD 这几种。 毕竟我既想用到方便的语言特性,又想二进制文件尽量小,不要“拖泥带水”挂靠 VM ,还要兼容 DragonflyBSD (尽管没什么人用,但我还是会给它编译出二进制文件)。这样下来可选范围非常窄,对我来说也就 C++最适合了。 |
17
voidmnwzp 2023-09-28 07:14:43 +08:00 via iPhone
因为你没写过大项目,我虽然没写过 c++,但之前写 Java 用到 jni c++ lib ,那编译速度,少说也是五分钟起步
|
18
cssk 2023-09-28 07:26:30 +08:00 via iPhone 1
楼主一看就是自虐型人才
|
19
iintothewind 2023-09-28 07:29:23 +08:00 1
没有一门语言是完美的,只有使用场景合适不合适,毕竟语言只是工具。
能让人体会到计算机的美的语言有很多,你只是不愿意去了解,scheme,Racket,Haskell,Erlang 这些函数范式语言所体现的思想让很多现代语言比如 C#,JavaScript ,C++,Java 等拿来重新包装,体现所谓的“先进思想”,其实多去了解一下,就会发现这些思想在上世纪七八十年代就已经有了,只不过没有大规模使用。 |
20
mightybruce 2023-09-28 08:11:52 +08:00 6
怎么这么多没写过 C++ 的人在这里乱说,C++ 14 、17 、20 已经让 c++ 上手难度降低了很多,
要对比,肯定是比 Rust 容易上手的。 需要用 C++的地方自然会用 C++, 不需要的地方就是接触也只是皮毛。 现代 C++ 包管理工具也不是唯一,估计这些都是 CRUD 程序员吧,找不到集中式包管理,就觉得 C++ 不好。 了解一下 CMAKE, Vcpkg, Conan 没多长时间。 |
21
ellermister 2023-09-28 08:22:51 +08:00 via Android 1
群里整天在喷 cpp 连个标准 socket 库都没有,全靠手撸
|
22
fox0001 2023-09-28 08:26:06 +08:00 via Android
有个大家都知道的黑历史,Linus 一直拒绝使用 C++重构 Linux 内核,但是近年开始接受 Rust 。
|
23
bigha 2023-09-28 08:32:17 +08:00 1
我选择用汇编 完虐 C++
让我写代码的过程中完全体会不到计算机的美 |
24
mightybruce 2023-09-28 08:43:04 +08:00 3
Linus 除了 C 、Rust 语言以外,其他语言像 JAVA 都喷了,怎么大家就只记住 C++。
C++ 一定不要看国内的书会让你误入歧途。 C++ 的项目可是不断维护的,有的项目比群里这些小辈年龄都大, 这些库的稳定性足够强,而不像什么 JS/ Rust 还没几年就被人抛弃了。 大多数人喷 C++ 只是因为他学不会而已, 作为高校和信息奥赛指定的语言,学 C++ 的每年可并不少。 |
25
NoAnyLove 2023-09-28 08:47:44 +08:00
如果我不是在生产环境中用 C++的话就真信了你的邪了
|
26
stevefan1999 2023-09-28 08:50:26 +08:00 via Android
我也愛死 C++了 多謝你給這麼多內存溢出和桟攻擊的 CVE 我才能黑了你的程序 Rust 的內存安全機制是壞文明
|
27
tsanie 2023-09-28 08:50:43 +08:00
win11 canary 频道前段时间也推了 rust 重写的部分内核
|
28
shellcodecow 2023-09-28 08:51:45 +08:00
要不是用了 golang 我差点就信了 🤣
核心用 c++ , 插件用 golang, 爽 |
29
yolee599 2023-09-28 08:55:24 +08:00 via Android 3
C++ 的 feature 太多了,我不太喜欢,反而更喜欢 C
|
30
mightybruce 2023-09-28 08:56:50 +08:00 2
写自己代码用合适的语言完事,Rust 这几年高危的 CVE 一个都不少, 比如去年修复了一个编号为 CVE-2022-21658 的高危漏洞
语言之争都是底层程序员的无畏之争。 写基础设施和专门系统开发的人, 写 c++ 和 rust 都是随便切换的, 在数据结构和系统编程、网络编程、计算机组织结构都熟练掌握的情况下, 不会特意挑,反而 Rust 黑粉 什么语言都学不会叫嚣的很多。 |
31
ajaxgoldfish 2023-09-28 09:08:41 +08:00
那是因为你的工作不是 C++
|
32
zzzkkk 2023-09-28 09:09:54 +08:00 via Android
我只对钱感兴趣 c++做 hft 有 80 万美元一年呢
|
33
iOCZ 2023-09-28 09:12:31 +08:00
只用到一小部分而已,20%的语法完成 90%的工作
|
34
rahuahua 2023-09-28 09:42:20 +08:00
工作中没用过 结论是你喜欢 c++ 不够严谨的
|
35
javak 2023-09-28 09:46:47 +08:00
对我来说,感受完全一样,只不过语言换成了 java
|
36
zzz6519003 2023-09-28 09:48:07 +08:00
写代码体会到计算机的美?能借几行代码说话吗
|
37
dobelee 2023-09-28 09:49:33 +08:00 via iPhone
你先干几年,找几个线上 bug 再说。
|
38
dif 2023-09-28 10:07:48 +08:00
参考 林纳斯的观点。
|
39
guochao 2023-09-28 10:08:37 +08:00
写的不够多,写的多了语言不是问题,在于怎么样设计架构来更好的满足需求和解决问题,一步步细化以后后面才有语言的选择问题,那个时候不是我们选择语言,而是生态和需求确定语言
|
40
emSaVya 2023-09-28 10:13:02 +08:00 2
很多人对 c++ 的印象还停在 20 年前。实际上现在 c++ 写起来轻松又愉快。
|
42
emSaVya 2023-09-28 10:29:04 +08:00
@XIVN1987 c++ 不搞 deprecated features 就是这样了, 一切为了兼容。挑新特性出来用就好了。modern cpp 上手很快 也没啥难度。
|
43
wanguorui123 2023-09-28 10:37:22 +08:00
C/C++唯一优势就是资源可控性强,当然业务复杂时也是软肋
|
44
lingeo 2023-09-28 10:49:16 +08:00 1
写 C++的时候我是真的有思考变量在内存中是怎么保存的。😓也不怕被笑话,刚转 C 的时候,我 debug 某个字节列表时,Clion 怎么只显示第一个元素,我一度怀疑是不是数据错了挣扎了半天,出去上厕所的时候突然想起指针是内存中的地址,Clion 并不知道具体的长度,所以只会提示第一个元素,这时候我是真的茅塞顿开。这时候可以体会到计算机的美,但是 deadline 的时候也是真要命,C++开发效率太慢了,而且语法也多,每次引入新的 SDK 都有看不懂的语法。
|
45
idblife 2023-09-28 10:50:38 +08:00 via iPhone 1
要不是我真写过 c++,差点就信了
|
46
InkStone 2023-09-28 10:52:16 +08:00
不管什么语言,写到深处都会踩坑的。有些坑是语言本身会让你更容易写错代码,有些坑是语言本身非常难实现一个很普通的需求。
|
47
c2const 2023-09-28 10:56:54 +08:00
去学习下开源的大型 Asm/C/C++混合项目,体会下:
一次编写,到处编译,还编译不过 :) |
49
xiri 2023-09-28 11:13:31 +08:00 via Android
我现在工作在写 C🤔
|
50
yulon 2023-09-28 11:22:53 +08:00
C++ 封装好了比写脚本还爽,只要别和别人合作,猪队友和云队友太多了,像写 Java 一样无脑接口,实现到处乱飞,鬼知道是个什么东西,找个实现还要全部代码都搜索一遍,没错我说的就是 Chromium 。
|
52
Nugine0 2023-09-28 11:40:56 +08:00
@mightybruce #30 CVE-2022-21658 这个例子不太好。这玩意在 rust 标准库里算漏洞,在 c++ 标准库里算 UB ,调用者负责。
|
53
bruce0 2023-09-28 11:42:38 +08:00 2
我也喜欢 C++, 喜欢那种自己可以掌控一切的感觉, 合理使用 智能指针, 可以极大的减小心智负担和内存出错的问题.
C++17, 20 的完善, C++ 难度和友好度已经比以前好多了, 以前动不动几百上千行的 编译报错, 随着 C++20 里 模板的 require 支持, 编译报错也友好了. C++ 语法繁杂,就是一个大杂烩, 能在 C++里找到几乎所有编程语言的特性. 都是学 C++, 实际使用 C++-- C++虽然比以前好用了, 但是易用程度还是不如和 go Java 这些, 在合适的敌方用合适的语言, 才是最优解 |
54
bao3 2023-09-28 11:50:03 +08:00
自从把内存搞崩,我再也不敢用 cpp……
|
55
o562dsRcFqYl375i 2023-09-28 12:11:43 +08:00
@weak hhhhhhhhhhhhhhhhhhhh 笑屎
|
56
snylonue 2023-09-28 12:30:17 +08:00 via iPhone
写了点 C 以后觉得 C++ 还是挺好用的(
|
57
tairan2006 2023-09-28 12:31:51 +08:00 via Android 1
如果工作中没用过,那就有点叶公好龙的感觉了
|
59
dayeye2006199 2023-09-28 14:12:29 +08:00
c++的工具链太复杂。
make ,cmake ,xmake ,bazel 。debug 工具 gdb ,各种劝退 |
60
tracebundy 2023-09-28 14:17:13 +08:00
不同项目不同环境都能遇到编译问题,很多 Github 项目拉下来无法编译通过,这是 C++最大特点
|
61
LitterGopher 2023-09-28 14:20:09 +08:00
我喜欢 C 但不喜欢 C++,不过也不讨厌就是。
|
62
Longerrrr 2023-09-28 14:23:43 +08:00
modern cpp 好用,写起来比较顺滑。
|
63
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 未必是同一种类。 |
64
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 停止支持了(今年年末),我再升级语言标准也不迟。 |
65
Daeyn 2023-09-28 15:09:43 +08:00 via iPhone
喜欢 C ,不喜欢 C++,经验是写过 8 年 C++游戏服务器端
|
66
cnbatch 2023-09-28 15:12:03 +08:00
我在公司里会用 C++写命令行工具(哪怕是 Windows Only 的),这时候就可以放飞自我了,因为不用开源,我想怎么写就怎么写,甚至写出一大堆不符合 C++ Core Guidelines 的代码。反正这时候的目标只有一个:能跑不崩就行。
|
67
Yayiliu 2023-09-28 15:14:39 +08:00 5
写了一段时间 rust,编译器告诉我,“是为你好,听我劝,我不要你觉得,我要我觉得,没有但是,理由都是借口,不是包不好,这么多年了你还不进步是你的问题”,以上换成人话后,你还喜欢 rust 吗?抱歉,有些事情我必须自控不需要你指指点点,你这些鸡汤留给新手就可以了。
|
68
idealhs 2023-09-28 15:26:24 +08:00
有没有可能,C++的开发体验完全取决于行业?不同行业用 C++的方式完全不同,相似的只有无尽的内存操作
|
69
Masoud2023 2023-09-28 15:28:51 +08:00
我也喜欢 c++,但我写不明白 makefile
|
70
Masoud2023 2023-09-28 15:29:03 +08:00
也写不明白 cmakelist
|
71
yx1989 2023-09-28 15:52:25 +08:00
|
72
msg7086 2023-09-28 16:02:01 +08:00
@mightybruce 我觉得需要一个 C++14/17/20/23/26 的 Modern C++教程系列。我之前稍微玩过一点 C++,结果连智能指针都没完全搞明白。
|
73
mightybruce 2023-09-28 16:19:18 +08:00 3
|
74
mightybruce 2023-09-28 16:28:55 +08:00 2
书 在 github 上
《 modern c++ tutorial c++11/14/17/20 on the fly 》 https://github.com/changkun/modern-cpp-tutorial 然后看各种现代 c++ 的库的写法 stl boost envoy |
75
holy_sin 2023-09-28 18:33:30 +08:00
想要个官方的包管理工具 不知道过不过分
|
76
Kirscheis 2023-09-28 19:44:26 +08:00
只要不需要和菜鸡合作,不需要处理屎山,那 modern cpp 就是很爽,一切尽在掌握中的这种精准性是别的语言比不了的。。。内存管理啥的,用好智能指针和左右值引用和 rust 也没啥区别,生态还更加丰富,相比之下 rust 在目前根本就写不了任何严肃的 GUI 和 GPU 代码。虽然现在做的东西用 rust 越来越多了,我自己也用 rust 更多一点,但是目前来说肯定还是 cpp 更胜一筹。
当然了,如果队友多的话,我还是更倾向于用 rust 或者 java 这些强迫每个人都不准写烂代码的。 |
77
buaacss 2023-09-28 20:03:12 +08:00
@joyhub2140 笑死,距离产生美嘛
|
78
xiaopanzi 2023-09-28 21:54:22 +08:00
@mightybruce Rust 现在进入了 Linux 内核,而 JS 是 Web 的根基。根本不会被人抛弃!
|
80
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 )同时协调着做,难度就更高了(时间会浪费在官僚式扯皮当中)。 |
82
bkmi 2023-09-28 23:22:45 +08:00 via Android
还是写的少了,我还是觉得限制多的语言写起来舒服,写不出花哨的代码,犯错的机会就少一些
|
84
Ui68Hipts8J4QNKG 2023-09-29 10:34:34 +08:00
@duke807 怎么讲?
|
85
mightybruce 2023-09-29 10:37:16 +08:00
@xiaopanzi 你看不懂我说的意思吗? Rust 开源项目大多都是开始有人维护,最后都不了了之的,(没人维护,没人更新)。
Rust 本身并没有什么明星项目,也没有建立起相关领域。 上个叫嚣要干死 C++ 的 DLang 坟头草都长了好久了。 另外 Rust 语言设计开始不想着兼容 C/C++,所以 C++ 项目迁移时很难的,倒不如谷歌 Carbon 语言的设计思路。 |
86
araraloren 2023-09-29 10:55:09 +08:00
@mightybruce Obviously rust is the future, Microsoft, Google and Cloudflare all knows that.
|
87
SHF 2023-09-29 11:52:47 +08:00
@mightybruce 看好 Carbon ,投 Carbon 一票,等编译器出来了一定会第一时间试用一下
|
88
kakki 2023-09-29 16:52:24 +08:00 via Android
感性认识到理性认识的过程,很明显你没有工程经验,属于感性认识阶段。
|
89
wa007 2023-09-29 17:49:02 +08:00
我以前也挺喜欢的,只作为爱好使用。
看了评论区,受益匪浅。 |
90
DinoStray 2023-09-30 00:45:37 +08:00
我也喜欢, 因为我是细节控, 我要非常精准的控制内存和线程
|
91
Tanix2 2023-09-30 09:19:25 +08:00
你自己喜欢你不知道为啥?
|
92
2NUT 2023-09-30 12:55:09 +08:00
天赋异禀,天选之人,就该吃 cpp
|
93
tianshilei1992 2023-10-01 07:19:35 +08:00
C++ 是我的主力语言,但是我觉得还是有个必要学个 Rust 的,虽然 Rust 现在也差不多是一地鸡毛…
|
95
cnbatch 2023-10-07 16:22:29 +08:00
@holy_sin 单纯入门并不至于“大部分时间都在配置环境”的,这得看 OS 的种类
Windows: 下载安装 Visual Studio ,完事(不是指 VSC ),打开 IDE ,可以开始入门学习了 Linux:选最新发行版,安装开发工具包( sudo apt install build-essential 或者 sudo dnf groupinstall "Development Tools" "Development Libraries"),再选个 IDE 或编辑器+插件。然后调一调 IDE 、设置编辑器。 BSD:虽然使用 BSD 来入门的人基本不存在,毕竟能够用 BSD 的人本身就懂许多开发相关的事情。不过用 BSD 入门还真是比 Linux 少一步,只需要选个 IDE 或编辑器+插件,再编辑下设置。 只要不是一上手就搞“mingw 在 Windows 编译 Linux 程序”、“cygwin 在 Linux 编译 Windows 程序”,老老实实只编译当前平台的二进制(话说回来,“入门”阶段就编译跨平台二进制,这可不是入门者的级别),那么真的不太需要总是配置环境。 真正需要花费大量时间配置环境的,也就是刚才提到的跨平台编译,除了提到的这两个,还有“Linux x86/x64 环境编译出 ARM 二进制”这种。不过都到这种程度了,已经不能算是“入门”级别。 |
96
xivnaz 2023-11-02 19:58:20 +08:00
楼主有写界面吗?
我也是觉得 C++很特殊,跟其他高级语言不太一样。 但是,它真的很难搞。 我就想给写好的程序加个界面,fltk 就死活编译不通过。 |