全国统一服务热线

173-1709-2536

新闻中心

当前位置:首页>新闻中心

c++难在了哪里

能力上限要求高

C++的能力上限非常高,可以说在软件领域没有C++做不好和做不到的事情,只是开发者水平和成本问题,而C++之后出现的语言都有些无论如何都做不好或根本做不到的事情。

C++虽然能力上限高,但是达到这个上限对开发者的要求也很高,不是普通程序员可以做到的。

其它语言虽然上限低,但是只要不去碰那些极端要求的领域,在各自的优势领域里还是能超越C++的,对工程师要求也没那么高,但是在全领域超越C++的目前还没有。

C++的难点在于给开发者的自由度太高了,什么都可以做,限制很少,导致水平不够的人也可以胡搞瞎搞,把代码写的乱七八糟,然后怪C++太难太复杂。

学好C++,较重要的是你要有学C++的需求,就是个人目标是要成为程序员,成为开发基础设施,设计构建软件平台的人,没有宏大的理想不会有足够的动力去学C++的,过程中太多困难会导致放弃的。

长期来看,C++还是会被取代的,只是这个长期非常长,可以入选有生之年系列。

可以看到在较近几年新出现的软件项目里,C++的使用率已经在下降了,但是很多历史悠久的基础设施类的项目基本都是C++,这些项目生命周期都很长,不会轻易被淘汰。

项目架构难度大

项目构建看上去似乎是个拦路虎,不过结合现代cmake之后,很复杂的工程也其实可以构建得很简单。

难在范式多。范式多其实并不难,真正难在各范式的较佳实践相当不明确。过程式和传统c with class的较佳实践还是比较明确的,多看看GTK和QT就差不离。但是现代C++偏重于静态决定和半函数式,而且本身还在剧烈演进中,这两个方向上,较佳实践比较匮乏,尤其是大规模工程化的较佳实践。我看过微软、facebook的几个现代C++开发框架,还是感觉过于玩具化,跟我自己的开发方式也区别很大,当然我自己是简单至上的,不算完全的通用化方案。

那么真正的难度就在于取舍。如何做业务抽象,以何种形式来做抽象,如何平衡复杂与简洁度,如何确认各技术和模块的边界,如何综合运用多范式就很考验经验和性格。

说点性能以外的优势吧。C++11之后,一向是我认为较佳的工程语言,控制力极强。重点在于静态决定和操作简化。

C++尽量少搞动态OOP,理论上不成问题,但是实际语法相当麻烦,而且弄多了就很容易出现像python一样的问题,重构困难。所以基于极强的类型化体系和模板体系,在开发体系的抽象和重构性上,可以达到一个相当舒服的地步。尽可能的静态决定可以避免很多手工错误。

C++写库那是各种手段都可以用上的,但是写完了,可以做到使用极其简单。

再结合C++20的concept这种前置类型条件,constract这种前置边界后置边界,写代码就更舒服了。


QQ咨询
在线咨询
在线报名
173-1709-2536
173-1709-2536
返回顶部