In-Depth

C++ getting RAD as fast as it can

While the industry's rush to Java might seem to have placed C++ in the shadows, C++ is still one of the most potent tools in a programmer's arsenal. For most developers, C++ is in the spotlight, and it is Java that is lurking on the dark edges.

In recent years, C++ tool vendors have been busily adding needed features to make C++ a faster development environment. While it provides a powerful programming environment and advances in compilers have been significant, C++ has long been considered challenging to work with. This has translated into long and difficult projects. Many of Java's features were seemingly specified to meet perceived problems with C++.

Until recently, C++ was not considered a rapid application development (RAD) environment. But turning C++ into a faster (if not "rapid") development environment, for many, would make it a more favorable tool alternative. Usually, the RAD honors have gone to non-C++ products like Microsoft's Visual Basic, Borland's Delphi and Sybase's PowerBuilder.

"C++ has had a lack of a really dynamic development environment," said Larry Perlstein, principal analyst with market research firm Dataquest, San Jose, Calif.

Improvement comes with time, however, and in recent years C++ vendors have enhanced their products to make C++ more RAD-like. These enhancements include easier-to-use visual interfaces, more extensive support of class and component libraries, more extensive templates and forms builders, and tighter integration within the larger development environment.

According to Perlstein, highly visual construction, incremental compilers, integrated debugging facilities and more productive editors make some of the newer C++ development environments more RAD-like. "A good RAD package provides all the things a developer needs," he noted.

These new products have features that help with component building, component integration and component testing. "Just about all the 'latest, greatest' products support either ActiveX, JavaBeans or their own proprietary component model," Perlstein said, adding that he believes the proprietary component models will fade away.

Visual construction helps with component integration. "Without visual construction," he said, "you'd have to hand-code the connections between components. Visual construction lets me look at these things visually and hook them up." And to help with component testing, "you have to have debuggers that understand the construction of components," he explained.

Depth and breadth

Borland International's recent release of Borland C++Builder 3.0 is an example of the improvements being made by vendors of C++ development environments. The company went from Version 1.0 to Version 3.0, skipping 2.0 "because of the depth and breadth of the feature set therein," said Diane Rogers, group product marketing manager at the Scotts Valley, Calif.-based company.

C++Builder 3.0 includes an advanced project manager; integrated, scalable database access; seamless Internet development; One-Step ActiveX/ATL control creation; Business and Code Insight technologies for decision support and automated programming assistance; and support for Microsoft Foundation Classes (MFC) 4.2, Object Windows Library (OWL), Visual Component Library and Standard Template Library 2.0.

The development environment also boasts Adaptive Compiler Technology, which, when combined with the Intelligent Incremental Linker, allows developers to get applications to production faster. In addition, C++Builder 3.0 includes new migration tools for porting existing C++, MFC, OWL, Visual C++, Borland C++ and legacy applications to its RAD environment.

John Milam, senior programmer analyst for Nations Credit, a subsidiary of Nations Bank in Fort Worth, Texas, was upgrading from Version 1.0 of Borland's C++Builder to Version 3.0 at press time. He chose C++Builder because he "had used Visual C++ before but found it took so long to do too many things." Milam added that while he wanted more of a RAD tool, he wanted to stick with C++.

Milam had used Borland's Delphi product (as well as Microsoft's Visual C++), but found C++Builder to be a faster application tool, he said. The major issues for him in choosing a product were ease of database connectivity, a powerful tool and ease of programmer use.

Although C++Builder does not offer the background compilation found in Visual C++, that does not pose a problem for Milam, who is developing in Windows NT. "I'm usually only working on one project at a time," he explained. According to Michael Swindell, Borland's C++Builder product manager, Borland has essentially eliminated the need for background compiling. "We've added incremental linking technologies that reduce the need for background compiling," he said.

Since C++Builder 3.0's debut, developers have not heard much about Borland's other C++ products: Borland C++ and Turbo C++. According to the company's Rogers, all of the products are still available, but the company is focusing on C++Builder. The other two products allow DOS development and 16-bit development and are incorporated into C++Builder, she said.

RAD or not so RAD?

Microsoft clearly does not position its flagship C++ product -- Visual C++ -- as a rapid application development environment. This can be attributed, at least in part, to the software giant's overall marketing strategy. After all, it is the home of Visual Basic, an easy-to-use RAD environment that Framingham, Mass.-based research firm International Data Corp. ranks as the most-used language of professional programmers now and in years to come. Although Visual C++ now offers native Component Object Model support, visual COM editing, language-independent COM browsing, MFC templates and the latest C++ compiler technology, the company is not positioning it as a RAD tool.

"Visual C++ has to allow for the highest level of control," explained Product Manager Jeff Ressler. "That requires that developers be able to get to that low level, which is not something that's done in a RAD environment." Microsoft feels its users who need a RAD tool can simply use Visual Basic. "To make Visual C++ a RAD tool would replicate a lot of the functionality that is already in Visual Basic," added Ressler.

In the Microsoft scheme, different languages can be used within the same project as needed. This is borne out by research. For example, attendees at the recent Software Development '98 Conference in San Francisco completed an interactive survey at the behest of IDC, Market Perspectives, and show sponsor Miller Freeman Inc. Among the results: 54% of the attendees said that they are working with both C++ and Java. "People are using whatever makes sense," said Eric Faurot, group director, Miller Freeman.

Regardless of the product positioning, David Schultz, a systems engineer for Kmart Corp., Troy, Mich., does consider Visual C++ a RAD tool in some respects. He is using the product as the client interface to Kmart's core distribution system. "The wizards and visual tools make it easy when you first start to use the product," he said.

In fact, when choosing Visual C++, Schultz also considered Visual Basic and PowerBuilder, both highly acclaimed RAD tools. He opted for Visual C++ based on the product's performance, learning curve, visual aspects, reuse and maintainability, he said. Although he does feel he sacrificed a little due to the product's learning curve, Schultz believes the advantages far outweigh the disadvantages. "The learning curve is slightly longer than Visual Basic," he concedes. However, he added, learning Visual C++ makes it easy to convert to any other RAD language, such as Visual Basic, very quickly.

Another maker of "RADdish" C++ tools is Sybase Inc., Emeryville, Calif., which has enhanced its Power++ product for faster development. Formerly called Optima++, the product combines RAD C++ with component-based, server-side development and NetImpact Dynamo. The software allows developers to create and reuse both Power++ and ActiveX Server components.

Jon Strande, a former programmer for Technical Service Associates, Mechanicsburg, Pa., used Power++ to write an application that puts federal acquisition regulations online. Although his company also had Visual C++ and Borland C++Builder, Strande prefers Power++. "The Borland product was kind of a similar tool in the RAD area," he said, "but Power++ has a classes view. I love the way they allow you to manage a project. You can visually see what classes are in your project."

One of the main issues for Strande was the ability to have multiple Windows open, something he found lacking in Visual C++. "With Visual C++, you pretty much have one giant window," he explained. "But with Power++, you're not forced to look at something you don't want to look at all the time. It's totally customizable to how you want to use it."

RAD-like traits can help extend the usefulness of C++. It has already become a trusted language, that, according IDC research estimates, has more than 1.25 million professional programmers as adherents. Still, IDC's Java Research Director Evan Quinn expects that the Java programmer count will surpass C++ in a few years.

ROD on tap?

Some may question whether this talk of RAD-like C++ is overblown. "We don't use the term 'RAD,'" said F. Andy Seidl, vice president of product development and founder of Genitor Corp., Ann Arbor, Mich. "It conjures up the idea of full-project tools, such as Delphi or PowerBuilder, that support an application point of view.

"We do think, however," added Seidl, "that C++ can be visually developed."

For its part, Genitor offers what Seidl describes as a rapid object development, or "ROD," environment for C/C++. Genitor provides a graphical editing environment and stores objects in a shared repository. The goal is to enable programmers to quickly locate work performed by others. Thus, maintenance, as well as development, is covered.

Genitor is designed to be used with other C++ tools, especially the integrated development environments with their advanced debuggers and compilers. In late March Genitor announced Genitor V3.1, which provides an add-in for Visual C++ Developer Studio, full support for C++ namespaces, as well as improved compatibility with Microsoft's AppWizard and Class Wizard generated code.

There is a gap today, said Seidl, between designers and developers. "Programmers today type files. They don't have things like PowerBuilder or Delphi on one hand, or [object modeling methods like] OMT or UML on the other," he said.

The emphasis on visual development can payoff on the GUI side, but not all "components" are so easily visualized. "The newer environments provide some nice graphical component-based tools," said Seidl. "Where we pick up is where there is no ready graphical way to represent something."

Other voices, other tools

While often the focus when reviewing the evolutionary steps of C++, visually enhanced C++ environments from major software vendors are only part of the story. Also adding to C++'s utility are new tools and components from players like Genitor, CenterLine Software, Rogue Wave Software Inc., KL Group, Toronto, and others.

CenterLine Software, Cambridge, Mass., recently rolled out a product that combines C++ advice with compile-through-runtime C++ and C error detection. AcquaProva identifies more errors automatically, thus speeding software development. It features compile-time, link-time and runtime error detection based on source code analysis, user-defined advisories, and integrates with existing development tools.

Trevor Wieman, a software engineer for Ford Microelectronics Inc., Colorado Springs, Colo. -- a division of Ford Motor Co. responsible for the design and integrated circuits for Ford automobiles -- is using the product for static and dynamic analysis. AcquaProva, Wieman said, checks the guidelines described in two books by Scott Meyers: Effective C++: 50 Specific Ways to Improve Your Programs and Designs and More Effective C++: 35 New Ways to Improve Your Programs and Designs (Addison-Wesley Professional Computing Series, 1997 and 1995). Wieman also uses the product for dynamic runtime testing. Wieman was impressed with the functionality AcquaProva provided. "This was a way for us to actually provide an executable means to check that we were following the rules," he explained. The runtime checking, he continued, is "something that's sitting out there looking for potential problems while the code is running. It exposes problems and tells you right where the source of the problem is, and typically, how to go about fixing it."

Rogue Wave, which recently relocated its headquarters to Boulder, Colo., considers two of its C++ products RAD tools: Object Factory and the zApp Developer's Suite. They are drag-and-drop visual applications that do a lot of code generation, according to Mike Foreman, vice president of development. "They do a lot of the grunt work of building an application," he said.

Object Factory is a C++ visual development tool for cross-platform, database-independent applications. It offers developer control over source-code generation. The product features an open development environment where developers can use the compiler, debugger or editor of their choice. It can also be used without the GUI designer to map database tables, joins and result sets to C++ objects. The zApp Developer's Suite is an object-oriented set of development tools for designing and creating cross-platform GUIs.

The future of C++

"There's a lot less investment being made in C++ right now because of Java," noted Dataquest's Perlstein. "Borland and Microsoft are really sustaining and maybe increasing C++.

"There are technologies coming out that are going to make C++ more Java-like," he predicted. However, the big question, according to Perlstein, is: "Does C++ just fade away, which will take a long time, or do C++ vendors infuse it with Java qualities so that everybody's happy?" In any case, advances in C++ continue to bear watching.