June 2010 Archives
An infinite number of mathematicians walk into a bar.Posted by Laurent Wright to the Microsoft Excel Developers' List EXCEL-L.
The first one says: I'll have a pint.
The second one says: I'll have half a pint.
The third one says: I'll have a quarter of a pint.
The fourth one says: I'll have an eighth of a pint.
The barman holds his hand up for silence, says "I hate you guys", and pours out two pints.
Here's a story about the perils of indexing and digital encoding: Hal Draper's MS Fnd in a Lbry. It's one I've never forgotten, having found it when I was twelve, in Groff Conklin's anthology 17 X Infinity. There, it was introduced by a reference to Richard Feynman's 1959 talk There's Plenty of Room at the Bottom, in which he asks Why cannot we write the entire 24 volumes of the Encyclopedia Britannica on the head of a pin? To get yourself in the right frame of mind, read that first.
If you're researching into spreadsheets or other visual programming languages, or if you're teaching Excel, or if you just want to know which aspects of Excel really bother spreadsheet developers, you may like my new How NOT to Use Excel blog. It came about as a result of Don McMillan's hilarious video about How NOT to use Powerpoint that I posted about in May.
With ten tentacle tips effortlessly
keeping track of the goto's and their destinations in his
spaghetti Hello World program, Fnork
cannot understand why mere Earthlings
have so much trouble with labels. For
last week's cartoon
Labels,
I wanted a convincingly alien
writing system for Fnork's programming
language.
But I didn't want to use Armenian or
Georgian or Telugu, beautiful
though they are. Or Tamil, which I've always
thought of as
visual jazz, all neon lights
and Rhapsody in Blue made graphic.
Some reader would be bound to recognise them
as real scripts. So
I used the Shaw
alphabet.
I'm off to the Royal Statistical Society in London today to meet my friend Graham Stark when he talks about economic modelling at the Family Resources Survey User meeting. In Ada, we — Graham did most of it, actually — have written an economic model for the Office of the Scottish Charities Regulator to help them decide whether prospective charities are entitled to become actual charities. A charity must benefit a reasonable proportion of the population, and if its services are too expensive, it won't do so. So as Graham explains in these papers, the charity must be "affordable". Stan's Super Gym and Spa Club wants to become a charity, but charges £600 a year membership: is that affordable? It's to answer such questions that we are using Ada, to analyse the Government's Family Resources Survey of family incomes, and hence work out what various kinds of family can afford.
Lord Finchley tried to mend the Electric Light
Himself. It struck him dead: And serve him right!
It is the business of the wealthy man
To give employment to the artisan.
Hilaire Belloc
I've always liked this little poem, and was reminded of it last week when I came across it in Bernard Levin's essay Easy as a, b, d. He discusses the presumptuousness of assuming that just because one can write a book, one can also index it. End-users are not necessarily wealthy; but perhaps a version of the poem should be composed for those who assume that just because they can write an equation, they can also spreadsheet it. One might begin with the notorious spreadsheet holding 179 "hidden" Lehman contracts which accidentally got unhidden, and thereby included in Barclays's purchase of Lehman's assets — as Debra Cassens Weiss reported on October 16th 2008 for the American Bar Association Journal: Excel Error by a Cleary Gottlieb Associate Alters Lehman Asset Deal.
In Stack Machines, Expression Evaluation, and the Magic of Reverse Polish, I showed how expressions can be evaluated by rewriting them in reverse Polish and translating this into machine-code instructions for a stack machine. I demonstrated with a stack-machine interpreter that I'd written as part of a working model of a Pascal compiler. But as well as expressions, the compiler needs to compile assignments and jumps, so — in my progress towards explaining the compiler — I'm going to extend the machine code so it can handle these. I'll demonstrate by interpreting a program that calculates five factorial.
