優(yōu)秀!19年后,它再次成為T(mén)IOBE年度編程語(yǔ)言
新年伊始,TIOBE發(fā)布了2022年度編程語(yǔ)言,C++時(shí)隔19年再度登頂,成為2022年最受歡迎的編程語(yǔ)言。TIOBE在2003年首次統(tǒng)計(jì)編程語(yǔ)言的流行指數(shù)時(shí),C++便成為年度編程語(yǔ)言。2022年,C++獲得了最高的人氣+4.62%,緊隨其后的是 C (+3.82%) 和 Python (+2.78%)。
在最近的20年里,編程語(yǔ)言風(fēng)云變幻,但C++的變現(xiàn)非常穩(wěn)定,份額始終名列前五,C++作為一種高級(jí)面向?qū)ο笳Z(yǔ)言,可以開(kāi)發(fā)快速而龐大的軟件系統(tǒng),且性能極其出色,使得其經(jīng)常成為開(kāi)發(fā)者的首要選擇。
這款將近40歲的編程語(yǔ)言,為何能如此堅(jiān)挺,且再次崛起呢?
1970年,貝爾實(shí)驗(yàn)室研究員丹尼斯·里奇和肯·湯普森閑來(lái)無(wú)事,因?yàn)槎枷矚g玩一款Space Travel的電子游戲,一拍即合,決定自己開(kāi)發(fā),于是開(kāi)始合作編寫(xiě)UNIX系統(tǒng),并且順手改進(jìn)了一下B語(yǔ)言,兩年后,它被正式命名為C語(yǔ)言。
歪打正著,C語(yǔ)言作為UNIX的“副產(chǎn)品”,迅速成為應(yīng)用最廣泛的系統(tǒng)程序設(shè)計(jì)語(yǔ)言。但C語(yǔ)言也存在一些缺陷,類型檢查機(jī)制相對(duì)較弱、缺少支持代碼重用的語(yǔ)言結(jié)構(gòu),造成用C語(yǔ)言開(kāi)發(fā)大型應(yīng)用程序比較困難。
1979年,丹麥計(jì)算機(jī)科學(xué)家本賈尼·斯特勞斯特盧開(kāi)始改進(jìn)C語(yǔ)言,以C語(yǔ)言為基礎(chǔ),借鑒了Simula的思想,增加了數(shù)據(jù)封裝、繼承、多態(tài)等面向?qū)ο蟮木幊烫匦?,又增加了模板等面向泛型編程的特性,提高了開(kāi)發(fā)效率,加強(qiáng)了對(duì)大中型軟件的適用性。
在1983年,C++正式發(fā)布,并在當(dāng)年通過(guò)了ANSI標(biāo)準(zhǔn)化,從而成為一種正式的編程語(yǔ)言。隨后,C++不斷發(fā)展,向后發(fā)布了C++98、C++03、C++11、C++14、C++17、C++20。
C++在編程語(yǔ)言領(lǐng)域一直保持活躍,一個(gè)很重要的原因是它的“學(xué)習(xí)能力”,不斷地吸收和引入其他編程語(yǔ)言的優(yōu)秀特性來(lái)完善自己,不斷發(fā)布各種特性的新語(yǔ)言標(biāo)準(zhǔn)。
比如最新發(fā)布C++20標(biāo)準(zhǔn),提供了模板元編程、類型推導(dǎo)、范圍for語(yǔ)句、運(yùn)算符重載等許多新特性,參考了Rust的安全特性和Swift的簡(jiǎn)潔語(yǔ)法,提供了更為強(qiáng)大和現(xiàn)代化的功能。C++ 社區(qū)也不斷推出新的編譯器和工具,如 Clang/LLVM 與 GCC, 這使得C++能夠更好的支持新的架構(gòu)和平臺(tái)。
C++作為一種面向?qū)ο蟮木幊陶Z(yǔ)言,有很多優(yōu)點(diǎn),擁有面向?qū)ο缶幊?、泛型編程和模板編程等?qiáng)大特性,能夠支持高性能計(jì)算和嵌入式系統(tǒng)開(kāi)發(fā),并支持跨平臺(tái)開(kāi)發(fā)。與Java、Python等語(yǔ)言相比,C++是運(yùn)行在離操作系統(tǒng)最近的一種高級(jí)語(yǔ)言,可以直面系統(tǒng)底層API,SDK,跟C兼容,因此它的執(zhí)行效率非常高。
它的缺點(diǎn)在于學(xué)習(xí)曲線較高,對(duì)于新手來(lái)說(shuō)可能會(huì)有些棘手,特別是在內(nèi)存管理方面,有時(shí)會(huì)引發(fā)難以調(diào)試的問(wèn)題, C++的錯(cuò)誤也可能很難排查。另外, C++在代碼可讀性和可維護(hù)性方面還有待提升,但這也取決于開(kāi)發(fā)者的風(fēng)格和編碼規(guī)范。
C++為開(kāi)發(fā)者提供了非常豐富和靈活的特性和工具,能夠適應(yīng)各種應(yīng)用場(chǎng)景和需求。例如游戲引擎領(lǐng)域,很多主流游戲引擎,如Unreal Engine、CryEngine和id Tech等,都是用C++開(kāi)發(fā)的。這些引擎能夠?yàn)橛螒蜷_(kāi)發(fā)者提供豐富的功能和工具,并在游戲性能方面表現(xiàn)優(yōu)異。
操作系統(tǒng)領(lǐng)域,很多操作系統(tǒng)的核心部分,如Windows、Linux和macOS等,都是用C++開(kāi)發(fā)的。這些操作系統(tǒng)能夠提供穩(wěn)定和高效的運(yùn)行環(huán)境,并能夠支持各種應(yīng)用程序。
軟件工具領(lǐng)域,很多成功的軟件工具,如Adobe Photoshop、AutoCAD和Microsoft Visual Studio等,還有我們熟悉的QQ、各種殺毒軟件、股票軟件、瀏覽器都是用C++開(kāi)發(fā)的。這些工具能夠提供豐富和強(qiáng)大的功能,并能夠滿足各種專業(yè)領(lǐng)域的需求。
還有高性能計(jì)算和嵌入式系統(tǒng),很多科學(xué)和工程領(lǐng)域的應(yīng)用程序,如氣象模擬、結(jié)構(gòu)分析和分子動(dòng)力學(xué)等,都是用C++開(kāi)發(fā)的。這些程序能夠提供高效和準(zhǔn)確的計(jì)算能力,并能夠處理大量復(fù)雜的數(shù)據(jù)。C++在嵌入式系統(tǒng)領(lǐng)域中也得到廣泛應(yīng)用,如智能家居、工業(yè)控制、智能交通系統(tǒng)等。
馬上迎來(lái)40歲的C++,在編程屆的地位仍然舉足輕重。盡管隨著其他語(yǔ)言的出現(xiàn)和發(fā)展,它的地位可能會(huì)受到挑戰(zhàn),但是它的高效性和靈活性使得它仍然有著很強(qiáng)的競(jìng)爭(zhēng)力。在未來(lái),C++可能會(huì)越來(lái)越重。