From October 24th to 29th, 1927, twenty-nine scientists gathered in Brussels for the fifth Solvay Conference. Among the attendees, of which seventeen got a Nobel Prize before or after attending, were Erwin Schrödinger, Wolfgang Pauli, Werner Heisenberg, Paul Dirac, Louis de Broglie, Max Born, Niels Bohr, Max Planck, Marie Curie, Hendrik Lorentz, and Albert Einstein. One would think there might not have been such an assembly of brilliant thinkers since the Platonic Academy.
However pompous it might sound, in the field of programming we have our own “Solvay Conference.” The Fourth ACM SIGPLAN History of Programming Languages Conference (HOPL-IV) will take place from June 14th to 16th, 2020, at the Royal Geographic Society of London. The previous ones were held in 1978, 1993 and 2007; that is, not very often. The August 1993 edition of Dr. Dobb’s Journal included an article by K.N. King about HOPL-II, which includes a guess of the timing of HOPL-III with surprising accuracy:
Will there be a HOPL-III? Probably. When will it be held? Maybe 5 years from now, maybe 15.
The (jaw-dropping) speaker lineup in HOPL-I included Grace Hopper, John Backus, Peter Naur, John McCarthy, Kristen Nygaard, and Thomas Kurtz. In the second one, Alan Kay, Barbara Liskov, Dennis Ritchie, Guy Steele, Bjarne Stroustrup, and Niklaus Wirth. And for the third edition, Joe Armstrong, David Ungar, William Cook, Roberto Ierusalimschy, and Simon Peyton Jones. Among the rumored participants to HOPL-IV, appear Don Syme, creator of F#, and Cleve Moler, creator of MATLAB.
There will be, however, a notorious absent in HOPL-IV. The mastermind and instigator behind the HOPL conferences, and chair of the previous three editions, one of the creators of the COBOL programming language, author of the first symbolic algebra system for computers (FORMAC), and author of the first book about the history of programming languages, Jean Sammet, passed away in 2017. This will be the first HOPL without her.
Among those many achievements, she wrote “Programming Languages: History and Fundamentals,” published by Prentice-Hall in 1969. The description pamphlet of the book (available in Archive.org at the time of this writing) boasts the incredible number of “120 programming languages” as one of the key selling points of this masterpiece in research and breadth.
Of all the programming languages described in the book, only a few might resonate in the minds of programmers in 2020: ALGOL, BASIC, COBOL, FORTRAN, LISP, PL/I, and SIMULA. Yes, they appear all in uppercase, neither because computers did not handle lowercase letters back then, nor because people were shouting across mainframe rooms. Henceforth these lines will feature programming language names only in uppercase, just for the sake of nostalgia.
Ms Sammet’s book is a milestone representing the end of the first era of programming, at a pivotal moment. Many things were about to happen in computing in 1969. The Xerox Palo Alto Research Center was going to open its doors in July 1970. The first commercially available microprocessor, the Intel 4004, and the first version of UNIX, would not be available until November 1971. The world’s first home video game console, the Magnavox Odyssey, would be released in 1972. We would have to wait until 1973 for the first C programming language compiler. BASIC was just a teaching language mostly used in Dartmouth College. Microsoft and Apple would start operations in 1975 and 1976, respectively.
There are two experiences in our industry bringing us close to time travel; one is playing with virtual machines running older software. The other is, without any doubt, reading this book. We learn about those early efforts in terms that feel outdated by today’s standards. SIMULA, arguably the first object-oriented programming language, is described as an extension to ALGOL built around a “collection of programs called processes conceptually operating in parallel.” LISP is explained in detail, as the “only higher level language (…) in which the internal representation of the program is defined to be exactly the same as that of the data,” and whose “most lasting contribution” is the term and technique of “Garbage Collection.”
The evaluation of new programming languages nowadays floats around questions that were simply nonexistent half a century ago. Case in point: the book contains few, if any, information about type systems, let alone a mention about concepts such as type inference or IDEs; Turbo Pascal was more than 15 years away. Instead, Ms Sammet describes “Control Languages for On-Line and Operating Systems” instead, describing IBM’s Job Control Language (JCL) for the System/360, arguably one of the ancestors of current shell scripting languages.
We also find languages used to provide graphical output, such as GRAF (GRaphic Additions to FORTRAN,) an ancestor of the DOT language. PL/I receives a fairly large treatment: on one side, it was one of the most commercially significant programming languages of the era. And maybe too, because, well, Ms Sammet was an IBM employee, after all.
As an anecdote, Jean Sammet was an accomplished mathematician and created of FORMAC, one of the first symbolic algebraic manipulation systems, direct ancestor of Maple, GNU Octave, Mathematica, R, and Matlab. In the pages of her book she described FORMAC in detail, comparing it with other similar languages such as COLASL, MATH-MATIC, and… MATHLAB and UNICODE. Paraphrasing Obi-Wan Kenobi, these last two ones are not the languages you are looking for. Phil Karlton was right in pointing out that naming things was hard.
And in case you are left wondering about the value of learning about such “old” technology, here is the economic argument. It turns out that a lot of the logic managing our world runs in mainframe computers. Porting and/or adapting those applications to the “cloud native” world is big money, as shown by companies by Raincode (“PL/I in Kubernetes!”) or NetCOBOL (“COBOL in .NET!”). And, if all else fails, know that the salaries of experts in these languages are skyrocketing these days. Just sayin’.
Cover photo by the author.