我們不能為了降低C++在教與學方面的難度,而去移除某些語言特性。保持C++穩定性與兼容性是我們主要的考慮。因此,不管是以什么方式來移除其中任何重要的特性都是行不通的(而移除其中不重要的特性對于解決問題又沒有實質性的幫助)。那么留給我們的選擇恐怕只有“將規則一般化”和“添加更易于使用的特性”。兩者都是我們的目標,但是后者更容易一些。例如,更好的程序庫(容器與算法)可以幫助用戶避免一些底層設施(例如數組與指針)帶來的問題。那些能夠“簡化程序庫的定義和應用”的語言設施(例如“concepts”與“通用初始化器列表”,下面將會談到它們)也將有助于改善C++0x的易用性。
一些人可能對此持有反對意見,“不要為了新手而將C++降格,適合新手的語言已經有很多了!”,或者“最好的辦法還是將新手變成專家!”這些人的觀點并非毫無道理,但是現實是新手總比專家要多。而且許多C++用戶完全不必、也沒有意愿成為C++專家——他們是各自領域的專家(比如物理學家、圖形學專家、硬件工程師),只不過他們需要使用C++。在我個人來看,C++已經太過“專家友好”了,我們完全可以在花費很少的情況下為“新手們”提供更好的支持。事實上,這種支持不會損及任何C++代碼的性能(零成本原則依舊適用)、靈活性(我們不打算禁止任何東西)、與簡潔度。相反,我們的目標是簡化這些理念的表達。最后,值得指出的是,C++是如此之大,而且應用如此廣泛,各種設計技巧可謂汗牛充棟,以至于我們很多時候也都是“新手”。
C++0x的改進應該以這樣的方式進行:結果所得語言應該更易于學和用。以下是委員會考慮的一些規則: