為什么看到這么多人不推薦C++?
前幾天逛知乎的時(shí)候,看到一個(gè)問題:
看到這個(gè)問題我倒是想吐槽幾句了。
C++一直沒找到自己的定位!
C語言 :我是搞系統(tǒng)編程開發(fā)的,操作系統(tǒng)、數(shù)據(jù)庫(kù)、編譯器、網(wǎng)絡(luò)協(xié)議棧全是我寫的。
PHP :我是搞后端業(yè)務(wù)開發(fā)的,各種網(wǎng)站系統(tǒng)業(yè)務(wù)系統(tǒng)是我的拿手好戲
Java :我也是搞后端業(yè)務(wù)開發(fā)的,跟樓上搶飯碗的,而且我還能搞大數(shù)據(jù)分析處理,對(duì)了,我還有副業(yè)——Android開發(fā)。
C# :我跟樓上一樣,我也有副業(yè)——搞Windows應(yīng)用開發(fā)
Python :我也可以搞后端開發(fā),我也有副業(yè)——爬蟲,數(shù)據(jù)分析。
C++ :你們說的主業(yè)副業(yè)我全都能搞!
寫了10年C++了,對(duì)這門語言是又愛又恨。
你說搞上層業(yè)務(wù)層開發(fā)吧,沒有Java SSM,C# .NET Framework這么核彈級(jí)的豪華配置。
你說搞底層系統(tǒng)開發(fā)吧,一堆復(fù)雜特性,學(xué)習(xí)成本巨高不說,一不小心還把自己玩崩。
所以,這就是C++的尷尬。
造成這個(gè)尷尬的原因,我一直認(rèn)為,是C++被兩撥人坑了。
一、C++標(biāo)準(zhǔn)委員會(huì)
一個(gè)Python程序員,需要一個(gè)基礎(chǔ)功能時(shí),百度一下+pip install,幾分鐘搞定。
一個(gè)Java程序員,需要一個(gè)基礎(chǔ)功能時(shí),百度一下+maven/gradle添加,幾分鐘搞定。
一個(gè)C++程序員,需要一個(gè)基礎(chǔ)功能時(shí),百度一下,在CXDN找到一個(gè)不知名網(wǎng)友分享的源代碼,找有積分的朋友下載后導(dǎo)入到工程,一編譯128個(gè)error,256個(gè)warning···
大家不要笑,這是很多C++程序員都曾有過的經(jīng)歷。
竊以為,一門語言除了基本特性之外,最重要的是生態(tài),這跟操作系統(tǒng)是一個(gè)道理。國(guó)產(chǎn)操作系統(tǒng)不是開發(fā)不出來,而是建立一個(gè)生態(tài)太難太難。編程語言也是一樣,提到Java、Python、C#、PHP這些語言,對(duì)于你能想到的99%的基礎(chǔ)功能,官方都帶有現(xiàn)成的,基本不用你去造輪子。
但C++呢,除了一個(gè)寒酸的STL和一個(gè)同樣寒酸的Boost,還有什么?
江湖上,使用C++的各大門派,谷歌、騰訊、百度、阿里、華為,無一不是多年積累下了一套自己的開發(fā)生態(tài),輕易不會(huì)公布,這也導(dǎo)致了沒有官方的東西,民間自立門戶,標(biāo)準(zhǔn)難以統(tǒng)一。
C++11的unordered_map沒辦法叫hash_map和hash_table就是一個(gè)很好的例子。
C++急需的是一個(gè)遠(yuǎn)比STL豐富百倍千倍的官方庫(kù)和一個(gè)便捷的包管理工具,一統(tǒng)C++開發(fā)江湖。
反觀標(biāo)準(zhǔn)委員會(huì)這些年做了啥?從C++11、C++14、C++17到如今的C++20,除了增添了少量的最基本的組件(比如智能指針、哈希表、線程等),其他全是TM在折騰語言特性?。。?/span>
我不是說新增的語言特性不好,像自動(dòng)類型推導(dǎo)、新式的for循環(huán)、lambda表達(dá)式、右值引用等等這些東西都是非常不錯(cuò)的,我也是對(duì)其愛不釋手。
但這些東西不是C++最緊急的問題,君不見,全世界還有一大票用著C++98的公司,不一樣在過日子嗎?
而這幫子大爺,不思民間疾苦,對(duì)語言特性不斷推陳出新,語法屌出天際又有何用,到頭來用的人越來越少,一切都是零。
(PS:聽說C++23會(huì)有官方的包管理了,好評(píng)一個(gè)~)
二、微軟
微軟怎么坑了C++呢?今天先寫到這里,有空再追更。
你會(huì)推薦新人學(xué)習(xí)C++嗎,為什么?
