Front door ... Previous page ... Next page ... Executive summary
For a computer program to count as fully usable, it's not enough that we can read it and copy it; we also want to be able to run it, which means that we're dependent on a more complicated technological infrastructure. We need a translation program that inspects the program's source code and constructs an equivalent sequence of machine-language instructions, and we need the processor that executes those instructions, and we need some kind of an output system to deliver the program's results to us. In addition, we need an operating system that manages the use of these resources and provides a user interface. For the course I took in 1970, the General Electric Company supplied all of these things, and the University of Chicago paid them what turned out to be a small fortune for the right to use them.
Today, however, if we wanted to get my program to run exactly as it did then, it would not be possible to obtain these things from GE: The GE Time-Sharing Service no longer exists, the processor that executed my commands in 1970 has been unutterably obsolete for decades, and so on. This is not really disappointing, since the operating system, the processor, and the user interface that I use now are much better in every way.
However, when we turn to the translation program that converts BASIC into machine-language instructions, an interesting complication appears. To run my program today, we need a BASIC translator. That's all right -- there are perhaps a dozen proprietary ones that software companies would be happy to sell us, and half a dozen more that are free. When I was originally preparing this talk, back in 2001, I downloaded and installed one of the latter (Yabasic) and had it translate and execute my program.
Incidentally, I was able to repeat this operation in 2005, downloading and installing a newer version of Yabasic; indeed, the installation was simpler and faster in 2005 than in 2001. After the 2005 installation, I added Yabasic to the list of standard MathLAN workstation packages, so it was available when I needed it in preparation for the 2009 version of this talk.
Here is the program; here is the result. You'll notice that the output is not quite the same as in 1970. The spacing is wrong and the numbers are presented in a different notation.
The main reason for these differences is that what I called ``the BASIC programming language'' is not one thing, but many things. The several implementations of BASIC are not completely consistent with one another. They diverge on such seemingly fundamental matters as what notation should be used when numbers are printed and how the columns of tables should be aligned. The designers of GE's BASIC translator decided these matters one way, and the designer of the Yabasic translator decided them differently.
It would be nice if all of the people who design implementations of BASIC would get together and agree on a standard that resolves these issues. In fact, there is such a standard for BASIC. Unfortunately, however, it is a vague standard that leaves most of the issues unresolved, allowing variations that are incompatible with one another. Also, of course, this standard did not exist in 1970.
We could, of course, modify my 1970 program so that the revised version produces the same output under Yabasic as the original one did then under GE's BASIC. To fix the column alignment would require just a few small changes. Getting the numerical formats to agree is considerably more difficult. It is also possible, in this case, to write a single program that would yield the same correct output under both versions of BASIC.
Nonetheless, I was disappointed to find that the 1970 BASIC program produced different output, and I'd have to concede that in one important respect my attempt to preserve it has failed: The program, in its original form, is no longer fully usable. It has become defective, not because it has changed, but because the environment that it depended on has disappeared. Reconstructing that environment would be next to impossible, and even building a simulation with modern tools would be non-trivial.
Front door ... Previous page ... Next page ... Executive summary
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/~stone/essays/keeping-stuff/usability.xhtml
created March 19, 2001
last revised February 10, 2009