Interpretive coding system for the JOHNNIAC
Interpetive coding system for the JOHNNIAC (QUAD from the Octal coding halved) developed by Fred Gruenberger
In the earliest days of 1954, most programming was done in machine language and in absolute octal at that. In 1955 Jules Schwartz wrote the first assembly routine for JOHNNIAC and Cliff Shaw produced a revised assembler in 1956. Then came QUAD, an interpretive programming system, and SMAC, a small compiler. Each was noted for being foolproof. The non-professional programmer could use these systems comfortably; his errors would be reported to him in great detail by the machine. There were other significant contributions to the programming art as well; among them were items with such names as EASY-FOX, CLEM, JBL-4, J-100, MORTRAN done by Mort Bernstein, and Load-and-Go.
In the late fifties, the nature of JOHNNIAC's task changed. The rental equipment from IBM carried most of the computing load from the RAND staff. JOHNNIAC became a free good; its time was available for research use. The cost of operation was sufficiently low that one need not be concerned about using large amounts of machine time. Much of its time was consumed by research on the general questions of artificial intelligence and the initials NSS came to be closely associated with JOHNNIAC. These are the initials of Allen Newell, Cliff Shaw, and Herb Simon who used the machine extensively for research. During this period came such achievements as:
Since JOHNNIAC dates back to early explorations of stored programming computing, much of its first programming was done in absolute octal. Very soon, however -- around 1954 -- a symbolic, relative assembler was written by Jules Schwartz (of JOVIAL fame). Associated with this assembler was a system of relative binary library routines that formed the predecessor of what is now called relocatable code. In 1955 Cliff Shaw produced a load-and-go assembler (EASY-FOX) that added the feature of local symbols. EASY-FOX had another feature that was somewhat novel for its day; it was written in its own language.
In the days of JOHNNIAC, conversion between base 10 and base 8 was a chore that programmers performed daily. Wall charts of conversion tables were a help (every programmer's office was papered with them), but an octal desk calculator was nice to have, particularly if it had 13 banks so that it would simulate the JOHNNIAC word format exactly. A government agency was found to have declared two 13-bank Monroes surplus, and RAND successfully bid on them ($79 and $104). The cost of converting one of them to base 8 ran around $500. The machines are probably still in use.
A package of floating-point subroutines was developed; and in 1958 an interpretive coding system, QUAD, was added to the library, followed by SMAC, a small compiler. Both QUAD and SMAC, though somewhat trivial by today's standards, were notable for being foolproof. In both coding systems, open-shop users found little need for mothering; i.e. all troubles were reported to them by explicit printed error messages or, in the case of an endless loop, by an operator's message. The manuals for these systems were short but complete. The systems were active for about two years, until open-shop work was converted to FORTRAN II.
Q: You?d mentioned JOSS just briefly. Could you spend a few moments describing what that was, and how it operated, and what the significance of it was?
MORT BERNSTEIN: There?s a JOSS console at the far end of the machine. JOSS was one of the very early time-shared user-oriented computation tools. It was not a general purpose time-sharing system; it was aimed at doing small programs. And the history behind it is, one of the ways we believed to keep the JOHNNIAC going, and justify its maintenance costs, was if we could open the shop. I mean, there were fewer and fewer programmers who became JOHNNIAC programmers as they joined the RAND Corporation, and we kept trying to find ways -- in fact, prior to JOSS there were at least four attempts at producing batch-oriented open shop languages. Fred Gruenberger created Quad, and I had created something called Smack, and another called MORTRAN -- you know why [laughter] -- and there was another one in there somewhere. But these were not successful because they were the kind of programming languages that programmers would create. They weren?t the kind of thing that an engineer, or an economist, or somebody like that would take to, and it took too much. Even though the advertisement was "it?s easy to learn, it?s easy to use," we?ve been hearing that for 40 years; it?s still not true. [Laughter] And the idea was that JOSS would become your computational assistant. Cliff worked very, very hard at making things as natural and easily understandable as he could, and his goal was that the JOSS manual would be one page. Now I -- I don?t think I brought it with me -- I have a one page description of JOSS, which, if you?re a bit of a mind reader, yeah, you can figure out what really you were able to do with it. But it was attractively enough done that it didn?t suffer from all of the shortcomings of all of the floating point of the day. First of all, he did an integer floating point rather than a fractional floating point. It looked like decimal to everybody from the outside. There was nothing that wasn?t decimal, and when you took the square root of 2 and squared it, it came back 2.000000, which is very important for people who don?t understand that we?ve lost a bit somewhere, and now it?s 1.999999. And the syntax was oriented to people. People hardly ever put the IF clause in front of a statement they want to condition; they put it at the end. And Cliff looked at that and said, "That?s where it has to go. A = B IF ...." So it became the secondary clause in the statement. There were all kinds of little good things like that, that made the thing extremely easy to look at, easy to understand, and relatively straightforwardly easy to use. And it took off! And as Gordon observed, ran out of time, space and availability of the JOHNNIAC, and ended up creating a second version of it with some enhancements on a PDP-6.
The biggest shortcoming of the machine was its shortage of secondary memory, in that you couldn?t create a program, even a small five-line program, and save it anywhere. There was no "save" space for users. So people had to retype things. Now, there was some facility for punching out decks and loading them back in, but that apparently created some problems that I -- I wasn?t there and don't really understand how it all went, but that was also a lot of the reason for the pressure to move it onto the more modern machine with truly proper storage facilities where people had allocated storage to them and they could recall programs that they had written, and they could write bigger and bigger programs, and build on them, and build them slowly but surely.
How long did it last, Willis? How long did JOSS ... ?
WILLIS WARE: I don?t know when we finally turned it off.
MORT BERNSTEIN: The PDP-6? I don?t, either, but it served -- it grew like Topsy and somewhere there?s a compilation of the number of JOSS-like languages that were propagated into the world by other organizations, and my recollection is, the number was well over 20, so it did have an influence. A guy named Ed Bryan, who was one of the implementors of the PDP-6 version, who looked at what Cliff had done on this machine, and his time-sharing algorithm, as far as Ed was concerned, was better than any time-sharing algorithm that anybody had created up to that time. Interestingly enough, I do have a full source listing of JOSS which I intend, when I get the simulator running, to get running on this thing. Now it?s not going to be a big user of JOSS. I don?t think I can handle that. But it would be a lovely [inaudible].
Q. Just a quick one. What machine are you going to do the emulation on?
MORT BERNSTEIN: On a PC. What else?
GORDON BELL: OK. There?s some refreshments here.