C++ Builder是由Borland公司推出的一款集成開發環境,C++Builder是一個專業的C++開發環境,他能夠提供的功能為:快速、高效、靈活的編譯器優化,希望大家能夠學到自己想要的東西。
這個在市場上為Borland挽回了顏面的產品不但在界面風格上與Borland的支柱產品Delphi別無二致,甚至還在產品內部直接照搬了Delphi的VCLVisual Component Library)庫。結果,使用C++Builder開發的代碼天生就受到了Delphi風格的傳染,長相酷似Pascal語言了以下代碼取自C++Builder 6.0的示例代碼):
- class TFormClrDlg : public TForm
- {
- published: // IDE-managed Components
- TColorDialog *ColorDialog;
- TButton *Button;
- TPanel *Panel1;
- void fastcall ButtonClick(TObject *Sender);
- private: // User declarations
- public: // User declarations
- virtual fastcall TFormClrDlg(TComponent* Owner);
- };
說實話,盡管C++Builder在市場上的表現不錯,但我還是不喜歡Borland將C++語言與Delphi中的Object Pascal語言刻意混淆的做法。也許在Borland這種做法的背後有提高產品通用性、縮短產品開發周期等體面的理由,但使用C++Builder開發出的代碼在外表上已經離標准C++風格越來越遠了。
值得注意的是,Borland於2003年推出了其下一代C++開發工具 ——C++BuilderX。讓人哭笑不得的是,這一次Borland居然將C++開發環境構築在了用Java語言實現的PrimeTime平台上,這多少將C++語言推向了一種極為尴尬的處境。
不過,C++BuilderX也為我們帶來了一些好消息:在後續的版本中,C++BuilderX將集成vxWindows框架庫[5],在這種框架下開發的C++代碼顯然要比使用VCL的代碼具備更多的標准C++風格。
Microsoft將C++引入.NET環境的舉動其實比Borland還要激進。單從風格上說,使用Visual C++ .NET開發的代碼可能兼具MFC、ATL、標准C++、.NET托管代碼等多種不同的風格。其中,對C++語言本身影響最大的,當然要數.NET托管代碼為C++注入的若干新鮮血液了:
- #using <mscorlib.dll>
- 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++Builder引入的垃圾收集、Attribute屬性等新特性和新技術,看到.NET托管代碼新奇得近乎離經叛道的語言風格。
我不知道是應該為Microsoft在發展通用語言平台上的努力而歡呼雀躍,還是應該為C++在C#語言陰影下日漸屈居.NET大戲中的配角而灰心喪氣。也許,語言風格和程序員的感受在Microsoft眼中,都是些不值一提的小事,它們哪能和.NET的宏偉戰略及Microsoft的強大帝國相提並論呢?