富有活力的語言需要不斷改變和成長,C++也不例外。在本文中,Bjarne Stroustrup提出了自己對C++的設(shè)計和演化的看法。
為了讓編譯器、工具和類庫實(shí)現(xiàn)者跟上節(jié)奏,讓用戶吸收標(biāo)準(zhǔn)C++所支持的編程技術(shù),在早有預(yù)計的、沉寂了幾年之后,委員會再次考慮語言擴(kuò)展問題了。"擴(kuò)展工作組"已經(jīng)建立了,它代替了"演化工作組"。名稱的改變(這是Tom Plum的建議)反映了更重要的是語言特性和標(biāo)準(zhǔn)類庫工具的集成。我仍然是該工作組的主席。我希望這可以確保C++版本的連貫性和最終結(jié)果的一致性。相似的,委員會成員資格也顯示了大量人員和組織的連續(xù)參與。幸運(yùn)的是,也出現(xiàn)了很多新的面孔,為委員會帶來了新的影響和新的專家意見。
我們打算對語言本身的改變保持謹(jǐn)慎和保守,重點(diǎn)強(qiáng)調(diào)兼容性。主要的目的是把主要的努力引導(dǎo)到標(biāo)準(zhǔn)類庫的擴(kuò)展上來。在標(biāo)準(zhǔn)類庫方面,我們的目標(biāo)是大膽進(jìn)取,利用一切機(jī)會。
對于標(biāo)準(zhǔn)類庫,我希望根據(jù)類庫技術(shù)報告的要素來建立它,使它成為一個用于系統(tǒng)編程的更廣泛的平臺。例如,我希望看到用于某些領(lǐng)域的類庫,例如目錄/文件夾操作、線程和套接字。我還希望委員會同情很多新的C++程序員,提供類庫工具支持背景不同的新手(不是新程序員和C的難民)。例如,我希望看到一個使用范圍檢查STL的標(biāo)準(zhǔn)方法。我對最頻繁地被請求添加到標(biāo)準(zhǔn)類庫中的標(biāo)準(zhǔn)GUI(圖形用戶接口)的期望值很低。但是,奇跡有時候也會發(fā)生--記得STL嗎?
對于語言本身,我希望重點(diǎn)強(qiáng)調(diào)支持泛型編程的特性,因?yàn)榉盒途幊淌钦Z言的使用取得進(jìn)步的領(lǐng)域。此處,我將調(diào)查兩個關(guān)鍵部分:
·概念(Concepts):用于模板參數(shù)的類型系統(tǒng)
·初始化器(Initializer)列表:初始化工具的泛化
與以往一樣,建議的數(shù)量仍然遠(yuǎn)遠(yuǎn)超出了委員會能夠處理和該語言能夠吸收的數(shù)量。請記住,接受所有好的建議是不可能辦到的。
該語言擴(kuò)展以支持泛型編程的全部目標(biāo)是為工具提供更大的一致性,允許我們用泛型直接表示用于解決問題的類。
我的其它優(yōu)先考慮(與更好地支持泛型編程一起)是更好地支持初學(xué)者。目前的建議有一種值得注意的傾向,即這些建議照顧了哪些提出和評估建議的專家用戶。有些簡單地幫助那些新手的建議經(jīng)常被忽略了。我認(rèn)為這是一種潛在的致命的設(shè)計偏好。除非新手受到了充分的支持,否則只有很少人能夠成為專家。此外,很多人并不希望成為專家;他們希望仍然是"偶然的C++用戶"。例如使用C++進(jìn)行物理計算或控制試驗(yàn)設(shè)備的物理學(xué)家只有有限的學(xué)習(xí)編程技術(shù)的時間。計算機(jī)專家可能會在編程技術(shù)方面花費(fèi)很多時間,而不僅僅是期望。我們必須消除那些采用優(yōu)良技術(shù)的不必要的障礙。
一個非常簡單的例子如下:
vector> v;
在98年的C++中,這會導(dǎo)致語法錯誤,因?yàn)?>是一個單獨(dú)的詞匯記號,而不是封閉模板參數(shù)列表的兩個>。V正確的聲明可能是:
vector< vector > v;
我把它看作是一種阻礙。我曾經(jīng)建議這個問題值得解決,但是當(dāng)前的規(guī)則和演化工作組用一些很好的理由兩次拒絕了我的建議。但是,這些理由都是語言技術(shù)方面的,而新手(包括其他語言的專家)沒有興趣。不接受第一種(也是十分)明顯的v聲明浪費(fèi)了用戶和教師的時間。我希望>>問題和其它相似的"阻礙"不要再出現(xiàn)在C++0x中。實(shí)際上,我與Francis Glassborow和其他人一起,正在試圖系統(tǒng)地消除最頻繁發(fā)生的這類"阻礙"。
為了讓編譯器、工具和類庫實(shí)現(xiàn)者跟上節(jié)奏,讓用戶吸收標(biāo)準(zhǔn)C++所支持的編程技術(shù),在早有預(yù)計的、沉寂了幾年之后,委員會再次考慮語言擴(kuò)展問題了。"擴(kuò)展工作組"已經(jīng)建立了,它代替了"演化工作組"。名稱的改變(這是Tom Plum的建議)反映了更重要的是語言特性和標(biāo)準(zhǔn)類庫工具的集成。我仍然是該工作組的主席。我希望這可以確保C++版本的連貫性和最終結(jié)果的一致性。相似的,委員會成員資格也顯示了大量人員和組織的連續(xù)參與。幸運(yùn)的是,也出現(xiàn)了很多新的面孔,為委員會帶來了新的影響和新的專家意見。
我們打算對語言本身的改變保持謹(jǐn)慎和保守,重點(diǎn)強(qiáng)調(diào)兼容性。主要的目的是把主要的努力引導(dǎo)到標(biāo)準(zhǔn)類庫的擴(kuò)展上來。在標(biāo)準(zhǔn)類庫方面,我們的目標(biāo)是大膽進(jìn)取,利用一切機(jī)會。
對于標(biāo)準(zhǔn)類庫,我希望根據(jù)類庫技術(shù)報告的要素來建立它,使它成為一個用于系統(tǒng)編程的更廣泛的平臺。例如,我希望看到用于某些領(lǐng)域的類庫,例如目錄/文件夾操作、線程和套接字。我還希望委員會同情很多新的C++程序員,提供類庫工具支持背景不同的新手(不是新程序員和C的難民)。例如,我希望看到一個使用范圍檢查STL的標(biāo)準(zhǔn)方法。我對最頻繁地被請求添加到標(biāo)準(zhǔn)類庫中的標(biāo)準(zhǔn)GUI(圖形用戶接口)的期望值很低。但是,奇跡有時候也會發(fā)生--記得STL嗎?
對于語言本身,我希望重點(diǎn)強(qiáng)調(diào)支持泛型編程的特性,因?yàn)榉盒途幊淌钦Z言的使用取得進(jìn)步的領(lǐng)域。此處,我將調(diào)查兩個關(guān)鍵部分:
·概念(Concepts):用于模板參數(shù)的類型系統(tǒng)
·初始化器(Initializer)列表:初始化工具的泛化
與以往一樣,建議的數(shù)量仍然遠(yuǎn)遠(yuǎn)超出了委員會能夠處理和該語言能夠吸收的數(shù)量。請記住,接受所有好的建議是不可能辦到的。
該語言擴(kuò)展以支持泛型編程的全部目標(biāo)是為工具提供更大的一致性,允許我們用泛型直接表示用于解決問題的類。
我的其它優(yōu)先考慮(與更好地支持泛型編程一起)是更好地支持初學(xué)者。目前的建議有一種值得注意的傾向,即這些建議照顧了哪些提出和評估建議的專家用戶。有些簡單地幫助那些新手的建議經(jīng)常被忽略了。我認(rèn)為這是一種潛在的致命的設(shè)計偏好。除非新手受到了充分的支持,否則只有很少人能夠成為專家。此外,很多人并不希望成為專家;他們希望仍然是"偶然的C++用戶"。例如使用C++進(jìn)行物理計算或控制試驗(yàn)設(shè)備的物理學(xué)家只有有限的學(xué)習(xí)編程技術(shù)的時間。計算機(jī)專家可能會在編程技術(shù)方面花費(fèi)很多時間,而不僅僅是期望。我們必須消除那些采用優(yōu)良技術(shù)的不必要的障礙。
一個非常簡單的例子如下:
vector
在98年的C++中,這會導(dǎo)致語法錯誤,因?yàn)?>是一個單獨(dú)的詞匯記號,而不是封閉模板參數(shù)列表的兩個>。V正確的聲明可能是:
vector< vector
我把它看作是一種阻礙。我曾經(jīng)建議這個問題值得解決,但是當(dāng)前的規(guī)則和演化工作組用一些很好的理由兩次拒絕了我的建議。但是,這些理由都是語言技術(shù)方面的,而新手(包括其他語言的專家)沒有興趣。不接受第一種(也是十分)明顯的v聲明浪費(fèi)了用戶和教師的時間。我希望>>問題和其它相似的"阻礙"不要再出現(xiàn)在C++0x中。實(shí)際上,我與Francis Glassborow和其他人一起,正在試圖系統(tǒng)地消除最頻繁發(fā)生的這類"阻礙"。

