在C++標准化中,有關缺省變量值的限制非常模糊。基於此,很多編譯器允許開發人員將缺省變量值包含在函數聲明,指向函數的指針和引用,成員函數的指針,以及typedef聲明中。
文章列舉的大量相關資源就是最好的證明,而業界的大量用C++寫成的產品代碼以及大量的C++職業工程師則是最直接的證明。同時,我們可以看到各個高校的計算機專業都開設有C++標准化這門課程,網絡上對於C++的學習討論也從來都沒有停過。但是,在Java和.NET兩大企業開發平台的圍攻下,給人的感覺是C++越來越“不行”了。
另外一個問題是C++標准化的時間太長,喪失了很多的壯大機會,耗費了很多精力在廠商的之間的斗爭上,而C++的標准庫離一個完善的程序開發框架還缺少太多太多的內容,各個第三方的類庫和框架又在一致性和完整性上沒法和隨平台提供的框架相提並論。難道C++真的要退出歷史舞台了?
從C++目前的活躍程度,以及應用現狀來說是完全能夠肯定C++仍然是軟件工業的基礎,也不會退出歷史舞台的。另外從Boost,Loki這些庫中我們也能夠看到C++的發展非常活躍,對於新技術新思維非常激進,C++仍然廣泛受到關注。
從ACE在高性能通信領域的應用,以及MTL這樣的庫在數值計算領域的出色表現,我們可以看到C++在高性能應用場合下的不可替代的作用,而嵌入式系統這樣的內存受限開發平台,比如Symbian OS上,C++已經發揮著並且將發揮更大的作用。
可以預見的是以後的軟件無論上層的應用怎麼變,它的底層核心都會是由C++標准化這樣的系統級軟件編寫的,比如Java虛擬機,.NET Framwork。因為只有這樣的系統級軟件才能完全徹底的發揮機器的功能。 需要看到的是兩個趨勢,一個趨勢是C++變得更加復雜,更加學院派,通過模板等有潛力的語法因素構造越來越精巧的庫成為了現代C++的熱點。
雖然在利用庫實現新的編程范式,乃至設計模式等方面很有開創意義,也確實產生了一些能夠便捷開發的工具,但是更多的是把C++變得更加強大,更加復雜,也更加難懂,似乎也更加學院派,不得不說它正在向邊緣化道路發展。
另一個趨勢是C++在主流的企業應用開發中已經逐漸退出了,ERP這樣的企業軟件開發中基本上不會考慮C++,除非需要考慮性能或者和遺留代碼的集成這些因素。C++退守到系統級別語言,成為軟件工業的基礎是大勢所趨。
然而反思一下,真的是退守麼?自從STL出現,無數的人風起雲湧的開始支持C++,他們狂呼“我看到深夜消失了,目標軟件工程的出現。我看到了可維護的代碼。”是的,STL在可維護性下做得如此出色。
但是又怎樣呢?STL為C++鋪平了現代軟件工程的道路,而在上層應用程序軟件開發領域這塊場地早不單獨屬於C++,很多程序設計語言都做得很出色,瘋狂的支持者會毫不猶豫地說我們應當支持C++標准化,因為它是世界上最棒的語言。
而坦率地說,你的腰桿真的那麼硬麼?也許只是在逃避一些事實。C++標准化是優秀的,這不可否認,STL的出現讓C++一度走上了最輝煌的時刻。然而現在看來……我的一位恩師曾言。
真正能夠將STL應用得淋漓盡致的人很保守地說國內也不超過200人,或許不加入STL能夠使C++向著它應當發展的方向發展的更好,而現在看來,C++也應當回首到真正屬於他的那一片聖地上……