C++ is a mature language or simply an old one, depending on your point of view. Flexible to a fault, there hasn’t been a situation where people haven’t tried to apply it; everything from commerce to computer games, sometimes with disastrous results. A language which is so ugly - "Within C++, there is a much smaller and cleaner language struggling to get out." - and so unapologetically powerful is bound to have detractors who want to save programmers from themselves, but its quarter-century existence speaks volumes.
The first pillar of C++ is its attitude to memory. Modern languages hide such ‘details’ but in C++ memory becomes a malleable substance. Access to memory can be created, destroyed, reinterpreted and pooled at will, which leads in some cases to incredible efficiency, but frequently to catastrophe. Much of the current internet related security nightmare leads directly from the ab-use of this feature, of this particular language. Yet the modern world would be a slower, pricier, more cumbersome place without it. It may even be a hotter one too, as computer processors churn over the rigid and uninspired output of insipid but well meaning modern languages.
As if a grand act of insolence, C++ includes the ability to redefine itself – to add features to the language itself in a clumsy way known as ‘macros’. This can even be used to create an entirely different programming language within the language, much to the chagrin of people attempting to teach the subject, who find innocent students misusing the feature to implement a ‘better’ language the moment their back is turned. Ignoring the feature is not an option either, as the standard way of importing code relies on it.
Not withstanding the huge corpus of work in the form of arguments and recrimination, there is enough material available about the language to always have support when you need it (and you will need it). The time when the computer section of the local book shop was divided into two sections (C++, other things) has now passed, but so much of the industry holds a stake that the language isn’t going to disappear anytime soon.
| Pros | Power, Flexibility, Age |
|---|---|
| Cons | Power, Flexibility, Age |
| Lends itself to | The language of choice for modern computer games (the expensive kind). Can be used for literally anything, but no longer the first choice. |
| Has trouble with | Security, Network programming. |