Technical editor Ray Valdes recently spent a week in sunny New Jersey attending the "C++ at Work" conference sponsored by the Wang Institute of Boston University and the C++ Report. What follows is the short version of his report:
Now that some of the initial hype has subsided, where does C++ stand today? What are its prospects? Should you switch from whatever language you're using now, or wait and see?
These were some of the questions raised at the "C++ at Work" conference held in Secaucus, New Jersey. The principal advantage of the conference location was its proximity to Bell Labs, cradle of both the C language and its object-oriented descendant. Human languages have a strong cultural component, programming languages much less so. But the C++ language is complex and subtle enough that an immersion into the native culture of that language is necessary in order to use this tool effectively. And there were enough native speakers from Bell Labs at this C++ conference to make the visit worthwhile.
One realization, for me, was how large and complex the language is in comparison to C. For PC programmers moving to C from other languages, making the transition to C++ will be an equally large step. It is paradoxical that, on one hand, you must be both well grounded in the culture of C (pointers, pre- and postoperators, casts, and so on) to fully understand C++. On the other hand, you must be willing to throw out the "bad" procedural-language mind-set in favor of "good" object-oriented worldview.
The clarity of the object-oriented view is sullied by real-world considerations of performance and efficiency. These considerations burden the language with multiple alternative techniques (six different kinds of inheritance, for example) and a need to always keep the underlying machinery in mind. For example, it is hard to read or debug a program without knowing the entire context of a class's ancestors (such as any overloaded operators or overriden methods), as well as knowing how the compiler creates temporaries when it evaluates an expression (for example, which constructors will be invoked).
(As an aside for those who find the language cumbersome or wordy, consider a tour I recently took through a very large software system, composed of hundreds of thousands of lines of C and many megabytes of executable. In the course of making this system manageable, the developers had to concoct many of the object-oriented mechanisms offered by the C++ language. Because these were implemented as stylistic conventions and preprocessor macros, the resulting system is both harder to read and less reliable than a C++ equivalent would be.)
Despite these difficulties, it is clear that the language will be the mainstream development vehicle of the 90s. Not wishing to start any religious wars, I believe that Smalltalk is simpler, cleaner, more powerful, and can exist in a fast enough implementation. Yet C++ will prevail, for reasons that are as much cultural, historical, and business oriented as they are technological.
As evidence, some of the speakers at the conference were emigres from Lisp (Dick Gabriel, of Lucid Inc.) and Smalltalk (Ted Goldstein, formerly of ParcPlace Systems). They are presently immersed in bringing to C++ some of the nifty advanced tools currently enjoyed only by users of those languages.
As a speaker said at the conference, C++ is a language invented by expert programmers and computer scientists to make their work easier and more productive. In the hands of experts, it is a powerful tool that makes development of large software systems manageable. In less-skilled or inexperienced hands, it can prove quite dangerous.
Bjarne Stroustrop had some useful advice near the end of the week: "Ease yourself into the language. Don't feel you have to use all of the features, and don't try to use them all on the first day."
Symantec, makers of Think C, Think Pascal, and a passel of other development tools, is sponsoring a programming contest for high school and college students. The competition consists of programming questions and problems. Individual students or entire classes can enter. There's one version of the contest for high school, another for college.
Two grand prizes will be awarded -- one for high school and one for college -- and they're not bad. Each grand prize winner will get a $5,000 scholarship, a Macintosh IIci, and a lifetime subscription to Dr. Dobb's Journal. Four runners up (two from high school, two from college) will also receive prizes, including a year's subscription to DDJ.
Entries will be accepted through March 1991, with prizes awarded in June 1991; judging will be by Symantec engineers. To register or find out more information, teachers or students should call Symantec Contest Hotline, 617-275-4800.
Calling All Student Programmers