Dick Pountain/01 May 1998/Idealog 45
To say that one loves the "simple things of life" has become one of the most powerfully emetic cliches of our time (to me it conjures up pictures of the young Richard Briers and Felicity Kendal eating home-made tofu next to a duck pond). The problem is that it gives simplicity a good name, but of course what everyone is seeking nowadays is a bad name: the decadent, the louche, the overripe, the De Luxe. This is a cause of great sadness because I value simplicity very highly, and to me the word doesn't carry any of these connotations of wholesomeness or wholewheatness. To me simplicity is an almost mathematical concept, that implies an absence of redundancy. An Arne Jacobsen chair, a Ducati motorcycle, Godel's proof, the Quicksort algorithm, a good Japanese meal, these have no redundant parts, just precisely what is needed to achieve their desired effect. A tin of caviar and a spoon is a simple meal too (if someone else is paying for it).
The word simple for me is almost interchangeable with 'elegant', but nowadays that has come to mean little more than sartorial dandyism. From the Latin eligere - to select - elegant originally meant "well-chosen" or "ingeniously simple", though few but mathematicians use it in that sense nowadays. Then there are the people who appear to value simplicity, but actually use it as a mask for a stern neo-puritanism. Simplicity does not mean painting everything matte black and throwing away the curtains. When US architect Louis Sullivan famously claimed that 'form follows function' he was arguing against spurious decoration in building, but his maxim didn't mean that everything must look as if it belongs in a boiler-room. Form can follow function and still be beautiful, as the Japanese had known for hundreds, maybe thousands of years until we infected them with Elvis and Coke bottles.
Over the years I've collected my favourite sayings on the subject of simplicity, a few of which I now propose to share with you. The daddy of them all of course comes from William of Occam (aka Ockham), the 14th century English philosopher: "Entia non sunt multiplicanda praeter necessitatem". Literally, entities are not to multiplied more than necessary. This principle, known as "Occam's Razor", implies that all other things being equal, the explanation that involves inventing the fewest new concepts is always to be preferred. Your hard drive didn't suffer a head-crash because seven demons put a curse on it; only one demon is required. As a counterbalance there's Albert Einstein's dictum "Make it as simple as possible, but not simpler", a health warning against cutting your own throat with Occam's Razor - simplification is not the same as skimping.
Antoine de Saint-Exupéry is best known for writing the Little Prince, but he was also a pioneering aviator and aircraft designer. He said "a designer knows that he has arrived at perfection not when there is no longer anything to add, but when there is no longer anything to take away." This should be tattooed inside the eyelids of the entire Microsoft Office development team. Henry David Thoreau was of the opinion that "our life is frittered away by detail - Simplify, simplify". Admittedly he lived by a pond, but there is no evidence that he ever ate tofu. Perhaps my favourite of all though is Blaise Pascal's comment to a correspondent "I have made this letter longer than usual, because I lack the time to make it short." Anyone who has ever written for a living will appreciate this truth, that writing short pieces is far more demanding than writing long sprawling ones. This column would be three times easier to write if I had three pages (and an agreeable side effect would be that it would pay three times as much).
Professor C.A.R "Tony" Hoare is one of my computing heros. Most famous perhaps for helping define Algol and inventing Quicksort, he also invented the concept of monitors and mutexes back in the 1960's, then went on to develop the theory of Communicating Sequential Processes (CSP) which promised to take most of the horror out of concurrent programming. Java has just rediscovered mutexes (in the guise of synchronised threads), but perhaps one day, when all the C programmers are locked up and Java programmers have lost their taste for pain, we will see a proper concurrent language based on CSP. Hoare made this mordant comment on the state of the programming art: "there are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other is to make it so complicated that there are no obvious deficiencies." Guess which is currently in vogue.
This notion of elegance, in the sense of choosing well, ought to be of paramount importance to programmers. Spotting those actions that are repeated often enough to be worth breaking out into separate routines is a very particular skill, a bit like identifying winning positions in chess. If you can do it well, both your architecture and design will be small and simple. There was a time when I believed no problem in the world could need so much as a megabyte of code, if you factored it properly (and I'm not sure that I don't still believe it at some level). Nowadays most development tools will make "Hello World!" more than a megabyte. Those damned entia just keep on multiplicanding.
My columns for PC Pro magazine, posted here six months in arrears for copyright reasons
Subscribe to:
Post Comments (Atom)
POD PEOPLE
Dick Pountain /Idealog 366/ 05 Jan 2025 03:05 It’s January, when columnists feel obliged to reflect on the past year and who am I to refuse,...
-
Dick Pountain/Idealog 277/05 August 2017 11:05 I'm not overly prone to hero-worship, but that's not to say that I don't have a...
-
Dick Pountain /Idealog 360/ 07 Jul 2024 11:12 Astute readers <aside class=”smarm”> which of course to me means all of you </aside...
-
Dick Pountain /Idealog 363/ 05 Oct 2024 03:05 When I’m not writing this column, which let’s face it is most of the time, I perform a variety...
No comments:
Post a Comment