In today’s wired world, people will start experimenting with an interesting new programming language shortly after it appears on a hosting service. But things took longer in the early days of Lisp. McCarthy’s famous paper[1] on Lisp was presented at a conference in May 1959 and published in CACM in April 1960, by which time a system with an interpreter and compiler was running on MIT’s IBM 704; the paper notes “A programmer’s manual[2] is being prepared.” Gradually copies of Lisp were requested by other IBM installations (the system was ported to the 709 and then the 7090). Modifications were often required to adapt it to a particular hardware configuration or operating environment and it was several years before Lisp was adapted to other kinds of computers. Without the internet or “social networking”, the propagation of ideas depended even more heavily on people. The physicist Harold V. McIntosh was one of the first to spread Lisp beyond MIT.
In 2008, McIntosh wrote:[3]
My first experience with LISP was while working for the Martin Company in Baltimore, Maryland.[4] The Massachussetts Institute of Technology had an “Industrial Liaison Program,” to a session of which I was sent to hear a presentation on this new symbolic programming language by members of their Artificial Intelligence group. That was the famous meeting which was interrupted by a garbage collection, visible via a remote monitor connected to the computer room.
We heard about climbing “gradients in theorem space” as a way to prove theorems and saw a demonstration of the computation of a symbolic derivative and afterwards I was assured by a friend who worked in the group that it was even possible to compute gradients of functions of several variables. Returning to Baltimore, I was disenchanted by the whole episode but on reporting the experience to the director of the computer center, his reaction was “I want one of those!” So, it was back to MIT to cajole a copy of the tape from my friend, and learn how to use it. A copy of the user’s manual for Lisp 1.5 was available[5], as well as a published description of the language in Communications of the Association for Computing Machinery.[1] Part of the learning process was to write a Lisp processor of my own in the assembly language of the IBM 709 (later 7090), which was christened MBLISP[6], computing center projects being required to have a name. MB was the Share code for “Martin Baltimore.”
During the time that MBLISP was under development there were some prospective applications — computing group character tables, transforming quantum mechanical Slater integrals to take advantage of their symmetry, even getting representations of the Lie group SU(3) which were needed in nuclear physics. Slater himself at MIT already had a program called Shadow, but using a symbolic language seemed as though it might be an improvement. In any event, the combination of having applications and writing the processor made one quite aware of both the favorable and unfavorable aspects of LISP, both as a language and in its implementation as an operating system.
In addition to using Lisp for his own work, McIntosh immediately began introducing it to students. In 1963 he wrote:[7]
In a summer institute conducted by RIAS at the campus of Morgan State College in Baltimore, in July and August of 1961, a dozen students ranging in age from 17 to 23 and in educational level from high school to college graduate, studied programming for an IBM 7090 computer and “programming languages” which are designed to handle particular types of problems. The experience of this institute shows that students can be introduced directly to that class of computers which we have arbitrarily designated as large, as well as how this study may supplement mathematical training of the more customary sort.
The students at this institute and ones the next two summers at the Quantum Theory Project of the University of Florida, Gainesville, investigated a variety of topics, from puzzles to flexagons to group theory, and wrote a series of reports on MBLISP and its applications.[6]
After two years at the University of Florida, McIntosh accepted an offer at CENAC (Centro Nacional de Calculo, Instituto Politecnico Nacional) in Mexico. Robert Yates, one of the students who’d attended the Baltimore and Florida summer institutes, recently told me:[8]
… Mac’s connection with Mexico started with Marcos Moshinsky – for years Mexico’s best theoretical physicist… Moshinsky was interested in group theory – SU3 in particular and he had these creation/annihilation operators that did not commute. [A, B] = AB – BA = I. All of the blackboards of the Physics Institute were filled up with polynomials of As and Bs – the algebra is tedious to say the least. Mac told Moshinsky that LISP could do the algebra and Moshinsky was interested.
Yates visited Mexico several times, and spent the 1963-1964 academic year there before returning to Johns Hopkins to finish his bachelor’s degree. It was during this visit that Yates helped organize the First International Lisp Conference.
Lowell Hawkinson was also introduced to Lisp by Harold McIntosh:[9]
One of the students who had attended McIntosh’s 1961 Lisp summer school was Peter Conrad, my sophomore year roommate at Yale. Through this connection, I ended up attending McIntosh’s 1962 offering in Gainesville, probably funded entirely out of his own pocket. In preparation for this, I read a primer on Lisp that he and his students had written a year or two earlier[10], and then I began writing simple recursive Lisp functions for set-theoretic operations — before I had ever seen other than a picture of a computer.
During the next academic year at Yale, I built a Lisp interpreter, YULISP, for the IBM 709. Among other things, it had a rather sophisticated relocating garbage collector, perhaps the first instance of this kind of garbage collector. I also began work on a compiler version of YULISP. (All this was much to the detriment of my academic studies.)
I spent August of 1963 at Uppsala University as a guest of Prof. Per-Olov Lowdin, a quantum theorist, mathematician, and friend of Harold McIntosh. The central event of this visit was a talk on Lisp I presented in a grand old lecture hall at the university. At age 20, I was rather ill-prepared to deliver such a public lecture, but perhaps I planted a seed or two of interest in one or two Swedes.
Over the next couple of years, I continued to work under the mentorship of Harold McIntosh, first at the University of Florida in Gainesville and then at the Instituto Politecnico Nacional in Mexico City (where Adolfo Guzmán was a student and where Bob Yates was also to be found). At the Instituto Politecnico, I taught Lisp and continued implementing Lisps, both the YULISP compiler version for the IBM 709 and a just-for-fun interpreter for the CDC 160-A, a tiny paper tape machine.
Yates supplied some additional detail:[8]
Hawkinson & Yates LISP. While I was in Mexico City (September 1963 – September 1964), I had the opportunity to work with Lowell and become familiar with his plans for his next LISP version (again for the IBM 7090). The extensions consisted in incorporating integers, floating point numbers and arrays as basic objects (like atoms and lists) in the LISP language in a very efficient manner and this LISP was a compiler instead of an interpreter which made it much faster still. Towards the middle of 1964, we worked together and got the compiler running on the IBM 709 at the Politecnico. I went back to finish my bachelor’s degree at Johns Hopkins and Lowell remained 7-8 months more and was able to finish the garbage collector (which collected both lists and arrays — an innovation at that time). Lowell sent me a card deck and I continued work on the compiler at Bell Labs (Holmdel). However, Bell Labs wanted me to do the garbage collector for their Snobol4 project (Griswold) and then I went to Stanford for my doctorate. I essentially abandoned the Hawkinson-Yates LISP system and never had any more contact with it.
While earning his doctorate at Stanford, Yates worked at Stanford Research Institute (now called SRI International) on theorem proving and its applications to question-answering, problem-solving, etc. — the language QA4 was an outcome. Later he returned to Mexico where he was at the Universidad National Autonoma de Mexico (UNAM) for many years, including Centro de Investigacion en Matemáticas Aplicadas y en Sistemas (CIMAS) and Instítuto de Geofisica. He is currently with the firm Alternativas en Computación.
Hawkinson’s career next took him to Information International, Inc. and the LISP 2 project, which I hope to take up in a later posting.
Hawkinson mentioned Adolfo Guzmán: a Mexican engineer who worked with McIntosh at Instituto Politecnico Nacional and wrote his undergraduate dissertation[11] on an interpreter for CONVERT, a pattern-matching language he designed with McIntosh. In a paper on CONVERT, Guzmán and McIntosh noted:[12]
The first version was written in MBLISP, a LISP dialect which differs from LISP in a number of technical details, but which had a sufficient amount of pushdown list and free storage space available to be able to execute reasonably complicated examples. As an interpreter–interpreting a CONVERT interpreter for a slow machine–it was decidedly slow. The Q-32 version using a faster machine with a Lisp compiler gave a much better performance. One of the programs analyzed a group of order 16, defined as a semi-direct product C8:C2 of cyclic groups of order 8 and 2, respectively. It was possible to obtain the group table in about three minutes at times when the time-sharing competition was not intense which meant about a second per group product, a figure several hundred times as fast as for MBLISP in the 709.
The Q-32 Lisp has a limited pushdown list available, which prevented the execution of quite a number of programs, since CONVERT is highly recursive. However, the latest experience has been with yet another LISP processor, a compiler, constructed for the CENAC by Lowell Hawkinson and Robert Yates, and which they are presumably continuing to develop. It is unique in having an excellent array and floating-point numerical capability, as well as being very carefully organized in all other aspects. As a result it is one of our current vehicles for the CONVERT programs.
Guzmán Arenas went on to earn a master’s degree and PhD at MIT with Marvin Minsky as his advisor. He has had a long and productive career in Mexico and the United States.
McIntosh stayed in Mexico, working in various positions at Instituto Politecnico Nacional, Instituto Nacional de Energía Nuclear, and finally Universidad Autónoma de Puebla. He has advised many graduate students, created widely-used software packages, and published several books — see here for a summary.
Update 7/10/2012: McIntosh comments: “It might be of interest that Gerardo Cisneros and Carlos Bunge later on considerably extended the Slater integral programs; as I recall this included using CONVERT. REC and CONVERT were my answers to perceived shortcomings in LISP.”
Incidentally, Cisneros wrote “La computación en México y la influencia de H. V. Mcintosh en su desarrollo” in 1991.
Acknowledgments
Thanks to Harold McIntosh, Robert Yates, Lowell Hawkinson, and Adolfo Guzmán Arenas for sharing their stories with me. Thanks to Harold McIntosh, Robert Yates, and Adolfo Guzmán Arenas, and Herbert Stoyan for making available documents. And thanks to Steve Russell for encouraging me to contact Harold McIntosh.
References
[1] John McCarthy. Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. CACM Vol. 3, No. 4, April 1960, pages 184-195. ACM Digital Library Online at stanford.edu
[2] J. McCarthy, R. Brayton, D. Edwards, P. Fox, L. Hodes, D. Luckham, K. Maling, D. Park and S. Russell. LISP I Programmer’s Manual. Computation Center and Research Laboratory of Electronics, Massachusetts Institute of Technology, March 1, 1960. PDF at bitsavers.org
[3] H. V. McIntosh. 2008: An anniversary. Posting to Cellular automata miscellanea forum, October 17, 2008. Retrieved from Google cache of http://cellular.ci.ulsa.mx/miscelanea/viewtopic.php?t=99&view=next& sid=7d8412cce26816e74caae70f1afb9a25 August 14, 2010.
[4] McIntosh worked at RIAS, the Research Institute for Advanced Studies, a subsidiary of The Martin Company, in Baltimore, Maryland.
[5] John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, Michael I. Levin. Lisp 1.5 Programmer’s Manual. MIT Press, Cambridge, Massachusetts, 1962. PDF at softwarepreservation.org
[6] Paul McJones, editor. History of Lisp : Other Lisp 1.5 implementations : MBLISP. online at softwarepreservation.org
[7] Harold V. McIntosh. An Experiment in Teaching the Use of Large Electronic Computers. The American Mathematical Monthly, Vol. 70, No. 2 (February 1963), pages 207-209. online at jstor.org
[8] Robert Yates, personal communications, August 14 and September 28, 2010.
[9] Lowell Hawkinson, personal communication, April 7, 2010.
[10] William Skeen, Judy Barnes, John D. Baildon, and Robert Thompson. Handbook of LISP Functions. RIAS Technical Report 61-11, RIAS Martin Baltimore, August 1961. PDF at softwarepreservation.org
[11] Adolfo Guzmán Arenas. CONVERT. Diseño de un lenguaje para manipulación simbólica de datos, y de su procesador correspondiente. Tesis de licenciatura, en español. ESIME-IPN, 1965. online at ipn.academia.edu English Translation: CONVERT. Design of a language for symbolic manipulation of data, and of the corresponding processor. online at ipn.academia.edu
[12] Adolfo Guzmán and Harold V. McIntosh. CONVERT. CACM Vol. 9, No. 8, August 1966, pages 604-615. ACM Digital Library Online at dspace.mit.edu
Update 2024/05/08: updated URL for Yates at SRI.
Update 2024/05/11: added English translation of [11].
Nice and interesting description!
Thanks for shared
José Manuel Gómez Soto
Macintosh was my freshman calculus teacher at Cornell University in 1952. At that time he was, I believe, a graduate student in the physics department. He was especially interested in Group Theory, and wrote several sets of ditto-graphed notes that he sold mainly to University libraries. He hired me as a typist on one set of notes.
In 1954 or 1955 Mac left Cornell to work at the Ballistics Research Lab at Aberdeen Proving Grounds in Maryland. He got me a summer job there in the summer of 1955. At that time our group was studying the salvo problem, trying to devise a mathematical method for developing the best placements of groups of artillery shells.
Soon after I entered Grad School at the University of Pennsylvania Mac and I had a falling out, and I lost track of him. Alas! I, too, developed an interest in LISP and later LOGO.
I have a very bad news
Profesor Harold V. McIntosh passed away today (30 Nov 2015) 🙁
-jm
Great history. Lisp and Mexico? Never heard that one. And I was thinking “I can almost smell the punch cards” when I got to “Lowell sent me a card deck …” .
But Mac was unworthy!
“Returning to Baltimore, I was disenchanted by the whole episode but on reporting the experience to the director of the computer center…”
Funny how we can overlook greatness. Who was the Lisp-worthy director?! Funny also that physical travel was necessary to atone for not getting a tape (!) the first time.
Love how Lisp compilers came into existence as fast as Lisp. Hello, Python? Ruby? Perl?
Great stuff. RIP, Mac.
@KennethTilton Unworthy? Because he didn’t initially recognize the utility of Lisp? You are ignoring the fact that he did learn Lisp, implement it himself, and introduce it to a number of students who would go on to make important contributions.
I believe the director was Welcome Bender, the founding director of RIAS. Here’s a 1961 annual report signed by Bender and containing multiple references to McIntosh’s work: http://archives.ubalt.edu/gbc/pdf/X-1-57.pdf .