C++难都难在这些地方

1.C++抽象层次灵活多样且复杂

  • 自身支持多种编程范式;新手兴奋,长者敬畏,设计模式的应用较为抽象
  • 过程(ADT+PP),面向对象(OO),泛型编程(GP),函数式编程(FP),模板元编程(TMP),Etc
  • 再在操作符重载,继承和多态派生等加持下,看似相同的代码在不同的位置可能完全天壤之别

2.C++语法规则细节琐碎且复杂

  • 编程风格低约束:自由,可读性差
  • 语法迭代版本差异:Old C++(C with Class)、Etc
  • C++新特性学习带来的成本时间:C++11/C++14/C++17/C++20/C++23新特性,影响贯穿始终
  • e.g:
  • 指针数组/常量引用绑定非对象/常量指针/指针常量/指向常量的常指针:const、constexpr、volatile 拷贝/复制构造函数/移动构造函数/析构函数/虚函数/友元函数/:何时用,继承,长度计算
  • 数据类型/指针/智能指针:更精准的控制和溢出跳转,RAII,资源内存从此精确而沙雕,心好累
  • 线程池/协程/右值引用/移动语义/完美转发/引用折叠/并发API:别有洞天,意料之外还有刺激
  • 异常/容器/模板/继承/多态/操作符重载:我是谁我在哪我在干?谁在报错?!这我写的?!
  • 易混特性/潜规则/冲突:extern “c”、#ifndef、Namespace、Static局部/全局、隐式转换explicit Etc
  • 大量精力难以填满的各领域协议、依赖和扩展:TCP/IP/APUE/UNP/Linux XX/Tool xx/Etc一本满足

3.C++开发环境多样自由且复杂

  • 开发&目标跨平台:Windows/Linux/MacOS/Etc
  • 多种编译/调试器:llvm+Clang/GCC/MSVC/GDB/LLDB/Etc,且对OS和编译原理有要求
  • 此处尤其值得一提的就是,超大型工程编译漫长,调试报错令人窒息,当然近年来有显著改善
  • 多种IDE:VS/Clion/Xcode/Etc,较为容易但缺乏对底层真实过程的了解
  • 多种文本编辑器:VsCode/Emacs/Vim/Notepad++/SublimeText/及其各自骚插件/Etc
  • 各种库/"轮子"/OS底层API:MFC(Old)/STL/Boost/?Gaclib?/OSAPI/Etc
  • 架构:乐高大赛?抱歉,打扰了。。怎一个「丰富」了得,我笑了
  • 可能依赖的环境配置:ITem2/zsh/Git/SVN/Makefile/Cmake/MySQL/MDK/Etc

4.C++要解决面对的开发任务普遍较难

  • 各类游戏、多媒体,安全,引擎,系统框架或者极端性能艰深场景
  • 依赖较高的数学/金融/图形/算法处理等其它交叉专业领域的内容
  • 多种语言对接杂糅、各种高大上、不可抗力必须使用的地方
  • 这一点毋庸置疑,可多关注下国内外公司C++应用最多最难取代之处

5.C++国内高等教材存在较大滞后错漏

  • 造成C++是C的简单继承扩展等的错误理解,过于轻敌
  • 可曾听闻THQ大佬的i+=(++i)+(i++)及其各种曲解错漏
  • 更多囿于历史的局限性和集体性选择的结果,也不必太过抱怨
  • 但毫无疑问的是,C++对各类底层软硬件等依赖的CS基础相较其它语言明显更高
  • 这就是为何少儿编程永远不会首选C++进行入门动作

6.C++知识容量大随时间卷积累加混淆

  • 以上那些内容属实只是来自C++世界里很少的一部分节选表现
  • 还没有包含进各种细枝末节、历史背景和过渡性产物各种效率必备辅助插件
  • 饱受诟病的互联网前端野生动物世界现在都有Serverless和Flutter解救
  • 现在你还确定C++那么多东西真的不够煮一大锅陈年腊八粥?

7.C++构建大工程高风险难组织易失败

  • 有些答主也提及,如此「高深的技术」,哪怕针对特定明确场景进行具体开发任务
  • 仍然高度依赖依赖开发者的个人水准,瓶颈效应明显,新人接手不友善
  • 在更多普适常规场景下,较之JAVA、Python、Go等主流语言,容错率更低,可能无必要性
  • 系统和组织角度的正确性、开发效率,可靠性都难以确保且成本十分昂贵且缓慢

总结

  • 入门曲线极为陡峭,造轮之路如履薄冰,
  • 左手核弹右手***,精通之日遥遥无期,
  • 呕心沥血大功将成,需求减少去向渺茫。
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值