C++ compilers for the PC have evolved from early CFRONT ports to integrated, Windows-hosted, visual development environments. Three members of this new generation are Microsoft's Visual C++, Borland's C++ 4.0, and Symantec C++ Professional. Close behind is Watcom, traditionally the strongest compiler, with plans to add new-generation technology to its product this year.
The new generation emphasizes visual GUI programming, with a trend away from DOS text-mode development. All three support development for Windows 3.1, NT, and Win32s. Visual C++ and Symantec support 32- and 16-bit DOS development. Borland supports OS/2 and 16-bit DOS. All new-generation compilers are available on CD-ROM.
Visual programmers build C++ Windows applications by composing visual user-interface components interactively on the screen and by coding C++ functions to add behavior to menus and dialog controls. This approach loosely models the one pioneered by Visual Basic. The difference is that while VB builds an interpreted program with interactive development, the C++ visual tools generate C++ code and launch the compiler. The essence of visual Windows programming in C++ is that the composition tools, compiler, editor, debugger, and API-encapsulating class library are integrated into one development environment.
Microsoft Visual C++ has the Visual Workbench and the Microsoft Foundation Classes. The App Studio is the visual resource-composition tool. AppWizard and ClassWizard generate code that defines the application and adds programmer-defined behavior to the user-interface classes. The Microsoft compiler is mature, and the Foundation Classes offer a compact encapsulation of the Windows API, but Microsoft supports neither templates nor exception handling--two C++ features that have come of age and that a contemporary compiler should include.
Borland C++ 4.0 manages Windows application projects in the IDE. You define the application with AppExpert, and add menus and dialog boxes with Resource Workshop. You add new classes and modify the behavior of existing classes with ClassExpert, using its hooks into the generated source code to add member functions. Borland encapsulates the Windows API in the Object Windows Library. Borland's tools are not as tightly integrated as those of Microsoft and Symantec. There is a sense of working with separate components of a compiler system rather than in a seamlessly integrated environment.
Borland no longer includes TurboVision classes, the DOS IDE, and the Turbo Debugger TD386 option, reflecting the trend away from DOS development. Borland's compiler supports templates and exception handling, and is the only one of the new-generation compilers to fully implement the AT&T C++ 3.0 specification. (Watcom's C++ compiler, while not yet a member of the new generation, also supports all C++ 3.0 features.)
Symantec C++ Professional bundles Visual Programmer, a composition tool that is more like the Visual Basic programming model than the others, although it still involves C++ code generation and a launch of the compiler. Visual Programmer uses the MFC library, licensed by Symantec from Microsoft. The C++ compiler supports templates but not exception handling. Symantec is having early release problems. The system was rushed to market before it was ready. The online tech-support forum reveals a host of bugs which seriously compromise the compiler's usability. You should probably wait for a more stable version before committing to this product. In the meantime, you can get the same, superior visual programming environment by using WindowsMAKER (Blue Sky Software, La Jolla, CA) with a different compiler. Visual Programmer is a stripped-down version of WindowsMAKER, a third-party visual composition tool that you can configure to work with MFC, OWL, and ANSI C.
None of the new-generation C++ compilers hide the details of the Windows programming platform as well as Visual Basic. Besides knowing C++, programmers need a good working knowledge of the visual tools, the underlying API class library, and the API itself. The new generation neither raises nor lowers the pitch of the learning ramp, but there are more bumps along the way.