必也正名乎(侯捷)
常在 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 的市場占有率。