Breaking Up The Monolith
Advanced C++ Design without Compromise
Breaking Up The Monolith describes techniques for writing and
working with C/C++ libraries effectively, efficiently and with minimal
coupling.
It illustrates how to write high-quality C++ software that does not
need to sacrifice on important software quality characteristics such
as robustness, performance, expressiveness, flexibility, modularity,
portability, and discoverability & transparency.
The principles of C++ software engineering espoused in this book are:
- Software quality is important, and compromise should be, and can be, minimized. Compromise on robustness is not allowed
- C++ is hard, so only use it when you must
- The only significant reason to use C++ is performance
- Choose C++ over C for expressiveness and resource management
- To write C++ without regard for its performance is a manifest waste of time
- Designing for speed does not mean that you must lose other aspects of software quality, nor is it a license to do so
- Many C++ libraries, including parts of the C++ standard library, are not fit for purpose
- There's no one true way
The concepts, patterns, principles and techniques described in
Breaking Up The Monolith have enabled
the development of:
Although the writing of Monolith started in late 2005, progress
has involved a lot of fits and starts - and the publication of
Extended STL - but now (Q4
2010) things are finally progressing, and it is hoped that
Monolith will be published in mid-2011.