Visual C++.NET真的要被局限性限制?
微軟官方將對C++語言引入.NET環(huán)境的舉動,先從風(fēng)格上說,使用Visual C++ .NET開發(fā)的代碼可能兼具M(jìn)FC、ATL、標(biāo)準(zhǔn)C++、.NET托管代碼等多種不同的風(fēng)格,這大大的方便了進(jìn)行Visual C++ .NET開發(fā)的技術(shù)人員。
其中,對C++語言本身影響***的,當(dāng)然要數(shù)Visual C++ .NET托管代碼為C++注入的若干新鮮血液了:
- #using
- using namespace System;
- using namespace System::Reflection;
- using namespace System::Security::Permissions;
- public __value enum SomeStuff {
- e1 = 1,
- e17 = 17
- };
- [attribute(AttributeTargets::Class, AllowMultiple=true)]
- public __gc class ABC {
- public:
- ABC(int __gc[]) {}
- ABC() {}
- ABC(int) {}
- ABC(int, float) {}
- ABC(SomeStuff) {}
- ABC(String*) {}
- int rgnField __gc [];
- double rgdField __gc [];
- double dField;
- };
上述代碼來自MSDN中的示例程序。看到Microsoft大刀闊斧地為C++語言引入的垃圾收集、Attribute屬性等新特性和新技術(shù),看到.NET托管代碼新奇得近乎離經(jīng)叛道的語言風(fēng)格。
我不知道是應(yīng)該為Microsoft在發(fā)展通用語言平臺上的努力而歡呼雀躍,還是應(yīng)該為C++在C#語言陰影下日漸屈居.NET大戲中的配角而灰心喪氣。也許,語言風(fēng)格和程序員的感受在Microsoft眼中,都是些不值一提的小事,它們哪能和.NET的宏偉戰(zhàn)略及Microsoft的強(qiáng)大帝國相提并論呢?
語言風(fēng)格的變遷從一個側(cè)面反映了技術(shù)思想和產(chǎn)業(yè)需求的嬗變規(guī)律。從1979年Stroustrup完成***個Cpre預(yù)處理程序算起,C++語言來到這個世界上已經(jīng)快滿25個年頭了。這是一種在實踐中誕生、成長和發(fā)展起來的語言。也許,Stroustrup從一開始就壓根兒也沒想把它設(shè)計成像Smalltalk那樣純粹的面向?qū)ο笳Z言。
開放性、高效率、兼容性和擴(kuò)展性的需求將C++語言塑造成了一種典型的多模式(Multiparadigm)語言。無論是C++早期對Simula語言的繼承。還是后來對Smalltalk、Ada、Clu等語言的借鑒。
無論是ANSI/ISO標(biāo)準(zhǔn)風(fēng)格的迅速普及,還是Visual C++ .NET在技術(shù)創(chuàng)新上的不懈努力,所有這些歷史變遷都說明,C++在風(fēng)格上的多樣性主要源自C++語言本身“海納百川”的胸襟和氣概。
【編輯推薦】