TITLE: Inquisitive Computing
AUTHOR: Eugene Wallingford
DATE: August 18, 2008 5:27 PM
I've written here a lot in the last year or so about
ideas in the vein of "programming for everyone", so
I feel I should point you toward
Brian Hayes's latest column in The American
Scientist. This short paper is something of a
hodgepodge in celebration of the 25th anniversary of
Hayes writing monthly articles on the joys of
First, he talks about the history of his columns, which
explore the realm of inquisitive computing
-- writing programs as a way to explore ideas that interest
him and his readers. This isn't software development, with
"requirements" and "process" and "lifecycle management".
This is asking a cool question (say, "Is there any pattern
in the sequence of numbers that are perfect medians?) and
writing some code in search of answers, and more questions.
This is exactly the way in which I conceive of programming
as an essential intellectual skill of the future to be.
I don't imagine that most people will ask themselves such
mathematical questions (though
but they might be inquisitive at work or at home in their
own areas of interest.
They may be sitting on a plane talking with a fellow
passenger and have a question about football overtimes.
I lived that story once many years ago, talking about
sudden-death overtime in the NFL. My seatmate was a
pilot who liked to follow football, and after we
discussed some of the days scores he asked out loud,
"I wonder how frequently the team that wins the coin
toss wins the game?" He figured that was the end of
the question, because how could we answer it? I whipped
out my laptop, fired up Dr. Scheme, and built a little
model. We experimented with several parameters,
including a percentage we had read for how often the
first team scores on its opening drive, until we had
a good sense of how much of an advantage winning the
coin toss is. He was amazed that we could do what we
did. I could only say, it would be great if more
people knew this was possible, and learned the little
bit of programming they need to do it. I'm not sure
he believed that.
Hayes then gives three examples of the kinds of problem
he likes to explore and how programs can help. I'm
tempted to elaborate on his examples, but that would
make this post as long as the paper. Just read it.
I can say that all three were fun for me to play with,
and two of them admit almost trivial implementations
for getting started in the search for answers. (I was
surprised to learn that what he calls abc-hits
has implications for number theory.)
Finally, Hayes closes with a discussion of what sort
of programming environments and languages we need to
support inquisitive programming by the masses. He
laments the passing of Dartmouth BASIC into the bowels
of structured programming, object-oriented programming,
and, dare I add, VB.NET -- from a language for everyone
to a language for a small group of professionals writing
serious programs in a serious setting. (He also laments
that "GUI-coddled computer users have forgotten how to
install an executable in usr/local/bin and add
it to their $PATH", so he's not completely
consistent in aiming at the computing non-professional!)
He hopes to be language-agnostic, though he confesses to
being a Lisp weenie and suggests that Python may be the
language best positioned to fill the needs of inquisitive
programmers, with its avid user community in the sciences.
He is probably right, as I have noted Python's ascendancy
before. Most encounters I have with Python leave me
thinking "Boy, I like Ruby", so I would love to see the
Ruby grow into this area, too. For that to happen, we
need more books like
to introduce real people to Ruby in their own contexts.
I'm looking forward to seeing an exam copy of
to see whether it or one like it can be useful among
students and professionals working in the life sciences.
I've long enjoyed Hayes's column and still follow it
on-line after having dropped my subscription to The
American Scientist a few years ago. (It's a fine
publication, but I have only so many hours in my day
to read!) You can find many of his articles on-line
If you can make time to explore a bit, I encourage you
to look there...