开篇词 | C++这么难,为什么我们还要用C++?
该思维导图由 AI 生成,仅供参考
C++ 的意义
什么时候该用 C++?
如何学习 C++?
参考资料
- 深入了解
- 翻译
- 解释
- 总结
C++作为一种流行且具有活力的编程语言,具有出色的性能和灵活性,适用于广泛的领域,包括大型桌面应用程序、网站后台、游戏开发、编译器、解释器、实时控制、视觉和智能引擎以及数据库。尽管C++的传统领域受到其他竞争语言的侵蚀,但其核心竞争力在于抽象能力、性能和功耗。随着移动设备的普及和服务器的增加,对性能要求高的应用几乎必然会使用C++开发的组件。此外,C++与C的兼容性以及与Rust等语言的竞争地位也是其优势所在。因此,尽管C++面临竞争,但其在多范式、性能和兼容性方面的优势使其仍然是一种值得学习和使用的编程语言。 C++是一种复杂的语言,难以掌握,但具有出色的性能。在开发需要高性能的应用时,特别是需要部署在多台服务器或移动设备的情况下,考虑使用C++是明智的选择。然而,在性能不会成为软件瓶颈的情况下,C++可能并不是最合适的工具。此外,在嵌入式应用的场景中,C++也是一种解决性能问题的利器,但在嵌入式开发中使用C++可能会面临人力资源的障碍。 学习C++就像学习一门外语,需要掌握其基础概念和高级技巧,以及实际的工具和第三方库。通过学习现代C++,读者可以更好地理解这一语言,并用它解决实际问题。总的来说,C++在性能和兼容性方面的优势使其成为一种值得学习和使用的编程语言,尤其适用于需要高性能的应用场景。
2019-11-2589人觉得很赞给文章提建议
《现代 C++ 编程实战》,新⼈⾸单¥59
全部留言(90)
- 最新
- 精选
- 昨日火冷啊个人感觉,c++之所以难,还有一个很重要的问题是细节太多,导致每个公司都可能都停留在不同的阶段深耕从而导致互相之间不好交流。 比如我们公司用的是22年前从UNIX C语言转过来的代码。所以C+class处理一切。 而前两天来面试的有20年工作经验的“大牛”确实连深拷贝和浅拷贝都不懂。我自己还面试过另外几个职位,面试官提问题大多是模板类模板函数之类的。。。。所以个人感觉c++的复杂性很大程度上来自于多样性,我们也许在工作只用一小点就够了,但是面试的时候,你永远不知道面试官会问你哪一小点。
作者回复: 考语法细节的面试官就略low了。C++里语法细节很多,能知道怎么去查就够了。要掌握的是基本概念:指针,引用,递归,泛型,值语义和引用语义,堆和栈,对象的生命周期,等等。
2019-11-26485 - 阿阳回首往事,12年啃《c++ primer》第4版,真的很认真,从头看到尾。记得中间面试一家游戏开发的公司,我就手写并默写了该书的一个示例代码,面试官就眼前一亮,跟我谈待遇。那时我记忆力还好,也很喜欢c++。无奈当时应聘了前端开发,从此很少再学习c++了。 c++就像一位老朋友,多年后再见,很激动很期盼。前端的浏览器和js引擎就是用c++写的。要想做好真正的前端,不了解底层是不可能的。期盼能和老师重新学习!
作者回复: 挺棒的。欢迎返回C++的世界。
2019-11-25539 - seven booc++难的不仅仅是语言本身,还有需要c++的业务领域,大型界面,大型后台,编译器,游戏引擎...哪个不是要付出多年的心血才能在这些领域才摸到一点点门槛,更何况再加上c++语言本身的使用难度。所以要找工作的新手而言真的不推荐c++为入口
作者回复: 对的。我不认为 C++ 该是学习编程的第一门语言。
2019-11-2719 - 嵇斌重学C++ 04年刚进公司时做测试,那时测试经理用boost写了测试工具把我们惊呆了,原来C++还可以这么优美,后来测试经理和我们说他表哥是C++第一版编译器的作者(据说是Bjarne Stroustrup的弟子),为了防止我们转开发,忽悠我们说开发远没有测试有意思,开发要向各种开发规范妥协(大厂),测试就不一样了,可以用各种新标准写测试工具。 15年,带领team用C++11重构了一个软件系统,性能、代码结构提升明显,颇有些得意。次年换了岗位,新岗位是做5G通信设备开发,C++14(我们以后每天的手机流量,可能都要经过C++的处理),最初的几次代码提交都要被欧洲的同事提不少Comments,通常一次Commit要数天才能通过Review,顿悟,原来之前学的很皮毛。最近有一年不怎么用C++了,重新学习,温故知新。
作者回复: 很有意思的经历。😊
2019-11-27417 - coder参与过clang/llvm项目的开发,也用C++写过商用的编译器,也贡献过不少cpp的开源项目。但是回过头来去看,依然觉得C++还是挺复杂的,自己从来没有系统地学过cpp,因为没时间。在开源项目中看到一些有意思的cpp 用法和特性,就会去devdocs.io和isocpp.org去查看。 这门语言确实很深奥,有时候也很难懂。尤其是template类型系统的推导那里(cpp template是图灵完备的),太复杂了,再加上一些左右值的概念,写代码的时候图方便,再配上auto,写着写着就不知道它原始的类型应该是什么了。更糟糕的是,clang llvm本身对cpp特性的支持就不太完善。 总之,这门语言太复杂了🌚🌚🌚
作者回复: 即使用了auto,还是有编译时的明确类型的,肯定比脚本语言更容易找出类型,也能用一些方法找出auto对象的类型。 为什么会说Clang对C++特性的支持不完善呢?Clang对标准的支持应该是不下于GCC的,我个人认为领先于微软家。
2019-11-27317 - HowYoo做无人驾驶感知系统的开发,尽管快速原型可以用python或者Matlab,但C++几乎是上车的唯一选择,就是因为它兼顾了强大的抽象能力、丰富的表达方式和高性能,尤其是汽车行业计算资源就是嵌入式设备…
作者回复: 是的,有些场景C++是不二选择。
2019-11-2615 - 刘博我想找一个比较好的方向继续C++,我是做嵌入式的,已经35。什么方向比较合适?
作者回复: 这个问题,似乎没法有一个很通用的回答。要看你的个人兴趣方向了……要有点继承性,也许是找智能驾驶、或者 Android 底层开发之类的?
2019-11-28213 - sea520有人说学习c++把大量时间花在了语法细节上,而忽略了语言之外该学习的东西。相比没有c和java纯粹。请问老师您怎么看?
作者回复: 这个说法有点道理,但举的例子是彻底错的。 C 绝不是完美的语言。语言简单是实情,但用 C 写出好的代码,难度大了去了。写 C 时,要么代码不灵活(固定缓冲区大小是常见的),要么代码要照顾无数的细节,出错点反而更多。缓冲区溢出的代码,多半是用 C 写出来的。 Java 也有自己的问题。Java初出现时号称简单,到了今天,复杂程度已经不下 C++ 了吧。Java 的代码啰嗦程度我看要高于 C++,而且用好 Java 要学习很多很重的框架。问题:学习框架和学习语言比,哪个更值? 没有完美的语言。世界上存在不同的语言,是有原因的。 另外,这个专栏强调的是语言特性的为什么,而不会让你去背语法细节。
2019-11-26512 - EncodedStar庆幸的是,我会很多语言,但我最喜欢的语言是c++
作者回复: 诚实地讲,我Python和C++都很喜欢。😁
2019-11-27411 - metalmac.kyle曾经十几年前大二那会儿硬啃了TICPP 《C++编程思想》,那也是年少痴狂下仗剑走天涯的时代想投身于安全或游戏领域,误打误撞投身于嵌入式开发,用C多于Cpp,但饱含着对Cpp又爱又恨的情愫,作为一名“不太合格”的程序员想把cpp啃透一直是心愿,希望此刻重拾知识再次启航 😈给自己加油,学无止境,保持持续学习的能力其实是一种幸福呢!
作者回复: 加油,学无止境。
2019-11-2610