I've already written here about the weirdness of certain floating point operations - the case of the misbehaving Excel spreadsheet in particular - taking my cues, and my examples, from floating point pioneer William Kahan (notably this set of slides [PDF]). Before writing about the dire consequences of programs not equipped to handle such mistakes - which I will do in a later post - there is another issue that figured largely in my interview with Kahan on last Tuesday afternoon.
Talking to Kahan made me realize more than anything else that we live in very special times when it comes to computer science - we can still talk to quite a number of people who were there at, or nearly at, the beginning. It's like being an automobile engineer having the opportunity to talk to Benz, or Otto.
When Kahan graduated from high school, you couldn't study computer science - it hadn't yet established itself as a course of study. Kahan decided to study mathematics - because it was hard. Also, fortuitiosly for what was to follow, he had a suitable hobby: electronics.
In Kahan's third year of college, in 1953, he first heard about computers. More precisely, about one particular computer that was said to reside in the physics department. Most of us, if interested, might just have gone there and asked. Instead, Kahan decided to figure out things on his own first, and set himself the problem of designing a programmable calculating machine out of telephone relays. (Only at a later date did he calculate the power consumption of such a machine - as it turns out he would have needed the combined power of Niagara Falls.)
With his (concept of a) machine, he then went to the professor responsible for the physics department's computer: "I'll show you mine if you'll show me yours!"
Are you tormented by the unbearably slow performance of your 2 Gigabyte of RAM, and complaining about your paltry 500 GB of storage space? Kahan takes me back to a time when programming instructions were stored on (paper) tape, using an alphabet of four characters represented by holes in the tape. A time when performance optimization could mean programming simple division of two numbers so cleverly that the computer could complete all the instructions without having having to stop and restart the tape. (Of course, if you succeeded and the tape whizzed just through, you would need to make sure that nobody stood in the way of the tape, or they might get hurt.)
And yes, on your magnetic storage drum you might have the capacity to store 100,000 40-bit-words (for a whopping total of 500 kilobytes). But on any given day, only 30,000 or so would work. When Kahan came in each morning, the engineer would hand him a directory showing which parts of the memory were working that day. When you wanted to run a program, you had to make sure you only used the good bits.
It's easy to feel ever so slightly smug about how much more today's technology can do. But that's easily cured - we don't really know for what reasons exactly future humans will look down on present-day technology, but we can be certain they will. Now if you will excuse me, my brain interface just reminded me that I left my flying car in a no parking zone.
This blog post originates from the official blog of the 1st Heidelberg Laureate Forum (HLF) which takes place September 22 - 27, 2013 in Heidelberg, Germany. 40 Abel, Fields, and Turing Laureates will gather to meet a select group of 200 young researchers. Markus Pössel is a member of the HLF blog team. Please find all his postings on the HLF blog.