Victory of the geeks
We note one time when the computer-engineers won over the marketers.
Last week, delving into the area of programmable calculators (admittedly an arcane subject), we noted that the TI-92 and TI-83 (for example) maintain this hardly-used capability mostly because it’s cheap to insert. A number of lines of software, a drop-down menu, and you’re done; memory space is cheap, and processing is flexible. If you don’t use it, you don’t even know it’s there.
Not so for our third example, the older HP-25. Not only did it need to have software and firmware features installed, but hardware: there are buttons on its face (valuable real estate) that are only used for programming, and a veritable physical switch to go from one mode to the other. It cost a lot to have this capability, which we’ve noted was little-used. Why was it installed?
First, a digression on computer details. What your computer actually does is an extremely complicated manipulation of voltages representing 1s and 0s. Machine-language instructions look like, say, 11001010, which when inserted into the proper terminals of a set of logic gates will add the contents of register 01010 to the quantity in the present working space, the accumulator. Assembly language translates this number to something more human-readable, like, “add 01010.” Assembly language instructions are limited and atomic: store a number at a particular address, retrieve it, add, subtract; if the accumulator is zero, skip the next line in the program; go to line number 10. The next level up is a compiled language, where you can say something like x = (y+z)/2. The compiler breaks this down into assembly instructions: put the number at y into the accumulator; retrieve the number at z; add; retrieve 2; divide; put the number into the x address. Parentheses or something like a for-next loop marks a compiled language.
The TI-92 and -84 have for-next loops. The HP-25 does not. In fact, as we noted, the way one uses the HP-25 even when not programming is very much like assembly language: moving numbers around and doing operations on those at particular locations. A program is entered as a string of key-strokes, thus looks a lot like assembly language; indeed, it’s stored as a string of numbers, like machine code. Now, these are not actually assembly language and machine code. There’s a key-stroke for “sine,” which is definitely not a single assembly language instruction. But the thought-process needed for construction of a program for the HP-25 is the same as that needed for an assembly-language program. Compiled-language techniques often don’t apply.
Our question remains, and even more urgently: why do this in a calculator? Assembly-language programmers are even fewer (make up less of a market) than the compiled-language sort. Well, consider the time when the HP-25 came out. It’s fair to say that anyone who might program one of these had access to a computer with a compiled language on it (probably FORTRAN). But it was a mainframe, with shared resources, and after writing a program one would submit it to be run, and get the output maybe the next day. It took a long time to debug an algorithm. So the ability to test a bit of code on one’s own could be very attractive, even if the process was limited.
So we think it went something like this: the computer-engineers at Hewlett-Packard, with assembly language in their very bones, convinced the marketers that a great opportunity was at hand. Thousands of programmers would leap at the chance to use the amazing capabilities of this hand-held computer. And not only did they prevail, but they got to write the instruction manual (which we think breathes the enthusiasm of a computer geek, rather than the tedium of a technical writer); and a book of already-written programs, which is bigger than the manual.
Well, progress moved on quickly, and in a few years personal computers put compiled languages (and a great deal more) on everyone’s desk. But we know of one astronomer who built a mathematical model of a star on an HP-25. And the geeks won over the marketers at least once.