Orthogonal

A term: we say that A is orthogonal to B if you don't have to think about feature A while thinking about feature B.

This is desirable because humans aren't good at reasoning about more than one thing at a time.

C++, for example, embodies lack of orthogonality in language features. It's like a swiss army knife with all blades soldered in open position; you can do lots of things with it, but everytime you use one feature, the other ones get in the way.

Experienced C++ developers know that understanding inline functions and understanding virtual destructors does not necessarily mean you understand inline virtual destructors. Such battle-scarred developers recognize that comprehending the interactions between the features in C++ is of the greatest possible importance in using the language effectively.
-- Scott Meyers?, Effective C++

At the other end of the spectrum, OCAML is a language with a lot of orthogonality in features, and it's like a tool box where you can choose the right tools for the right job, and leave the other ones in the box.


This page is linked from: Modal   Persistence 101   Type System