作為一個工作多年,并且長期使用C++作為主要開發(fā)語言的軟件工程師,來聊一聊我對這個問題的看法。
首先說明下我認(rèn)同這樣的觀點,特別是對非職業(yè)程序員,為什么這么說呢?生命苦短啊!
C++在誕生之初相比于同時代的編程語言,因為能很好的支持面向?qū)ο缶幊蹋允艿搅撕芏喙こ處煹淖放酰欢S著技術(shù)的不斷進(jìn)步,很多更先進(jìn)的面向?qū)ο缶幊陶Z言隨之誕生,比如典型的Java、C#、Python等語言,為了增加對新技術(shù)的支持,C++也在不斷的添加新特性,標(biāo)準(zhǔn)也從C++03,一路進(jìn)化到C++11、C++14、C++17,今年更是推出了C++20。這些新標(biāo)準(zhǔn)的推出,表面上看豐富了語言的功能,但是卻有一個巨大的副作用,那就是增加了語言的復(fù)雜性,使得學(xué)習(xí)C++語言變的更加困難。還有模板、多重繼承、智能指針等技術(shù),學(xué)起來不容易,用的地方卻有限,就好比一塊雞肋,讓學(xué)習(xí)者很困惑。
此外,C++作為一門面向?qū)ο笳Z言,卻沒有一個很好的UI庫,包括以前的MFC,以及近幾年比較流行的QT,雖然可以進(jìn)行UI開發(fā),但是從技術(shù)上相比C#和Java來說,還是相對落后一些,開發(fā)效率也較低。
通過上面的說明,似乎C++一無是處,但是……呵呵,但是后面往往跟著更有趣的內(nèi)容。
C++雖然有諸多不足,但是它卻有一個最大的優(yōu)勢,那就是速度,相比C#、Java、Python等語言來說,實現(xiàn)同樣功能的代碼,C++的運行速度要高出很多。所以,在一些對性能要求更高的需求,開發(fā)語言往往會選擇C++,比如操作系統(tǒng),底層的通用庫,服務(wù)器開發(fā),多媒體開發(fā)等,更極端的情況會使用C語言。
綜上,對于一般的編程愛好者來說,如果不準(zhǔn)備以編程為職業(yè),只是興趣愛好,那么正如他們所說的“珍惜生命,遠(yuǎn)離C++”。如果準(zhǔn)備以編程為職業(yè),而且是那種對性能有著極度追求人來說,C++依然是一門不錯的語言,只是需要付出比學(xué)習(xí)其它語言更多的努力,當(dāng)然也有好處,一旦掌握了C++,相當(dāng)于也學(xué)會了C語言,此外,以后學(xué)習(xí)C#、Java、Python等語言將會變得很容易!