写 C++代码有感

2022-03-26 14:41:45 +08:00
 yongchiu

自写代码以来,之前一直在用 Golang 、Python 写业务代码,感觉使用起来很方便易用;最近的工作写编辑引擎,开始使用 C++写代码,还是使用的 C++17 语法,恶补 C++,感觉还是看的头大,debug 起来也很麻烦,一个单测写了两天,头文件也是各种问题,还是 Golang 好用一些啊

7119 次点击
所在节点    程序员
57 条回复
yongchiu
2022-03-26 21:07:05 +08:00
@ChaosesIb 估计是考虑性能吧,C++无 GC ,能够面对高并发和对实时性有要求的这种场景
yongchiu
2022-03-26 21:08:26 +08:00
@gam2046 golang 写的确实比较舒服,语法简单,性能也不错,语法简单也导致有些地方写的不方便
jones2000
2022-03-27 00:02:47 +08:00
c++ 都是慢功出细活。慢慢写。 写多了就习惯了。
Cielsky
2022-03-27 01:10:05 +08:00
@reallynyn 确实没有,不过习惯写 C++的,很多喜欢大括号在下一行,Java 入门的大括号挨着代码
littlewing
2022-03-27 01:54:34 +08:00
@Cielsky 我用 clang format ,默认 大括号 并不会下一行
dayeye2006199
2022-03-27 02:03:41 +08:00
很多时候感觉是 toolchain 没有配好。写个复杂的 cmake 或者 makefile 得花半天。程序迟迟跑不起来,没有收到正反馈,感觉沮丧。

Go 这种保姆式 toolchain ,啥都不用安装就能编译起来了。
skadi
2022-03-27 02:35:39 +08:00
不是特别古老的依赖的化,可以试试 vcpkg
dangyuluo
2022-03-27 07:32:45 +08:00
@wctml C++可能对你是浪费生命,但对别人来说就是日常工作
xiaotianhu
2022-03-27 10:25:53 +08:00
之前写 PHP 好几年,开始写 Golang 觉得很麻烦,类型系统很麻烦,要多写出很多东西来.
后来生计所迫,开始写 C++, 回头再看 Golang,又感觉真的简单很多.都是对比出来的.

对比起来,我觉得 C++的一些难点:
- 编辑器和补全系统不如 Golang 那么好用,基础库又很分散,就直接导致记忆成本高.go 输入 fmt 就能自动补全 fmt 的包,C++至少我的 VIM 没有,就需要你记住 fmt 的 header 文件自己去引用.
- 语法更复杂了. 灵活性和对内存精细化控制的需求,对什么拷贝 引用 指针 左值,这些都要思考,带来更多思考负担.写其他语言不需要
- 并发编程, PHP 转 Go 的大部分都是觉得,简单的并发编程模型带来的性能提升是最爽的;然而 C++的线程+锁 的模型,说法太多了,玩不好容易悲剧.
- 调试 和 工具链,go 基本上几个命令就把周边的事儿都干了;C++的 GNU 工具链,make g++ ld gdb 每一个又都博大精深,一堆参数;一个栈溢出直接让新手无所适从,调试太麻烦也导致开发起来效率上不去.

总结,Go 或者 PHP,有 5 年开发基础的,基本上看 1 本 400 页的书就能开始干,看两本原理就能有深入的了解,干的很好了.
C++,大概你需要看:C++ Primer/Effective C++/并发编程 /STL 基础库 /模板元编程 /Linux 系统编程 /Make 教程 /gdb 教程大概才敢说我 C++入门了,可以写一些生产的项目了.....
sirius4gnu
2022-03-27 10:27:19 +08:00
记得有大佬说过,cpp 的设计目标是防止写代码的人失业,绝对的业界良心。
cxxnullptr
2022-03-27 10:35:55 +08:00
modern C++写起来还是挺舒服的
ink19
2022-03-27 10:38:50 +08:00
@pengtdyd 我 C++习惯写在上一行,好看多了
tairan2006
2022-03-27 10:43:15 +08:00
cpp 写起来还好…
然后比较难受的是看别人代码,有时候真的不知道这写的是啥…
然后痛不欲生的是 debug ,尤其是有模板的…
然后掉头发的,线上 core 了…内存泄露了,balabala…
然后工具链…cmake 啊 makefile 啊都特么巨难用
ashong
2022-03-27 12:12:35 +08:00
@tairan2006 最近下定决心把一个古老的 vs 项目移植到了 cmake 和 vcpkg ,后悔没早一点动手,真是比直接用 sln 管理方便多了。
t2jk4000
2022-03-27 12:37:38 +08:00
C++工具链是真的劝退
MCVector
2022-03-27 12:46:36 +08:00
对于日常写 C 的人,能灵活地配置工具实现需求也是 C tool chain 的一个 feature. Tool chain 的工具很多也可以很容易做到轻量化,同其它的工具和语言整合也很灵活,就是上手比较难。
alsas
2022-03-27 12:59:16 +08:00
建议改行 rust
3dwelcome
2022-03-27 15:16:35 +08:00
昨天下载了一个 github 源代码,硬是要 vs2019 编译,我手头只有 vs2015 ,直接傻掉,一点办法都没有。

每次新语法对老编译器都不兼容,这点真的很烦。

这点就不能学学 ts 嘛,进行源代码转译级别的向后兼容。
duke807
2022-03-27 15:19:44 +08:00
@3dwelcome 這個和語言本身沒關系,譬如我做 MCU 開源項目,會使用 Makefile 工程,用戶下載代碼 make 一下就可以編譯出固件。而有些人非要用 keil 、iar 等商業軟件,互不相通。。。
3dwelcome
2022-03-27 15:28:02 +08:00
@duke807 就是和语言有关系,项目用了 std::string_view ,这是个好东西,但是 vs2015 里没有啊。
只能看着源码发呆😳。

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

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

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

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

© 2021 V2EX