Software Design by Introspection

Over the years, a few programming paradigms have been successful enough to enter the casual vocabulary of software engineers: procedural, imperative, object-oriented, functional, generic, declarative. There’s a B-list, too, that includes paradigms such as logic, constraint-oriented, and symbolic. The point is, there aren’t very many of them altogether. Easy to …