“C++ 不是一種可替代的語(yǔ)言。如果你問我們真正想要改變的是什么,那可能不是語(yǔ)言本身,而是開發(fā)人員的思維方式。”C++創(chuàng)始人、哥倫比亞大學(xué)教授比雅尼?斯特勞斯特魯普在 12 日接受媒體采訪時(shí),如是強(qiáng)調(diào)。他表示,即使在人工智能(AI)和新語(yǔ)言引領(lǐng)的開發(fā)環(huán)境發(fā)生變化的情況下,C++存在的理由依然有效,并指出真正的挑戰(zhàn)不是語(yǔ)言,而是思維方式的轉(zhuǎn)變。
他認(rèn)為,當(dāng)前的軟件(SW )生態(tài)系統(tǒng)過于注重“便利性”和“速度”,結(jié)果導(dǎo)致語(yǔ)言和開發(fā)方法的核心原則正在被削弱。
斯特勞斯特魯普特別指出,基于人工智能的代碼生成工具助長(zhǎng)了“無(wú)意識(shí)編碼的習(xí)慣”。他表示:“人工智能專門學(xué)習(xí)并重新組合了現(xiàn)有代碼”,“結(jié)果是,過去錯(cuò)誤的模式、陳舊的風(fēng)格很可能會(huì)被重復(fù)使用”。
作為這一觀點(diǎn)的依據(jù),他指出基于 GPT 的代碼生成器仍然在推薦 C++ 中早已被摒棄的方式,比如原始指針(raw pointer)或傳統(tǒng)的數(shù)組指針傳遞。他解釋說,問題在于:這些工具可能反而會(huì)阻礙現(xiàn)代 C++ 的編程理念 —— 即編寫安全且表現(xiàn)力強(qiáng)的代碼的趨勢(shì)。
對(duì)此,他警告稱,依賴人工智能提供的 “看似正確答案的代碼” 的開發(fā)者越來越多,而編程的本質(zhì) —— 問題識(shí)別和抽象設(shè)計(jì)能力必然會(huì)退化。
此外,他斷言:“優(yōu)秀的開發(fā)者應(yīng)該能夠定義問題并構(gòu)建與之匹配的模型”,“編碼只是結(jié)果,一旦將問題識(shí)別委托給人工智能,開發(fā)者就不再是技術(shù)人員了”。
斯特勞斯特魯普教授對(duì)人工智能時(shí)代創(chuàng)造新語(yǔ)言、或廢棄現(xiàn)有語(yǔ)言的嘗試也持強(qiáng)硬立場(chǎng)。他說:“僅僅因?yàn)檎Z(yǔ)言的某些功能存在風(fēng)險(xiǎn),就去除這些功能或替代該語(yǔ)言,這并不是正確的答案。”
他解釋說,C++ 確實(shí)提供了一些復(fù)雜、且有時(shí)可能存在風(fēng)險(xiǎn)的功能,但正是這些功能成為了高性能系統(tǒng)、實(shí)時(shí)控制、大規(guī)模分布式處理等重要領(lǐng)域必不可少的工具。
斯特勞斯特魯普教授還強(qiáng)調(diào),他希望人工智能等技術(shù)的發(fā)展不會(huì)以威脅開發(fā)者專業(yè)能力的方式進(jìn)行。他的觀點(diǎn)是,人工智能可以提高代碼編寫的生產(chǎn)效率,但為了防止由此導(dǎo)致的判斷能力喪失和技術(shù)債務(wù)擴(kuò)散等問題,開發(fā)者自身需要對(duì)語(yǔ)言和設(shè)計(jì)原理有深刻的理解。
與此同時(shí),斯特勞斯特魯普教授對(duì) C++ 的內(nèi)存安全性問題、以及因這一問題而試圖替代該語(yǔ)言的動(dòng)向表示了深切擔(dān)憂。
最近,由于 C++ 的手動(dòng)內(nèi)存管理特性而產(chǎn)生的內(nèi)存漏洞被認(rèn)為是安全漏洞的主要原因,因此,關(guān)于轉(zhuǎn)向像 Rust 這樣強(qiáng)調(diào)內(nèi)存安全性的語(yǔ)言的討論愈發(fā)高漲。
針對(duì)這些批評(píng),斯特勞斯特魯普教授強(qiáng)調(diào)了 C++ 的基本設(shè)計(jì)理念: C++從誕生之初就以類型安全和資源安全 —— 即內(nèi)存安全性作為核心目標(biāo)。他還強(qiáng)調(diào),C++ 是一種可進(jìn)化的語(yǔ)言,并通過現(xiàn)代功能和工具不斷提高安全性。
順應(yīng)這一趨勢(shì),他提出了配置文件的概念,作為解決 C++ 內(nèi)存安全問題的一種策略。斯特勞斯特魯普教授表示:“新的語(yǔ)言未能同時(shí)具備 C++ 那樣的性能、控制力和抽象范圍”,“C++ 所具備的特性不僅僅是悠久的傳統(tǒng),更是高性能軟件開發(fā)所需的基本能力”。
接著他又說:“C++ 是一種無(wú)法被替代的語(yǔ)言”,“如果你問我們真正需要被替代的是什么,那有可能不是語(yǔ)言,而是開發(fā)者的思維體系”。
此外,他指出 “互操作性” 是新興語(yǔ)言必然面臨的現(xiàn)實(shí)問題。
他警告說:“任何新語(yǔ)言要想成功,都必須與 C++ 和 Python 等現(xiàn)有語(yǔ)言很好地兼容。” “否則,我們最終得到的只是一堆支離破碎的、彼此之間難以溝通的語(yǔ)言。”
基于這些主張,他表示,“現(xiàn)代 C++” 的核心不在于使用新功能,而在于如何協(xié)調(diào)語(yǔ)言的理念和風(fēng)格。
斯特勞斯特魯普教授解釋說,自 C++ 11 之后,這個(gè)語(yǔ)言提供了多樣的特性,諸如智能指針、自動(dòng)類型推導(dǎo)(auto)、概念(concepts)、模塊系統(tǒng)(modules)等,并非僅僅是可選的選項(xiàng),而是構(gòu)建安全且強(qiáng)大的軟件的核心組成部分。
他強(qiáng)調(diào):“使用‘導(dǎo)入(import)’代替?zhèn)鹘y(tǒng)的‘#include’,并積極利用移動(dòng)語(yǔ)義和智能指針”,“現(xiàn)代 C++ 的使用方法才是保持和提升開發(fā)者能力的關(guān)鍵”。
標(biāo)簽:C++ 創(chuàng)始人 開發(fā)者