I agree. It certainly helps when you first write the code. But it's still difficult to read and modify the code. And I'd prefer to see the effort involved in coding to these patterns and in enforcing them used to other purposes.How many of these leave something out? how much time is spent
deciphering the code when something goes wrong, or is even suspected?
Probably fewer cases and less time than you suspect, respectively.
Just as C++ gives you tools, C does too, but far more important than
language tools is the discipline used when writing code: discipline to
think through the code, to structure it rationally, and to reuse the
rational structures that others have devised in the past. C++ gives
you well-tested helper classes to manage object locking. Linux gives
you its own well-tested examples of known and tried design patterns.