C++真的有那么不堪吗?

2019-07-26 11:09:51 +08:00
 lastright

一直都在用 C 写底层,最近开始接触到一些偏上层的东西(还没到业务层,是中间件),规模变大,感到用 C 开发有些吃力,我发现我正在用 C 模拟一些鐅脚的 C++的特性,例如模板,异常,对象内部属性的访问控制。

鐅脚不是说代码啰嗦(这在我看来是小问题了),而是说费尽力气,人家已经做在语言里了,那为什么不用 C++呢。

网上对 C++的诟病很多,加之看到云风博客上对 C++的一些看法,有种“苛政猛于虎”的感觉。但现在觉得,那些坑还是免不了要去踩一遍(我不知道为什么么我印象里 C++有很多坑,明明没系统的去学过)。

最近开始对语言层面的东西感兴趣了,以前大家讨论的那些概念我看不懂,可能还是接触的代码规模一直不大的原因吧。

如果各位没话说,我这就上路了。

13648 次点击
所在节点    程序员
101 条回复
lastright
2019-07-26 12:00:14 +08:00
@justfly 多谢多谢 :)
ipwx
2019-07-26 12:01:14 +08:00
不是 C++ 那么不堪,是用 C++ 的人太不堪。

微软 Google FB 哪家公司没有几个巨大无比的 C++ 项目。
nicebird
2019-07-26 12:01:38 +08:00
一般真正的项目会砍掉大量的 c++特性
willm
2019-07-26 12:05:50 +08:00
除了少数领域,C++并不是唯一的选择,所以大部分人都选择了别的。我觉得目前 C++最大的问题是这是一门典型精英化的编程语言,只有老手才能勉强玩转,对于工程化是个大问题 。

最关键的是,相对于它的复杂度和需要付出的努力,C++工作待遇明显不给力,性价比低,没新人学,人才断代,导致市场进一步萎缩,逆马太效应了。
VDimos
2019-07-26 12:07:46 +08:00
这个世界就是围绕 c/c 艹发展的
lastright
2019-07-26 12:08:37 +08:00
@willm "精英化”语言,我倒是觉得它设计的不好(不要打我),不是我心目中的 C++的样子。。不过“我行我上”的话估计更惨。
macdkgb
2019-07-26 12:09:24 +08:00
Windows 操作系统是用什么语言写的?

微软的工程师的 Quora 回答:kernel 几乎是 C,越往上层 C++ 就多了起来。超过 400 万个源文件,超过 500GB。
anguiao
2019-07-26 12:10:39 +08:00
C++的牛逼之处就是每个人可能只用了它 20%的特性,但是每个人的 20%是不一样的,为了看懂别人的代码,你就得了解剩下的 80%。
thtznet
2019-07-26 12:11:53 +08:00
都没学过的话,rust 一把梭。
www5070504
2019-07-26 12:16:45 +08:00
如果只选一门语言 我选 c++ 奈何 c++对我来说难度挺大。。一直玩的不溜 有时候写的就是带类的 c。。
willm
2019-07-26 12:20:30 +08:00
@lastnight 精英化并不是一个褒义词,尤其对于一个工具
opentrade
2019-07-26 12:26:56 +08:00
如果想要学习 C++,可以了解一下我们的项目,
https://github.com/opentradesolutions/opentrade
AlohaV2
2019-07-26 12:28:30 +08:00
一直都用 c++ & python
cabing
2019-07-26 12:32:57 +08:00
各种写法带你飞起。。自己用没事,怎么玩都行。
ericgui
2019-07-26 12:38:08 +08:00
我不是写 C++,但他们都说 cpp 是一门很多面性的语言,有 oop,有 function,有 c with class,你只需要用到一部分特性,解决你的问题即可,你不必要用到全部特性。

所以我也准备着玩 cpp 了
impl
2019-07-26 12:38:47 +08:00
以前对 c 艹不感冒,学了 rust 后发现很多都是抄 c 艹的,所以最近把 c 艹也学起来了
wtdd
2019-07-26 12:41:00 +08:00
c++由于复杂性,对智商尤其是记忆力要求太高,掌握不了的当然觉得不堪了
pursuer
2019-07-26 12:48:11 +08:00
c++语言本身是不错的,特别是 c++11 以后,我还是比较喜欢的,但是下面几个问题处理起来一直很麻烦

包 /源码管理和构建模式花样实在多,特别 autotool 那套。现在好像 cmake 要成为这块的解决方案了。

ABI 兼容。虽然我没碰到过,不同版本的编译器之间的二进制可能不通用,甚至标准库实现的不同都可能导致二进制不兼容。

IDE 不太好使,之前想看下 llvm 的代码,拿 vscode 看的,看的比较蓝瘦。Java 的 IDE 大都可以方便的分析类的关系,比较好用,也可能是我用的不熟。顺便有没有觉得很不错的 c/c++的 IDE 可以推荐下。
lyh404
2019-07-26 13:09:49 +08:00
我感觉 C++最后都会用成 C。。
b00tyhunt3r
2019-07-26 13:31:01 +08:00
@smallpython

这个黑歪了吧,,毕竟 OOP,我觉得还是蛮符合人类思想模式的

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

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

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

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

© 2021 V2EX