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:
Physics is full of such examples — in fact, many physicists consider it a very non-trivial fact that physics can be split into so many different length scales, and described accurately at any of those length scales. Newtonian mechanics works universally at the human-scale level; quantum mechanics and field theory is superbly accurate at atomic lengths, even though we know it’s an incomplete theory. Indeed, quantum mechanics predicts infinite energy interactions at shorter lengths, but nevertheless our results are superbly accurate, even though we don’t even have a theory that deals convincingly with those infinities. It is, in fact, a useful approach to actually model the dimension of “scale” as a physical dimension, so that physics at different energies actually happens at different places in this fifth dimension.
But to consider complexity more generally, physics is also very ameniable to abstraction in complexity of the number of objects involved. Physics can be done very nicely by considering the interaction of only two or three particles at a time. This is, in my opinion, largely the reason that “serious” physics is much older as a discipline than most other sciences: most physics can plausibly be done by individuals, without computers. As a result, it’s been “tractable” for far longer than other disciplines I’ll discuss later.
There are a few cases where one or both of the requirements above don’t hold, and it’s those areas of phyics that are particularly hard. The surface of a black hole is a region of such strong curvature and energies that the normal approximations of long-range behaviour that general relativity makes don’t hold, and we need (somehow) to take into account quantum effects. Thus there is no useful cutoff that we can define, and the complexity problem makes general relativity inapplicable. On the other hand, in the photoelectric effect (electric current generated by electrons being excited by incoming light) we have a useful cutoff — we can measure current and light intensity. However, in taking a macroscopic cutoff, we lose important information: because photon energies and electron orbits are quantised, increasing the intensity of the light increases the number, not the energy, of the electrons produced. This observation was vital to the birth of quantum mechanics.
Abstraction is one of the cornerstones of modern computer science and application design. Object-oriented programming (OOP) is now used universally in large programs. OOP directly addresses criterion 1 above (of cutoff scale) by requiring the programmer to split the program into “objects” that then communicate in a simple, well-defined manner with each other. Thus one defines a cutoff scale at the level of objects, making a program with no intrinsic cutoff scale ameniable to abstraction. Furthermore, it is a key requirement of well-designed objects that they have no hidden side effects — after taking the cutoff, a lot of design work is put into making sure that criterion 2 above is satisfied too. So in fact much of the improvement in techniques of software engineering in recent decades have resulted just from making programming ameniable to abstraction.
Economics is a great example of a discipline where clear cutoffs exist, but where predictions are less than ideal as a result behaviour loss, or leaking of effects from behind the abstraction. For example, economists typically use the model of a perfectly rational person (homo economicus) to construct models of economic behaviour. So, for example, one defines a price vs. demand curve, showing demand for a good (item) at any particular price level. One assumes this is a decreasing function — as price rises, demand falls. This is often the case, but a lot of recent work has been looking at cases where it isn’t. For example, it turns out that people are, in some situations, more risk-averse than the odds should suggest. Furthermore, sometimes higher price can be used by consumers as a signal of quality, and can actually increase demand. The effects of consumers having imperfect information, or showing brand loyalty, or even following fashion, are all significant but are very hard to include in the simple abstractions that have traditionally been used.
In the second part of this marathon post, I’ll look at why biology, and even more so psychology, have much greater complexity problems than physics (yes, it’s because abstraction doesn’t work well). Also, I’ll look at how the human brain uses abstraction absolutely everywhere — and some of the funny effects and failures that arise from behaviours leaking through from behind the abstraction (criterion 2 above). I’d be interested in thoughts that anyone has on other areas that show interesting applications of abstraction!
« Hide it