I got my start programming PCs using Borlands Turbo Pascal--"back in the days," as the saying goes. But my first full-time programming job proved to be a harbinger of things to come: before I was hired, the decision had already been made to use Microsofts Pascal compiler. Since then, although Ive bought other Borland products (including the first version of Turbo C++), for the most part I have used Microsofts compilers on the job--the decision to go with Microsoft usually having been made before my arrival. Ironically, I even used Microsofts Visual C++ product--while working at Borland! The product I worked on, InterBase, was not originally developed at Borland, and the build process was never re-engineered after Borland acquired the product. As a business decision, it makes sense, considering the complexity of the build process, and the work that had been put into streamlining that process (if it aint broke...). For a fan of Borlands products, however, it seems a little unfortunate. That's really the point of this introduction: by way of a disclaimer, I have to admit that I do consider myself something of a fan of Borland and its products. On the other hand, having worked in software Q&A., and perhaps because Im a bit of a curmudgeon (smile when you call me that), I havent shied away from pointing out some things I see as flaws. As a longtime user of Microsoft Visual C++ (most recently, the version 6.0 Enterprise edition), Ive also used my experience with that product to draw some comparisons.
For this review, I installed the product onto a PC running Windows XP Home Edition. The installation process seemed fairly standard and went smoothly. The initial screen offers several options: the C++Builder product itself, InterBase 6.5 Desktop, Remote Debugger Server, InstallShield Express, an option to join Borland's community web site for developers and an option to browse the installation CD. Borland still follows the practice of including "installation notes" presented automatically by the installation program, so they can be read before completing the installation. Microsoft seems to have done away with that practice, leaving users to locate and open any "readme" files on their own. Since those files may contain information about steps a user would need to take before installation--to keep the installation from overwriting customized settings, for example--I find the Borland approach preferable. On the other hand, most of the information really didnt apply to me, and that will probably be the case for most users installing the product for the first time (i.e., not as an upgrade to an earlier version).
I chose to install the product with the InterBase client option. I found the InterBase license information, presented during installation, somewhat confusing. Realistically, though, youll probably want to contact Borland about licensing terms before distributing an application that relies on InterBase.
The first time I launched C++Builder after installation, it presented a registration screen offering online registration, as well as a "register later" option, which I chose. As soon as I realized that the dialog which informed me "you have chosen to exit..." was referring only to the automatic registration process, I chose "Exit" and the IDE proceeded to load. The program automatically opens a new project when you launch it. I couldnt find any way to change that behavior, unfortunately; I much prefer to have the program automatically load the last project I was working on, which Visual C++ can be configured to do. In place of the standard "MRU" list at the bottom of the File menu, C++Builder Professional uses a "reopen" menu option to present the list of projects and files recently worked on.
Maybe good help isn't so hard to find after all
Perhaps not surprisingly, one of the first things I checked out was the Help menu. One of the features I noticed there was a "Customize..." option, which offers the ability to customize C++Builder's help system, but a more complete description of that feature is beyond the scope of this review. Navigating the help system, I easily found a nice tutorial that walks you through the process of developing a simple text editor. As it turns out, C++Builder's IDE has notable similarities to Microsofts Visual Basic development environment. In place of Visual Basics toolbox, C++Builder offers a Component Palette, arranged like a tabbed dialog of toolbars. It includes a large selection of reusable software components, organized into categories that can be selected by choosing the appropriate tab. The selection and arrangement of components and categories on the Palette can be customized using a Component | Customize Palette... menu option.
Tool tips are provided for each component. You can select a component by clicking its icon; if you then click on the form, the selected component will be placed where you click; if you press the F1 key, a help window that describes the selected component will be displayed. Right-clicking a component you have placed on the form opens an editor specific to that component, allowing you to modify its properties. The IDE also provides an Object TreeView window, providing a tree view of the components in the application, and an Object Inspector window through which you can select components and edit their properties. For someone familiar with the Microsoft Foundation Classes provided with Visual C++, there will be a learning curve to get up to speed with C++Builder's application frameworks, called CLX and VCL (more about them below). Although I wouldnt say Im up to speed yet, from what Ive seen so far, the help system seems like its up to the task of getting me there.
Not far into the text editor tutorial, I encountered one of the reasons people might want to consider choosing C++Builder over Microsoft Visual C++, namely to develop applications that can be ported to Linux. From the BCB6 text editor tutorial:
"The Action List editor is part of the Borland Component Library for Cross Platform (CLX) and should be used instead of the Action Manager editor if migrating to a different platform (such as Linux) is a future possibility."
"The Action Manager editor provides some special functionality, but is only available as part of the Visual Component Library (VCL), which is specific to the Windows platform."
(The Action List and Action Manager are software components C++Builder provides to facilitate the use of menus and toolbars in your application.) The help files delivered with C++Builder contain quite a bit of information about developing applications that can be ported to Linux. Here's another sample of some help you are not likely to get from Microsoft:
"An application that heavily uses Windows-specific technologies such as ADO will be more difficult to port than one that uses C++Builder database technology."
Unfortunately, a comparison of these two database technologies falls outside the scope of this review.
Users of Visual C++ will be familiar with the various "wizards" available to assist you when you create a new project. Borland seems to have provided an even larger selection of templates, accessible through the File | New | Other... menu selection. I was surprised to notice that the main form for the text editor application I developed (using the tutorial) was automatically made available as a template. According to the help file, "You can create an inherited form from any existing project form."
C++Builder comes with a conversion wizard to facilitate converting Visual C++ projects to C++Builder projects. I used it to convert the OpenGL cube sample application that ships with MSVC, but, unfortunately, the resulting project would not compile, and the error message did not prove helpful in locating the reason. On the positive side, the conversion was nondestructive; the application still compiled using Visual C++.
Visual C++ has a couple of nice features I miss in C++Builder. The first is the ability to get context-sensitive help by pressing F1 within the source code editor. C++Builder offers context-sensitive F1 help from other windows, including the Object TreeView and the Component Palette, so its not hard to get the information you need, but I miss having that feature in the code editor. The other thing I miss is the extensive collection of sample applications Microsoft provides with its product. Although many of those sample applications are getting rather "long in the tooth," I like being able to read about and access all of them from within the Visual C++ help system. In fairness, its possible that if I took more time to explore it, I would find that the reusable code available through the "File | New | Other..." dialog, mentioned above, fills the role of Microsofts sample application library more than adequately.
C++Builder also seems to have a few rough edges (I can provide a complete list of those Ive found if anyones interested--like I said, Ive worked in software Q&A), but so far I havent encountered anything I would describe as a serious defect, only some minor annoyances.
And in conclusion...
For anyone interested in using C++ to develop Windows applications, I think C++Builder is well worth a look. Borlands component libraries appear to me to be more flexible and easier to work with than Microsoft's MFC framework. For anyone interested in porting Windows applications to Linux, C++Builder looks like an excellent option. I think that just might be my next project.
|Andrew MacGinitie is an experienced software engineer, with expertise in developing database applications in networked PC environments using C++, Visual Basic and SQL Server. He can be contacted at firstname.lastname@example.org.|