One of the key challenges that arises in almost any context is how to deal with complexity. Probably the most powerful tool we have to address it is abstraction — ignoring details in favour of a smaller set of information, at some “higher level”. I’ve been thinking recently about how abstraction appears, with varying success, in so many areas, and in particular what differentiates different problem areas in which abstraction is more or less effectives. This two-part post will meander vaguely through a few of those areas.
I’ll start, appropriately, in physics. Thermodynamics is an excellent example of abstraction at it’s best — macroscopic quantities of gas, say, have on the order of 10^27 molecules, but we can describe their behaviour very well using only the variables temperature, pressure and volume. Thermodynamics passes two test I’d like to propose for the appropriateness of abstraction:
- There exists a useful cutoff scale. Considering the behaviour of the gas at “macroscopic” length scales is a well-defined, useful definition, since the molecules are so much smaller.
- The different length scales decouple well; or to paraphrase, there is little behaviour loss from ignoring interactions at a smaller scale — thermodynamics describes the gas really well.