中國電競網(wǎng)

中國電競網(wǎng)

C++創(chuàng)始人:需要改變的不是語言,而是開發(fā)者的思維方式!

阿修羅 148 chinaz

“C++ 不是一種可替代的語言。如果你問我們真正想要改變的是什么,那可能不是語言本身,而是開發(fā)人員的思維方式。”C++創(chuàng)始人、哥倫比亞大學教授比雅尼?斯特勞斯特魯普在 12 日接受媒體采訪時,如是強調(diào)。他表示,即使在人工智能AI)和新語言引領(lǐng)的開發(fā)環(huán)境發(fā)生變化的情況下,C++存在的理由依然有效,并指出真正的挑戰(zhàn)不是語言,而是思維方式的轉(zhuǎn)變。

他認為,當前的軟件(SW )生態(tài)系統(tǒng)過于注重“便利性”和“速度”,結(jié)果導致語言和開發(fā)方法的核心原則正在被削弱。

斯特勞斯特魯普特別指出,基于人工智能的代碼生成工具助長了“無意識編碼的習慣”。他表示:“人工智能專門學習并重新組合了現(xiàn)有代碼”,“結(jié)果是,過去錯誤的模式、陳舊的風格很可能會被重復使用”。

作為這一觀點的依據(jù),他指出基于 GPT 的代碼生成器仍然在推薦 C++ 中早已被摒棄的方式,比如原始指針(raw pointer)或傳統(tǒng)的數(shù)組指針傳遞。他解釋說,問題在于:這些工具可能反而會阻礙現(xiàn)代 C++ 的編程理念 —— 即編寫安全且表現(xiàn)力強的代碼的趨勢。

對此,他警告稱,依賴人工智能提供的 “看似正確答案的代碼” 的開發(fā)者越來越多,而編程的本質(zhì) —— 問題識別和抽象設計能力必然會退化。

此外,他斷言:“優(yōu)秀的開發(fā)者應該能夠定義問題并構(gòu)建與之匹配的模型”,“編碼只是結(jié)果,一旦將問題識別委托給人工智能,開發(fā)者就不再是技術(shù)人員了”。

斯特勞斯特魯普教授對人工智能時代創(chuàng)造新語言、或廢棄現(xiàn)有語言的嘗試也持強硬立場。他說:“僅僅因為語言的某些功能存在風險,就去除這些功能或替代該語言,這并不是正確的答案。”

他解釋說,C++ 確實提供了一些復雜、且有時可能存在風險的功能,但正是這些功能成為了高性能系統(tǒng)、實時控制、大規(guī)模分布式處理等重要領(lǐng)域必不可少的工具。

斯特勞斯特魯普教授還強調(diào),他希望人工智能等技術(shù)的發(fā)展不會以威脅開發(fā)者專業(yè)能力的方式進行。他的觀點是,人工智能可以提高代碼編寫的生產(chǎn)效率,但為了防止由此導致的判斷能力喪失和技術(shù)債務擴散等問題,開發(fā)者自身需要對語言和設計原理有深刻的理解。

與此同時,斯特勞斯特魯普教授對 C++ 的內(nèi)存安全性問題、以及因這一問題而試圖替代該語言的動向表示了深切擔憂。

最近,由于 C++ 的手動內(nèi)存管理特性而產(chǎn)生的內(nèi)存漏洞被認為是安全漏洞的主要原因,因此,關(guān)于轉(zhuǎn)向像 Rust 這樣強調(diào)內(nèi)存安全性的語言的討論愈發(fā)高漲。

針對這些批評,斯特勞斯特魯普教授強調(diào)了 C++ 的基本設計理念: C++從誕生之初就以類型安全和資源安全 —— 即內(nèi)存安全性作為核心目標。他還強調(diào),C++ 是一種可進化的語言,并通過現(xiàn)代功能和工具不斷提高安全性。

順應這一趨勢,他提出了配置文件的概念,作為解決 C++ 內(nèi)存安全問題的一種策略。斯特勞斯特魯普教授表示:“新的語言未能同時具備 C++ 那樣的性能、控制力和抽象范圍”,“C++ 所具備的特性不僅僅是悠久的傳統(tǒng),更是高性能軟件開發(fā)所需的基本能力”。

接著他又說:“C++ 是一種無法被替代的語言”,“如果你問我們真正需要被替代的是什么,那有可能不是語言,而是開發(fā)者的思維體系”。

此外,他指出 “互操作性” 是新興語言必然面臨的現(xiàn)實問題。

他警告說:“任何新語言要想成功,都必須與 C++ 和 Python 等現(xiàn)有語言很好地兼容。” “否則,我們最終得到的只是一堆支離破碎的、彼此之間難以溝通的語言。”

基于這些主張,他表示,“現(xiàn)代 C++” 的核心不在于使用新功能,而在于如何協(xié)調(diào)語言的理念和風格。

斯特勞斯特魯普教授解釋說,自 C++ 11 之后,這個語言提供了多樣的特性,諸如智能指針、自動類型推導(auto)、概念(concepts)、模塊系統(tǒng)(modules)等,并非僅僅是可選的選項,而是構(gòu)建安全且強大的軟件的核心組成部分。

他強調(diào):“使用‘導入(import)’代替?zhèn)鹘y(tǒng)的‘#include’,并積極利用移動語義和智能指針”,“現(xiàn)代 C++ 的使用方法才是保持和提升開發(fā)者能力的關(guān)鍵”。


標簽:C++ 創(chuàng)始人 開發(fā)者