All experience has taught us that solving a complex problem uncovers hidden assumptions and ever more knowledge, trade-offs that we didn’t anticipate but which can make the difference between meeting a deadline and going into research mode for a year, etc.

If C++ were used only to solve known problems with known solutions, it would be a perfectly OK language. Smart people would design classes “once and for all” and sell them like nuts and bolts, companies could pre-fabricate parts that fit together because of industry consensus on standards and specifications, and this age-old “dream” of some software engineers.

I believe this is a completely insane view of programming, but C++ cannot have any other – it is designed to be an “ex post facto language”