C++ Builder是由Borland公司推出的一款集成开发环境,C++Builder是一个专业的C++开发环境,他能够提供的功能为:快速、高效、灵活的编译器优化,希望大家能够学到自己想要的东西。
这个在市场上为Borland挽回了颜面的产品不但在界面风格上与Borland的支柱产品Delphi别无二致,甚至还在产品内部直接照搬了Delphi的VCL(Visual 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++语言推向了一种极为尴尬的处境。#t#
不过,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的强大帝国相提并论呢?