‘You cannot reduce the complexity of your problem by increasing the complexity of your language.‘Niklaus Wirth
When it is really in an organization’s best interest to convert from an older programming language like C to more modern language like C++?
I have used C++ for a long time. I started using it in 1992 when working at Applied Microsystems Corporation. We were working on embedded code for an in-circuit emulator to support the Intel 80960MC and 80960MX series parts. I was involved in writing a Remote Procedure Call (RPC) mechanism and the C++ streaming operators were attractive for marshalling and unmarshalling RPC argument lists.
C++ was quite new at the time. It used cfront (1) to convert C++ into C code which was then compiled by the regular system C compiler.
Since that time the C++ language has continued to evolve. With each revision it has become more complex. Currently, the language standard runs to more than 1,000 pages of dense text.
The concern I have is this: Software groups exist to serve the needs of the organization. The needs of the organization are typically for high-quality code that can be delivered quickly to enable new capabilities. In most organizations, no one outside of the software group cares about the programming language used to implement the software.
A question I have is this: If a software group switches to a new programming language in which most of the group’s members are novices, how much of a slowdown will the group experience as it learns the new tool?
Call me a curmudgeon if you want, but I would be very cautious about switching a typical software development group over to C++ unless there was plenty of lead time for the group to learn the language well, to determine the patterns they will use in writing code, and to do enough training and development to be able to hit development schedules reliably.
In my experience the amount of time required to make such a switch is always underestimated.
I have also seen situations where individuals with virtually no software engineering experience are thrown into the C++ deep-end. This is a recipe for disaster.