为什么看到这么多人不推荐C++?

2023-05-16

转一个回答。

链接:https://www.zhihu.com/question/22853451/answer/2084675682

其实现在也越来越发现,C++老是在弄那些语言特性,当然有一些好用的,但是让C++这门语言也越来越臃肿。使得学习成本很高,而且普遍实现某个功能,可以有多个不同的方法,使得代码的统一性不好。

除此之外,C++的标准库和STL库功能太匮乏了,大家都调侃C++就是用来刷LeetCode的,现在C++就是缺一个好的包管理器,不管是标准库还是第三方库,这样可以让C++开发变得更高效率。


C++一直没找到自己的定位!

C语言:我是搞系统编程开发的,操作系统、数据库、编译器、网络协议栈全是我写的。

PHP:我是搞后端业务开发的,各种网站系统业务系统是我的拿手好戏

Java:我也是搞后端业务开发的,跟楼上抢饭碗的,而且我还能搞大数据分析处理,对了,我还有副业——Android开发。

C#:我跟楼上一样,我也有副业——搞Windows应用开发

Python:我也可以搞后端开发,我也有副业——爬虫,数据分析。

C++:你们说的主业副业我全都能搞!

-------------------------------------------分割线---------------------------------------------

写了10年C++了,对这门语言是又爱又恨。

你说搞上层业务层开发吧,没有Java SSM,C# .NET Framework这么核弹级的豪华配置。

你说搞底层系统开发吧,一堆复杂特性,学习成本巨高不说,一不小心还把自己玩崩。

所以,这就是C++的尴尬。

造成这个尴尬的原因,我一直认为,是C++被两拨人坑了。

一、C++标准委员会。

一个Python程序员,需要一个基础功能时,百度一下+pip install,几分钟搞定。

一个Java程序员,需要一个基础功能时,百度一下+maven/gradle添加,几分钟搞定。

一个C++程序员,需要一个基础功能时,百度一下,在CXDN找到一个不知名网友分享的源代码,找有积分的朋友下载后导入到工程,一编译128个error,256个warning···

大家不要笑,这是很多C++程序员都曾有过的经历。

窃以为,一门语言除了基本特性之外,最重要的是生态,这跟操作系统是一个道理。国产操作系统不是开发不出来,而是建立一个生态太难太难。编程语言也是一样,提到Java、Python、C#、PHP这些语言,对于你能想到的99%的基础功能,官方都带有现成的,基本不用你去造轮子。

但C++呢,除了一个寒酸的STL和一个同样寒酸的Boost,还有什么?

江湖上,使用C++的各大门派,谷歌、腾讯、百度、阿里、华为,无一不是多年积累下了一套自己的开发生态,轻易不会公布,这也导致了没有官方的东西,民间自立门户,标准难以统一。

C++11的unordered_map没办法叫hash_map和hash_table就是一个很好的例子。

C++急需的是一个远比STL丰富百倍千倍的官方库和一个便捷的包管理工具,一统C++开发江湖。

反观标准委员会这些年做了啥?从C++11、C++14、C++17到如今的C++20,除了增添了少量的最基本的组件(比如智能指针、哈希表、线程等),其他全是TM在折腾语言特性!!!

我不是说新增的语言特性不好,像自动类型推导、新式的for循环、lambda表达式、右值引用等等这些东西都是非常不错的,我也是对其爱不释手。

但这些东西不是C++最紧急的问题,君不见,全世界还有一大票用着C++98的公司,不一样在过日子吗?

而这帮子大爷,不思民间疾苦,对语言特性不断推陈出新,语法屌出天际又有何用,到头来用的人越来越少,一切都是零。

(PS:听说C++23会有官方的包管理了,好评一个~)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么看到这么多人不推荐C++? 的相关文章

随机推荐

  • 【LeetCode刷题日记】[859. 亲密字符串]

    C 43 43 span class token keyword class span span class token class name Solution span span class token punctuation span
  • C++中原生数组、STL的vector、STL的array的区别

    文章目录 一 数组一维数组一维数组初始化一维数组元素的引用 二 STL的arrayC 43 43 STL array随机访问迭代器 xff08 精讲版 xff09 begin end 和 cbegin cend rbegin rend 和
  • Docker 入门教程

    推荐两篇阮一峰老师的文章 xff0c 网上看了很多Docker教程 xff0c 发现还是这个让我理解了什么是Docker xff0c 怎么用Docker Docker 入门教程 Docker 微服务教程 再放一个比较全的Docker教程 x
  • 【C/C++服务器开发】中间件的含义及常用中间件介绍

    文章目录 一 中间件的定义中间件一词的由来中间件的定义什么不是中间件评判关键中间件的好处中间件分类常用基础中间件中间件云产品 二 中间件的开发什么是中间件开发 xff1f 中间件开发人员需要哪些素质 xff1f 如何成为中间件开发人员 xf
  • source insight查看函数调用关系(总结全网资料)

    有时候我们去查看一个项目的源代码时 xff0c 一般都会想先知道函数之间的调用关系 xff0c 之前一般都是自己在笔记本上画出来 xff0c 但这是一个效率很低的方法 xff0c source insight提供了查看函数调用关系的功能 因
  • C/C++字符串基础,类型,使用方法大全(字符,字符串,字符数组,字符串函数,C++ string)

    文章目录 一 前言二 C C 43 43 字符串1 字符字符的表示字符的输出字符与整数 2 字符和字符串编码源文件使用什么编码窄字符串使用什么编码总结 3 ASCII编码了解对控制字符的解释 4 C语言转义字符5 在C语言中使用中文字符中文
  • Redis基础,Linux下安装Redis和hredis,C++调用Redis,Redis中字符串设计

    文章目录 一 Redis是什么Redis架构Redis优势Redis应用场景 二 Linux下载安装Redis xff08 Ubuntu系统 xff09 了解Redis版本在线安装Redis启动Redis服务端启动Redis客户端验证是否成
  • Redis数据结构

    昨天刚写了一个Redis的文章之后 xff0c 后面发现了一个大佬写了一篇关于Redis数据结构的文章 推荐一些 xff1a 为了拿捏 Redis 数据结构 xff0c 我画了 20 张图
  • Redis配置项汇总(超级详细)

    文章目录 查看配置项更改配置项更改配置文件配置项说明基本配置主从服务配置安全配置限制配置AOF日志模式慢查询配置服务端命令客户端命令连接命令 在 Redis 的安装目录中有一个名为 redis windows conf 的配置文件 xff0
  • navicat查看保存的密码

    参考 xff1a 查看Navicat保存的密码 Micky233 博客园 cnblogs com https www cnblogs com geek233 p 16772618 html
  • Redis常用命令及C/C++调用Redis接口详解

    文章目录 一 Redis常用命令启动Redis服务端启动Redis客户端Redis常用命令详解键 xff08 Key xff09 命令Hash 命令String 命令List 命令Set 命令Zset 命令 二 C C 43 43 调用接口
  • Redis数据结构2

    继续放一下小林coding的文章 xff1a 为了拿捏 Redis 数据结构 xff0c 我画了 40 张图 xff08 完整版 xff09
  • Redis博客、教程学习资料汇总(持续更新)

    在这篇博客中 xff0c 总结一下写过的博客和一些好的学习资料 博客 xff1a Redis基础 xff0c Linux下安装Redis和hredis xff0c C 43 43 调用Redis xff0c Redis中字符串设计 Redi
  • memcached在linux上的安装,C/C++调用memcached,memcached与Redis的区别

    文章目录 一 memcached在linux上的安装安装 Memcached自动安装源代码安装 Memcached 运行 xff08 1 xff09 作为前台程序运行 xff1a xff08 2 xff09 作为后台服务程序运行 xff1a
  • 【C/C++服务器开发】事件驱动、事件驱动架构、事件驱动编程及设计模式

    文章目录 一 事件驱动二 事件驱动编程事件驱动和异步IO看图说话讲事件驱动模型 三 C C 43 43 实现事件驱动四 常用的C C 43 43 事件驱动库 一 事件驱动 首先我们来看看百度百科的介绍 所谓事件驱动 xff0c 简单地说就是
  • VxWorks消息队列详解

    文章目录 一 前言二 VxWorks消息队列模块详解三 代码实例 一 前言 最近看了点事件驱动编程 了解到在时间驱动编程中 xff0c 重要的是一个事件收集器 一个事件发送器和一个事件处理器 这让我联想到VxWorks中的消息队列 xff0
  • VxWorks/tornado中怎么调试及WindSh常用命令行详解

    一 调试 VxWorks5 5 tornado2 2作为一款极为远古的嵌入式实时操作系统和IDE xff0c 软件的界面和功能都是极为原始的 在这种情况下 xff0c 如果我们要对软件进行调试该怎么操作呢 xff1f tornado调试分为
  • 如何长期输出优质内容?我是如何做到的?

    分享一篇站长的文章 xff1a 如何长期输出优质内容 xff1f 我是如何做到的 xff1f 创业 7 年时间里 xff0c 我一直在运营C语言中文网 xff0c 创作和参与了 40 多套编程教材 xff0c 累计阅读人次超过 2000 万
  • Dev C++调试程序方法详解

    分享一篇站长的关于调试的文章 xff1a Dev C 43 43 调试程序方法详解 Dev C 43 43 算是兼容性很好使用很方便的IDE了 xff0c 记录一下调试方法 xff0c 以备不时之需 所谓调试程序 xff0c 就是控制编译器
  • 为什么看到这么多人不推荐C++?

    转一个回答 链接 xff1a https www zhihu com question 22853451 answer 2084675682 其实现在也越来越发现 xff0c C 43 43 老是在弄那些语言特性 xff0c 当然有一些好用