为什么看到这么多人不推荐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会有官方的包管理了,好评一个~)
二、微软
微软怎么坑了C++呢?今天先写到这里,有空再追更。
你会推荐新人学习C++吗,为什么?