必也正名乎(侯捷)
常在 BBS 的程序设计相关版面上看到,许多人把 Visual C++ 和 C++ 混淆不清,另则是把 Visual C++ 和 MFC 混为一谈,实在有必要做个澄清。C++ 是语言,Visual C++ 是产品。『我们学校开了一门 Visual C++ 课程』这种说法就有点奇怪,实际意思是『我们学校开了一门 C++ 课程,以 Visual C++ 为软件开发环境』。『我会写 Visual C++ 程序』这种说法也很怪,因为Visual C++ 是一种 C/C++ 编译器,你可以在这套整合开发环境中使用 C 语言或 C++语言写出DOS 程序或 Windows 程序;如果是 Windows程序,还可以分为 Windows API programming 或MFC programming。所以「我会写 Visual C++ 程序」表达不出你真正的程度和意思。
Visual C++ 是一套 C/C++ 编译器产品,內含一套整合开发环境(Integrated Development Environment,IDE),也就是 AppWizard、ClassWizard、编译器、联结器、资源编辑器等工具的大集合。你知道,真正的 C++ 程序(而不是披着 C++ 外衣的C 程式)是以一个个类(classes)堆砌起来的,为了节省程序员的负担,几乎每一家编译器厂商都会提供一*成的类库(class libraries),让程序员站在这个基础开发应用软件。MFC 就是这样一套类库。如果以物件导向的严格眼光來看,MFC 是比类库更高一级的所谓application framework。PC 上另两套与 MFC 同等地位的产品是 Borland 的 OWL 和IBM 的Open Class Library,前者搭配的开发环境是 Borland C++,后者搭配的是VisualAge C++。其他的 C++编译器大厂如atcom 和 Symantec 和 Metaware,并没有开发自己的类库,他们向微软取得 MFC 的使用授权,提供 MFC 的原始码、含入档、相容的编译器和联结器。噢是的,他们要求授权的对象是MFC,而不是OWL,这就多少说明了 MFC 和 OWL 的市场占有率。