前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++过于复杂为何不被淘汰?

C++过于复杂为何不被淘汰?

作者头像
Jean
发布2021-11-07 22:48:49
6470
发布2021-11-07 22:48:49
举报
文章被收录于专栏:Web行业观察Web行业观察

作者:whitebob

“过于复杂”指的是加入了冗余的部分,使得本该简单事情变复杂了。

然而啊。。。C++的复杂并不是如你所想。

C++的核心设计哲学是Zero Overhead。啥意思?说人话就是:你没有用到的特性,不应该给你带来任何负担。

这个哲学的好处在哪里?当你没有学到/用到一个知识点的时候,你不需要为它付出代价。

当你不明白左值右值的时候,单纯地传值就可以玩的很Happy,而当你想要榨取性能,避免拷贝复制的时候,你才需要和复杂的左右值,std::move, 标准 swap 和对象内建swap等听起来就有点晕的概念搏斗一下。

当你不需要自己设计内存分配机制,就完全不需要理会allocator这个听起来就不是很简单的东西,放心地使用STL内置的default部分。但是你在嵌入式环境下或者近实时操作系统里想要确保内存分配的速度和效率,就可以看看怎么重载一下operator new 之类的方法。

当你不需要使用模板工作时,大可以把C++当成一个带类的C玩得飞起。不需要为各种偏特化,类型萃取,integral,std::tuple等高阶咒语头疼不已。但是你需要构建一套需要非常灵活拓展的framework,又不想受限于复杂的继承体制时,variadic template 和 concept 就是你最好的朋友。

在你不熟悉FP的时候,完全可以不去考虑lambda表达式,不去考虑std::function,不去写那些高阶函数。但是当你觉得想把Lisp和Haskell中有些概念比如闭包、monad等搬到C++时,你会觉得其实这些东西蛮顺手的。

这多么人性化!C++为不同的能力阶段的人提供了不同层次的工具,而且它们几乎完全正交!

但是就是有些人要跳出来“太复杂啦!我们需要简单的语言!”

爱因斯坦说过一句话“科学要简单,但不是过于简单。”简单的是概念和概念的层次,却不是概念的数量和概念本身的复杂程度。狭义相对论可以把麦克斯维方程组用一个简单的张量公式表示,却不能避免张量概念本身的复杂性。

经典力学是不是太复杂啦,我们需要简单的!有啊,牛顿力学。只要你不涉及到速度、质量足够大的场景,就不需要相对论;

流体力学是不是太复杂啦?我们需要简单的!有啊,简单流体力学。只要你不涉及湍流,就不要考虑数值求解内维尔-斯托克斯方程。

量子力学是不是太复杂啦?我们需要简单的!有啊,普通量子力学。只要你不涉及复杂多体交换关联势,你就不需要学习高量和重正化群。

C++是不是太复杂啦? 得啦,当你面对的问题还都不涉及到你暂时用不到的内容时,C++够简单啦。。。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档