开篇词 | C++这么难,为什么我们还要用C++?
开篇词 | C++这么难,为什么我们还要用C++?
讲述:吴咏炜
时长14:43大小10.11M
C++ 的意义
什么时候该用 C++?
如何学习 C++?
参考资料
赞 72
提建议
精选留言(88)
- 昨日火冷啊2019-11-26个人感觉,c++之所以难,还有一个很重要的问题是细节太多,导致每个公司都可能都停留在不同的阶段深耕从而导致互相之间不好交流。 比如我们公司用的是22年前从UNIX C语言转过来的代码。所以C+class处理一切。 而前两天来面试的有20年工作经验的“大牛”确实连深拷贝和浅拷贝都不懂。我自己还面试过另外几个职位,面试官提问题大多是模板类模板函数之类的。。。。所以个人感觉c++的复杂性很大程度上来自于多样性,我们也许在工作只用一小点就够了,但是面试的时候,你永远不知道面试官会问你哪一小点。展开
作者回复: 考语法细节的面试官就略low了。C++里语法细节很多,能知道怎么去查就够了。要掌握的是基本概念:指针,引用,递归,泛型,值语义和引用语义,堆和栈,对象的生命周期,等等。
共 3 条评论82 - 阿阳2019-11-25回首往事,12年啃《c++ primer》第4版,真的很认真,从头看到尾。记得中间面试一家游戏开发的公司,我就手写并默写了该书的一个示例代码,面试官就眼前一亮,跟我谈待遇。那时我记忆力还好,也很喜欢c++。无奈当时应聘了前端开发,从此很少再学习c++了。 c++就像一位老朋友,多年后再见,很激动很期盼。前端的浏览器和js引擎就是用c++写的。要想做好真正的前端,不了解底层是不可能的。期盼能和老师重新学习!展开
作者回复: 挺棒的。欢迎返回C++的世界。
共 5 条评论39 - seven boo2019-11-27c++难的不仅仅是语言本身,还有需要c++的业务领域,大型界面,大型后台,编译器,游戏引擎...哪个不是要付出多年的心血才能在这些领域才摸到一点点门槛,更何况再加上c++语言本身的使用难度。所以要找工作的新手而言真的不推荐c++为入口
作者回复: 对的。我不认为 C++ 该是学习编程的第一门语言。
19 - coder2019-11-27参与过clang/llvm项目的开发,也用C++写过商用的编译器,也贡献过不少cpp的开源项目。但是回过头来去看,依然觉得C++还是挺复杂的,自己从来没有系统地学过cpp,因为没时间。在开源项目中看到一些有意思的cpp 用法和特性,就会去devdocs.io和isocpp.org去查看。 这门语言确实很深奥,有时候也很难懂。尤其是template类型系统的推导那里(cpp template是图灵完备的),太复杂了,再加上一些左右值的概念,写代码的时候图方便,再配上auto,写着写着就不知道它原始的类型应该是什么了。更糟糕的是,clang llvm本身对cpp特性的支持就不太完善。 总之,这门语言太复杂了🌚🌚🌚展开
作者回复: 即使用了auto,还是有编译时的明确类型的,肯定比脚本语言更容易找出类型,也能用一些方法找出auto对象的类型。 为什么会说Clang对C++特性的支持不完善呢?Clang对标准的支持应该是不下于GCC的,我个人认为领先于微软家。
共 3 条评论17 - 嵇斌2019-11-27重学C++ 04年刚进公司时做测试,那时测试经理用boost写了测试工具把我们惊呆了,原来C++还可以这么优美,后来测试经理和我们说他表哥是C++第一版编译器的作者(据说是Bjarne Stroustrup的弟子),为了防止我们转开发,忽悠我们说开发远没有测试有意思,开发要向各种开发规范妥协(大厂),测试就不一样了,可以用各种新标准写测试工具。 15年,带领team用C++11重构了一个软件系统,性能、代码结构提升明显,颇有些得意。次年换了岗位,新岗位是做5G通信设备开发,C++14(我们以后每天的手机流量,可能都要经过C++的处理),最初的几次代码提交都要被欧洲的同事提不少Comments,通常一次Commit要数天才能通过Review,顿悟,原来之前学的很皮毛。最近有一年不怎么用C++了,重新学习,温故知新。展开
作者回复: 很有意思的经历。😊
共 4 条评论16 - HowYoo2019-11-26做无人驾驶感知系统的开发,尽管快速原型可以用python或者Matlab,但C++几乎是上车的唯一选择,就是因为它兼顾了强大的抽象能力、丰富的表达方式和高性能,尤其是汽车行业计算资源就是嵌入式设备…
作者回复: 是的,有些场景C++是不二选择。
13 - 刘博2019-11-28我想找一个比较好的方向继续C++,我是做嵌入式的,已经35。什么方向比较合适?
作者回复: 这个问题,似乎没法有一个很通用的回答。要看你的个人兴趣方向了……要有点继承性,也许是找智能驾驶、或者 Android 底层开发之类的?
共 2 条评论11 - EncodedStar2019-11-27庆幸的是,我会很多语言,但我最喜欢的语言是c++
作者回复: 诚实地讲,我Python和C++都很喜欢。😁
共 4 条评论11 - sea5202019-11-26有人说学习c++把大量时间花在了语法细节上,而忽略了语言之外该学习的东西。相比没有c和java纯粹。请问老师您怎么看?
作者回复: 这个说法有点道理,但举的例子是彻底错的。 C 绝不是完美的语言。语言简单是实情,但用 C 写出好的代码,难度大了去了。写 C 时,要么代码不灵活(固定缓冲区大小是常见的),要么代码要照顾无数的细节,出错点反而更多。缓冲区溢出的代码,多半是用 C 写出来的。 Java 也有自己的问题。Java初出现时号称简单,到了今天,复杂程度已经不下 C++ 了吧。Java 的代码啰嗦程度我看要高于 C++,而且用好 Java 要学习很多很重的框架。问题:学习框架和学习语言比,哪个更值? 没有完美的语言。世界上存在不同的语言,是有原因的。 另外,这个专栏强调的是语言特性的为什么,而不会让你去背语法细节。
共 5 条评论11 - metalmac.kyle2019-11-26曾经十几年前大二那会儿硬啃了TICPP 《C++编程思想》,那也是年少痴狂下仗剑走天涯的时代想投身于安全或游戏领域,误打误撞投身于嵌入式开发,用C多于Cpp,但饱含着对Cpp又爱又恨的情愫,作为一名“不太合格”的程序员想把cpp啃透一直是心愿,希望此刻重拾知识再次启航 😈给自己加油,学无止境,保持持续学习的能力其实是一种幸福呢!
作者回复: 加油,学无止境。
9 - 轻飘飘过2020-03-06我学习C++是为了学习Chrome-V8与Nodejs,现在JS成为全栈语言,不了解引擎原理很难做深入的性能优化,而且Nodejs借助V8,可以用C++拓展开发提高性能,也可以使用C++造好的轮子。诚恳的说,我想学习C++不是为了成为C++相关的工程师,而是想借用他提高web软件性能。
作者回复: 那你对自己要求很高啊…… 不过,我要给你敲一下警钟,C++不经过一定量的练习,很容易写出坑来。如果你主业不是C++,要想用好C++,很难。
8 - test2019-11-26最近在学习海康威视的摄像头的SDK,不过里面的代码组织比较看不明白,比如接口的合理设计,接口分层等,这方面老师后面可以提供一个大概学习思路吗,比如SDK设计之类的?
作者回复: 这个问题比较复杂,我也不知道海康的SDK写得好不好。以常理论,这不是他们的主业,恐怕重视程度不一定很高。建议拿好的开源软件来参考。
共 3 条评论5 - !null2019-11-26目前从事android camera hal开发,用cpp
作者回复: 很适合的场景。
共 2 条评论6 - 青鸟飞鱼2021-03-19老师你好,问你一个最近面试遇到的一个问题,希望可以解答。一个100G的url文件,如何哈希成100个文件,内存不超过1G。文件映射是否可以用?依次读是否效率太低,多个线程不同位置读的话,好像超过多少fseek就不行。
作者回复: 文件操作,瓶颈一般在 I/O 上,而不在 CPU 或内存上,并发读没有意义,顺序就可以。 就这个题目要求、没有额外约束的话,简单读取每个 URL,计算哈希,模 100,写到目标文件尾部即可。在内存里只需要保存 101 个打开的文件和当前 URL,没理由会内存占用高,远远用不到 1G 吧。
4 - 旧草2019-11-25[1] 游戏葡萄,“《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款 MOBA 霸占市场了”。这个链接失效了,找了鹅厂的新链接。 https://gameinstitute.qq.com/community/detail/115782
作者回复: 啊,多谢了。我回头修复一下。
5 - 雷霹雳的爸爸2019-11-25对于会cpp的我都先鞠一个躬,学习这东西...如果我真打算学的话...那就好像学散打不一定是为了打架一个道理吧共 1 条评论5
- PyGeek2019-11-30Python + C++,代码便是艺术!
作者回复: 😇
4 - WindZQ2019-11-26从事音视频编解码开发,主要使用CUDA以及Intel IPP。工作中主要以cpp/c为主。
作者回复: 嗯,适合C++的场景。加油。
3 - 浮于海2019-11-26学校只教了些基础的 想提升一下 特来关注了专栏
作者回复: 学校教得肯定很浅,不过有了点基础,看这个也许正好。
2 - evan_kim2019-11-25cpp不愧是终极语言 开发Java这么多年 最大的痛苦是 看不到native 来写的本地代码 还有很多高性能框架基本上都是用CPP 来写的 比如容器编排框架 mesos 通过这个专栏能弥补这方面的遗憾吧
作者回复: 是的,C++ 还是很独特的语言。
3