C++ing out the Millenium
By STEVE GOSCHNICK
Occasionally I cop some flak for the odd speculative opinion on software directions. One such series of articles I wrote that got labelled as 'pure hype' by several in the computer language game, promoted a bright, dominant and long future for C++.
"If your aim is to carve out a long term market for your novel software concept, by all means knock up the prototype or the first version in a user-friendly language like Visual BASIC or a C++ code generator and toe-test the water. But if you strike a mother-lode, competition will pursue you heavily. If you didn't do version 1 in C++, make sure you do version 2 in it."
It was a tutorial series I did in 1990 for Your Computer magazine. I portrayed C++ then as the programming language "corner-stone of the 90's", a definite long term meal-ticket for the code-cutter. It was a time when you didn't see job ads for C++ programmers at all, but now most of them are - or at least claim to be C++ projects, so as to widen the net of talented applicants (Applicant Beware).
But a decade is a long time in computers and we are only into the fourth year of this one. Will C++ see out the millenium in glory? Or will it be rapidly eclipsed by new languages such as Visual BASIC or others yet to come?
Personally, I believe the earlier speculation is still a safe bet. The mastery of C++ will remain an excellent goal for the inventive code-cutter.
The reason why C++ is and will continue to dominate serious ventures, is not because it is elegant or easy to learn, it is definitely neither of those, but mainly because it is an object-oriented language which compiles to lean, fast machine code. For most other contenders, 'object-oriented' and 'resource efficiency' seem to be mutually exclusive measures.
Program execution speed is a much misunderstood marketing consideration in this industry. As a software publisher, once you have advanced a product beyond the prototype stage, or once you no longer own a monopoly in the market place, speed and efficiency suddenly become the do or die duo.
When thousands of corporate buyers and software testers around the world have little to discern the competing products, when the feature list of one mirrors that of the other, speed and efficiency rise to the top of the hit list.
If your aim is to carve out a long term market for your novel software concept, by all means knock up the prototype or the first version in a user-friendly language like Visual BASIC or a C++ code generator and toe-test the water. But if you strike a mother-lode, competition will pursue you heavily. If you didn't do version 1 in C++, make sure you do version 2 in it.
The other driving force for resource efficiency, is that people are always trying to do new things in software, on last years hardware.
Another significant reason why C++ will remain dominant in the art of forging new algorithms, is that the language has been evolving all the while. The language lawyers who have been guiding the growing set of C++ grammar constructs, know exactly where thier child is appreciated - for making mass market programs and reusable code.
It is no coincidence that the last two significant features added to the C++ language standard, that is 'Templates' and 'Exception Handling', enhance the reusability (by others) of your carefully crafted code.
The occupation so far contained by the single job description - Computer Programmer, is now fast splitting into two divergent streams. One diverse lot are the User-Programmers, people primarily employed or trained to do something else, but expected to dabble in programming for application-centric tasks, using increasingly user-friendly tools such as Visual BASIC to do so.
The other lot is the traditional skilled and trained programmer. The job specs for these people are beginning to converge on tools-centric tasks - the invention and development of high performance, high quality, reusable software components. This second lot are the ones who most need the peculiar set of qualities found in the C++ language.
The reusable tools made by the survivors in the professional group, will increasingly be just raw material for the User-Programmers to fashion into their custom applications.
If you have looked at languages like Visual BASIC or Visual C++, your first reaction is probably like mine: "That wasn't very visual!" User-Programmers are demanding much more user-friendliness in their tools.
So we are in for a fast and furious revolution with regard to languages, editors and other tools which speed up and simplify the application-centric programming tasks. Visual tools will eventually earn their name.
In Jerry Rhodes book: "Conceptual Toolmaking - Expert Systems of the Mind", a management book, but studded with concepts and terminology from computer programming, he says: "The ability to make his own tools is one of the hallmarks of a master craftsman: it distinguishes him...(from his piers)."
Those that inherit the title of Computer Programmer in the near future, after the User-Programmers have raided their past territory wielding visual tools, will be the master toolmakers and algorithm specialists. If this area of programming is not your forte or desire, and you don't want to move totally into Analysis and Design, all is not lost.
The visual tools which generate C++ code, will bridge the need for machine efficiency with the need for programmer productivity. The emergence of such tools (eg. 'Guidelines', overviewed in last weeks Computer Age) will mean that your time spent in C++ will not be wasted, as you will be able to inspect and enhance the generated code, all the way to the Sydney Olympics.
If you are looking for details on Templates or Exception Handling in C++, only recent books cover it. Two I recommend are: 'C++ Inside & Out' by Bruce Eckel (this is really the second edition of his early popular book 'Using C++'; or 'The C++ Primer, 2nd Edition' by Stanley Lippman. If you have the first edition of either, I would buy the second of the other. I got both books from the Technical Book shop in Swanson Street, Melbourne.
(CUTTING CODE column, Computer Age, The AGE, 10th October 1993)