C++ 的困难其实并不在于开始的一些基本操作,甚至于是指针。

因为C++ 的工程化的形式可以任意组合,并没有太多的限制,而且库文件分的太过于松散,很难去成功的建立一个工程。

在调用第三方库的时候,没有统一的库管理工具,甚至需要自己下载源代码用cmake 编译,编译之后调用的逻辑还是可以按照自己的想来,没有一个统一的规范。

在调用系统api的时候,std 和boost 的学习成本也很高, 跨平台不同步的问题,甚至是跨系统的情况下,库的版本都不一样. 。安装的开发sdk 和语言版本也都是可以任意选择,这些都是需要时间去积累的东西。

常用的一些库,比如日志,压缩,格式化,加密 等等,库也需要自己编译。

目前留在c++ 的项目,要么需要 用到qt 要么是opencv,opengl ,cuda ,ffmpeg等非常专业化的库,学起来非常的吃力。

即便是为了方便使用的make,都有cmake,xmake,ninja 等更高的支持库。

在跨语言调度方面,通常是作为底层被接入,除了类似于lua 等脚本式的代码,用来减少C++的开发量之类的。其他的写起来的成本非常的高。

因还面对驱动和底层,甚至是不同的指令集下的cpu 所以其实编译器也很多,但是不同的开发环境中,编译器的版本式不对齐的,没有一个统一的支持和实现。

因为太过于底层,编码的问题会时有发生,因为没有统一,这里的问题挺多,尤其是在和其他的语言比如C# 实现交互的时候,总需要注意一下。

易学,难懂,基本不可能精通。招人还不方便,学习周期长,项目维护周期长。解决方案太多,学无止境。