Celebrating 25 years of celebrating computation
Making It Happen
Will I ever get my wishes? Nothing I've asked for is unattainable or even particularly novel. I wouldn't know enough to propose these ideas if I hadn't seen them at work in the past. Indeed, over the years I have used a number of programming systems that met most of the criteria on my list. Some of those systems were pure delight. What makes me grumpy is that they are now obsolete and will not run on modern hardware. And I don't see replacements on the horizon.
My sentimental attachment to Lisp makes me long for a revival of interest in that language, but I don't see it happening.
A smarter bet is Python. It has a large and zealous community of boosters, especially in the world of science. The language itself is well adapted to inquisitive programming, and it serves perfectly well for introductory programming courses. Python's weak point, in my view, is the surrounding infrastructure of editors, command-line tools, code libraries and modules. There are several interactive programming environments for Python, but none of them give me the feeling of a place where I am at home and in control of my own environment.
Going off in another direction, programs such as Mathematica and MATLAB are truly wonders of the age. But software that costs more than the computer it runs on is not going to win the public over to casual programming.
A project called Sage claims as its mission, "Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab." Sage was initiated by William Stein of the University of Washington, and it now has hundreds of contributors. Sage is certainly not the self-contained, cohesive package that I argue for; on the contrary, it's a loose confederation of dozens of more specialized programs, such as GAP for group theory and R for statistics. All of the pieces are stitched together with Python code, which is also supposed to provide a consistent user interface. It works better than I would have guessed, but it's hardly seamless. The principal developers are putting most of their energy into creating a research tool for advanced mathematics, which can leave the skittish beginner without a safe point of entry.
One aspect of Sage I find particularly intriguing is the "notebook" interface, which runs in a web browser. Factoring a polynomial feels just like shopping at Amazon. Moreover, the interface is exactly the same whether the browser is connected to a locally installed copy of Sage or to a remote server. (There's a public Sage server at
.) This is surely the way of the future. Perhaps the next big step in inquistive programming will be offered as a service, not as a product. And maybe they'll call it
Berlekamp, Elwyn, and Joe P. Buhler. 2005. Puzzles column. (Problem 1, attributed to David Gale.)
Mathematical Sciences Research Institute Emissary
, Fall 2005, p. 3.
Campbell-Kelly, Martin. 1992. The Airy tape: An early chapter in the history of debugging.
IEEE Annals of the History of Computing
Dijkstra, Edsger W. 1975. How do we tell truths that might hurt?
Granville, Andrew, and Thomas J. Tucker. 2002. It's as easy as abc.
Notices of the American Mathematical Society
Hayes, Brian. 1983. Computer recreations: Introducing a department concerned with the pleasures of computation.
, October 1983, pages 22–36.
Hayes, Brian. 2006. Counting sums and differences.
Hayes, Brian. 2007. Easy as abc.
Kemeny, John, and Thomas B. Kurtz. 1964. BASIC. Hanover, N.H.: Dartmouth College Computation Center.
Oliphant, Travis E. 2007. Python for scientific computing. (Special issue on Python.)
Computing in Science and Engineering
Renwick, W. 1950. The E.D.S.A.C. demonstration. In
Report of a Conference on High Speed Automatic Calculating-Machines
, Cambridge University Mathematical Laboratory.
Sloane, Neil J. A. The Online Encyclopedia of Integer Sequences. Sequence A001109.
Stein, William, and David Joyner. Sage Programming Guide.
Wheeler, Joyce M. 1992. Applications of the EDSAC.
IEEE Annals of the History of Computing