C++之父Bjarne談C++的未來(lái)發(fā)展

字號(hào):

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