編輯 | 言征
出品 | 51CTO技術棧(微信號:blog51cto)
C++,這種在二十世紀晚期曾大放異彩的語言,曾一度站在技術發(fā)展的最前沿,尤其是在太空探索領域。然而,隨著更新穎、更具視覺吸引力的編程語言的出現(xiàn),C++的關注度已經(jīng)逐漸降低。
在2024年的AI+數(shù)據(jù)峰會上,研究員Yejin Choi表示,研究人員已經(jīng)不再使用這種語言進行AI研究。那么,C++是否正在成為過去的遺跡呢?
1.AI領域并不青睞C++
盡管C++在性能上具有優(yōu)勢,并在語音識別和計算機視覺等多個AI領域有所應用,但它并不是AI開發(fā)的首選語言。其復雜性和陡峭的學習曲線構成了巨大的挑戰(zhàn)。相比之下,Python因其友好的用戶界面、豐富的庫和龐大的開發(fā)者社區(qū)而躍居AI編程的前沿。
此外,C++涉及手動內(nèi)存管理,如果操作不當,可能會導致內(nèi)存泄漏和錯誤。這在大型AI項目中可能成為一個重大問題。微軟在公布過去12年中的更新情況時強調(diào),由于Windows主要用C和C++編寫,其中70%的更新都是為了解決內(nèi)存安全漏洞。谷歌Chrome團隊也發(fā)布了自己的研究,揭示了內(nèi)存管理和安全漏洞占Chrome代碼庫中所有主要安全漏洞的70%,而Chrome主要用C++編寫。
C++還缺乏垃圾回收、數(shù)據(jù)庫訪問和線程處理等內(nèi)置支持,這些都需要額外努力進行開發(fā)。
在需要并發(fā)處理數(shù)據(jù)和任務的AI應用中,如深度學習、神經(jīng)網(wǎng)絡、實時系統(tǒng)、嵌入式系統(tǒng)、數(shù)據(jù)處理和數(shù)據(jù)科學等,這可能會特別具有挑戰(zhàn)性。為了克服這些限制,開發(fā)者通常會使用提供線程支持的第三方庫和框架,如OpenMP或Boost。然而,這些庫可能會給代碼增加復雜性和開銷,這可能只適用于某些應用。
2.C++很復雜
如果你訪問過類似C++常見問題解答(FAQ)的頁面,你就會明白C++有多難。在早期的語言版本中,一個逗號放錯位置可能會引發(fā)數(shù)百個編譯錯誤。盡管自C++11以來,該語言通過移動語義(用于轉(zhuǎn)移所有權)和右值引用來進行了改進,但學習曲線仍然很高。
3.開發(fā)新應用
近年來,我們見證了各種編程語言的發(fā)展,這些語言有可能取代C++用于低級系統(tǒng)任務,比如Rust,它通過消除緩沖區(qū)溢出和內(nèi)存泄漏提供了安全性和穩(wěn)定性(并且比C++更容易學習)。
當你比較像C++、Python和Rust這樣的現(xiàn)代語言的功能集時,C語言開始看起來就像恐龍一樣古老!自2011年以來,C標準就沒有引入過新功能!2017年的標準版本主要包含技術更正和澄清,而2023年的標準版本也沒有帶來什么重大變革。
4.C++正在失去人氣嗎?
微軟Azure的首席技術官Mark Russinovich表示,開發(fā)者應該停止使用C和C++這兩種編程語言編寫代碼,并且業(yè)界應該將這些計算機語言視為“已棄用”。
Bell Labs研究員、原Unix操作系統(tǒng)設計師Ken Thompson稱C++是“糟糕的語言”,它“太大、太復雜”,而且“顯然是由一個委員會構建的”。
GitHub編制了一份機器學習領域最受歡迎的十大編程語言列表。Python是機器學習存儲庫中最流行的語言,而C++排在第六位。
根據(jù)Stack Overflow的開發(fā)者調(diào)查,相比C++,剛開始編寫代碼的初學者更可能選擇Python。
盡管C++在速度和內(nèi)存管理方面具有優(yōu)勢,但它也有劣勢,如學習曲線陡峭且社區(qū)支持較少。盡管如此,對于需要高性能處理和高級內(nèi)存管理的機器學習應用來說,C++仍然是一個強大的選擇。機器學習中選擇C++還是Python最終取決于應用的特定需求以及開發(fā)者的技能水平。