Dusty Decks: Preserving historic softwarehttps://mcjones.org/dustydecks
by Paul McJonesThu, 20 Dec 2018 22:50:40 +0000en-UShourly1https://wordpress.org/?v=5.0.3GTL is a LISP 2 implementationhttps://mcjones.org/dustydecks/archives/2018/06/04/1001/
https://mcjones.org/dustydecks/archives/2018/06/04/1001/#respondTue, 05 Jun 2018 00:14:35 +0000http://www.mcjones.org/dustydecks/?p=1001Continue reading "GTL is a LISP 2 implementation"]]>A few months after my article “The LISP 2 Project” was published, I learned from Paul Kimpel that the language GTL includes a “non-standard” version of LISP 2. GTL stands for Georgia Tech Language. It is an extension of the Burroughs B 5500 Algol language, and its implementation extends the Burroughs Algol compiler. There is a new data type, SYMBOL, whose value can be an atomic symbol, a number, or a dotted pair. There is a garbage collector, and a way to save and restore memory using the file system. GTL was designed by Martin Alexander at the Georgia Institute of Technology between 1968 and 1969. The source code is available as part of the Burroughs CUBE library, version 13, and the manual is available via bitsavers.org; see here for details.
]]>https://mcjones.org/dustydecks/archives/2018/06/04/1001/feed/0The LISP 2 Projecthttps://mcjones.org/dustydecks/archives/2018/01/31/981/
https://mcjones.org/dustydecks/archives/2018/01/31/981/#respondThu, 01 Feb 2018 03:18:00 +0000http://www.mcjones.org/dustydecks/?p=981Continue reading "The LISP 2 Project"]]>“The LISP 2 Project” appears in the October-December 2017 issue of IEEE Annals of the History of Computing (open access).

I first heard about LISP 2 around 1971, from a 1966 conference paper included in the reading for a U.C. Berkeley seminar on advanced programming languages. The goal of LISP 2 was to combine the strengths of numerically-oriented languages such as ALGOL and FORTRAN with the symbolic capabilities of LISP. The paper described the language and its implementation at some length, but by 1971 it was pretty clear that LISP 2 had not caught on; instead, the original LISP 1.5 had spawned a variety of dialects such as BBN-LISP, MACLISP, and Stanford LISP 1.6.

In 2005 I began a project to archive LISP history and kept encountering people who’d been involved with LISP 2, including Paul Abrahams, Jeff Barnett, Lowell Hawkinson, Michael Levin, Clark Weissman, Fred Blair, Warren Teitelman, and Danny Bobrow. By 2010 I had been able to scan LISP 2 documents and source code belonging to Barnett, Herbert Stoyan, and Clark Weissman. In 2012, after writing about Hawkinson and others in an extended blog post “Harold V. McIntosh and his students: Lisp escapes MIT,” I decided to try to tell the story of the LISP 2 project, where so many interesting people’s paths had crossed. My sources included original project documents as well as telephone and email interviews with participants, and several participants were kind enough to provide feedback on multiple drafts. I let the article sit in limbo for five years, but last year after I published another anecdote in the Annals, editor Dave Walden encouraged me to submit this one.

On December 28, 2017, as the article was about to go to press, Lowell Hawkinson died suddenly from an accident.

]]>https://mcjones.org/dustydecks/archives/2018/01/31/981/feed/0Lowell Hawkinson, 1943 – 2018https://mcjones.org/dustydecks/archives/2018/01/31/985/
https://mcjones.org/dustydecks/archives/2018/01/31/985/#respondThu, 01 Feb 2018 03:14:43 +0000http://www.mcjones.org/dustydecks/?p=985Continue reading "Lowell Hawkinson, 1943 – 2018"]]>Lowell Hawkinson passed away at the age of 74 on December 28, 2017 as a result of an accident. Lowell was a pioneer in LISP implementation and artificial intelligence. He co-founded Gensym Corporation in 1986 and served as its CEO through 2006. This obituary gives more details of his life and accomplishments.

I first got in touch with Lowell in 2010 because of my interest in archiving LISP history. We exchanged emails (and had one phone conversation), and over the years I wrote several blog posts and a journal article about work involving him:

Although my interactions with Lowell were brief, his kindness and modesty were manifest. He will be deeply missed by his family and friends.

]]>https://mcjones.org/dustydecks/archives/2018/01/31/985/feed/0In Search of the Original Fortran Compilerhttps://mcjones.org/dustydecks/archives/2017/07/14/968/
https://mcjones.org/dustydecks/archives/2017/07/14/968/#respondSat, 15 Jul 2017 03:17:19 +0000http://www.mcjones.org/dustydecks/?p=968Continue reading "In Search of the Original Fortran Compiler"]]>“In Search of the Original Fortran Compiler” appears in the April-June 2017 issue of IEEE Annals of the History of Computing. If that link doesn’t work, you can read my final submitted version here.

I wrote the article to chronicle the search I began in late 2003 to find the source code for the original FORTRAN compiler for the IBM 704. Much of the search was documented right here on this Dusty Decks blog, which I created in July 2004 as a sort of advertisement.

I’d like to thank Burt Grad for encouraging me to write the article. Burt is a friend who began working on computer software in 1954 and hasn’t stopped — for example, see here and here and here and here.

]]>https://mcjones.org/dustydecks/archives/2017/07/14/968/feed/0Miscellaneous Lisp updateshttps://mcjones.org/dustydecks/archives/2017/01/06/958/
https://mcjones.org/dustydecks/archives/2017/01/06/958/#respondFri, 06 Jan 2017 17:48:57 +0000http://www.mcjones.org/dustydecks/?p=958Continue reading "Miscellaneous Lisp updates"]]>Recently I made some long-delayed updates to History of LISP. In the Lisp I/1.5 for IBM 704, 709, 7090 section, I added links to the excellent work by Andru Livisi (here) and Dave Pitts (here) for running LISP on emulators.

]]>https://mcjones.org/dustydecks/archives/2017/01/06/958/feed/0New Japanese edition of Elements of Programminghttps://mcjones.org/dustydecks/archives/2016/01/01/874/
https://mcjones.org/dustydecks/archives/2016/01/01/874/#respondSat, 02 Jan 2016 00:31:38 +0000http://www.mcjones.org/dustydecks/?p=874Continue reading "New Japanese edition of Elements of Programming"]]>Elements of Programming, second Japanese editionThe original Japanese translation of Elements of Programming went out of print. But Yoshiki Shibata, the translator, proposed to Tokyo Denki University Press that they publish a new edition, and they agreed. It is available via Amazon.jp, and joins the English, Russian, Chinese, and Korean editions.

We wrote a special preface for this edition:

To our Japanese readers:

We are very grateful to our publisher and our translator Yoshiki Shibata for this opportunity to address our Japanese readers.

This book is in the spirit of Japanese esthetics: it tries to say as much as possible in as few words as necessary. We could not reduce it to 17 sounds like a traditional haiku, but we were inspired with its minimalist approach. The book does not have much fat. We actually hope that it does not have any fat at all. We tried to make every word to matter.

We grew up when Japanese engineering was beginning to revolutionize the world with cars that did not break and television sets that never needed repairs. Our hope is that our approach to software will enable programmers to produce artifacts as solid as those products. Japanese engineers changed the experience of consumers from needing to know about cars, or, at least, knowing a good mechanic, to assuming that the vehicle always runs. We hope that the software industry will become as predictable as the automotive industry and software will be produced by competent engineers and not by inspired artist-programmers.

Our book is just a starting point; most work to industrialize software development is in the future. We hope that readers of this book will bring this future closer to reality.

We would like to thank Yoshiki Shibata not only for his very careful translation, but also for finding several mistakes in the original.

Harold V. McIntosh died November 30, 2015 in Puebla, Mexico. He was an American mathematician who became interested in what is now known as computer algebra to solve problems in physics, leading to his early adoption of the programming language LISP and to his design of the languages CONVERT (in collaboration with Adolfo Guzmán) and REC. His early education and employment was in the United States, but he spent the last 50+ years in Mexico, and received a Ph.D. in Quantum Chemistry at the University of Uppsala in 1972.

McIntosh was born in Colorado in 1929, the oldest of four sons of Charles Roy and Lillian (Martin) McIntosh. He attended Brighton High School in Brighton, near Denver. In 1949 he received a Bachelor of Science in physics from the Colorado Agricultural and Mechanical College, and in 1952 he received a Master of Science in mathematics from Cornell University. He did further graduate studies at Cornell and Brandeis, but stopped before receiving a Ph.D. to take a job at the Aberdeen Proving Ground. Two years later, he moved to RIAS (Research Institute for Advanced Studies), a division of the Glenn L. Martin Company. Around 1962 he accepted a position in the Physics and Astronomy department and the Quantum Theory Project at the University of Florida. After two years at the University of Florida, McIntosh accepted an offer at CENAC (Centro Nacional de Calculo, Instituto Politecnico Nacional) in Mexico. Over the next years, McIntosh worked in various positions in Mexico at Instituto Politecnico Nacional, Instituto Nacional de Energía Nuclear, and, from 1975 on, Universidad Autónoma de Puebla.

McIntosh was widely regarded for his research, writing and teaching; for details, see Gerardo Cisneros-S.: “La computación en México y la influencia de H. V. McIntosh en su desarrollo” (PDF). He organized several special summer programs in the early 1960s that introduced a number of students to higher mathematics and computer programming (see here for example). He also had a lifelong interest in flexagons, which he shared with his students. A symposium in his honor was held a month before he died.

]]>https://mcjones.org/dustydecks/archives/2015/12/02/845/feed/0L. Peter Deutsch’s PIVOT program verification systemhttps://mcjones.org/dustydecks/archives/2015/05/14/810/
https://mcjones.org/dustydecks/archives/2015/05/14/810/#respondThu, 14 May 2015 20:55:04 +0000http://www.mcjones.org/dustydecks/?p=810Continue reading "L. Peter Deutsch’s PIVOT program verification system"]]>PIVOT, the program verification system written in BBN-Lisp by L. Peter Deutsch and described in his PhD thesis, “An interactive program verifier” is a recent addition to the Software Preservation Group web site.

Deutsch is a computer scientist who made important contributions to interactive implementations of Lisp and Smalltalk. While he was in high school, he implemented the first interactive Lisp interpreter, running on a DEC PDP-1 computer. While still in high school, he worked with Calvin Mooers on the design of TRAC, and implemented the language on a PDP-1 at BBN. Then Deutsch enrolled at the University of California at Berkeley, where he soon joined Project Genie, one of the earliest timesharing systems. Meanwhile, at BBN, Deutsch’s original PDP-1 Lisp became the “conceptual predecessor” of BBN-Lisp, running first on the PDP-1, then the SDS-940 (running the Project Genie timesharing system), and finally the PDP-10 running BBN’s own TENEX. After several of the BBN-Lisp creators, including Deutsch, moved to Xerox PARC, BBN-Lisp became INTERLISP. By this time, Deutsch had received his bachelor’s degree at Berkeley, and with other Project Genie alumni had co-founded Berkeley Computer Corporation, which built a large timeshared computer (the BCC-500) but then went bankrupt. While working at PARC, Deutsch also attended graduate school at Berkeley, carrying out the research on program verification that produced the PIVOT system.

Deutsch was kind enough to donate his only source listing of PIVOT to the Computer History Museum (Lot number X7485.2015), and to allow scans of the listing and his thesis to be posted on the SPG web site.

]]>https://mcjones.org/dustydecks/archives/2015/05/14/810/feed/0Oral history of Bjarne Stroustruphttps://mcjones.org/dustydecks/archives/2015/04/06/799/
https://mcjones.org/dustydecks/archives/2015/04/06/799/#commentsTue, 07 Apr 2015 01:27:23 +0000http://www.mcjones.org/dustydecks/?p=799Continue reading "Oral history of Bjarne Stroustrup"]]>Update 5/14/2015:Here is a short video that was made for the Fellow Award Ceremony.

Update 4/9/2015: A video of the interview is now available. It’s searchable via the synchronized transcript.

Programming languages have emerged over the last fifty or so years as one of the most important tools allowing humans to convert computers from theoretical curiosities to the foundation of a new era. By inventing C++ and working tirelessly to evolve, implement, standardize, and propagate it, Bjarne has provided a foundation for software development across the gamut from systems to applications, embedded to desktop to server, commercial to scientific, across CPUs and operating systems.

C was the first systems programming language to successfully abstract the machine model of modern computers. It contained a simple but expressive set of built-in types and structuring methods (structs, arrays, and pointers) allowing efficient access to both the processor and the memory. C++ preserves C’s core model, but adds abstraction mechanisms allowing programmers to maintain efficiency and control while extending the set of types and structures.

While several of the individual ideas in C++ occurred in earlier research or programming languages, Bjarne has synthesized them into an industrial-strength language, making them available to production programmers in an coherent language. These ideas include type safety, abstract data types, inheritance, parametric polymorphism, exception handling, and more.

In addition to its synthesis of earlier paradigms, C++ pioneered a thorough and robust implementation of templates and overloading. This has enabled the field of generic programming to advance from early research to sufficient maturity for inclusion in the C++ standard library in the form of STL. Additional generic libraries for graphs, matrix algebra, image processing, and other areas are available from other sources such as Boost.

By combining efficiency and powerful abstraction mechanisms in a single language, and by achieving ubiquity across machines and operating systems, C++ has replaced a variety of more specialized languages such as C, Ada, Smalltalk, and even Fortran. Programmers need to learn fewer languages; platform providers need to invest in fewer compilers. Even newer languages such as Java and C# are clearly influenced by the design of C++.

C++ has been the major focus of Bjarne’s career, and he has had unprecedented success at incremental development of C++, keeping it stable enough for use by real programmers while gradually evolving the language to serve the broadest possible audience. As he evolved the language, Bjarne took on many additional roles in order to make C++ successful: author (books, papers, articles, lectures, and more), teacher, standardization leader, and marketing person.

Bjarne started working on C with Classes, a C++ precursor, in 1979; the first commercial release of C++ was in 1985; the first standard was in 1998, and a major revision was completed in 2011. C++ was mature enough by 1993 to be included in the second History of Programming Languages conference, and a follow-on paper focusing on standardization appeared in the third HOPL conference in 2007.

I hope you enjoy reading the oral history as much as I did interviewing Bjarne.

It’s been almost a year since I posted to this blog, but I haven’t been completely inactive. This week, as part of its Software Gems: The Computer History Museum Historical Source Code Series, the Computer History Museum released a set of files archived in the 1970s and early 1980s from the Xerox Alto file servers at Xerox PARC. The files include source code, executables, documents, fonts, and other files.

This release has been a long time in the making. The files were originally archived to 9-track magnetic tape, but around 1991 they were transferred to 8mm tape cartridges. Around 2003, before he joined the Computer History Museum, Al Kossow, working under a Nondisclosure Agreement with PARC, transferred the 8mm tapes to DVDs, and sifted through the entire archive looking for files specifically related to the Alto — the archive had included files from many other projects over several decades. After many years of discussion, and the involvement of a number of people inside and outside of PARC, an agreement with CHM was finally signed in February 2011, and a CD with the Alto files that Al had located was given to CHM.

In August of 2013, I asked Len Shustek what had become of the files, and he suggested I write a blog post about them. So I talked to Al (now CHM software curator), who gave me a copy of the files. It turns out they were images of the tape records written by a Cedar Mesa program called the Archivist. Luckily, when the 9-track tapes were transferred to 8mm tapes, a file called rosetta.tar containing the Archivist source code plus some documentation was included on each tape. Once I obtained a copy of rosetta.tar I was able to write a program that “dearchived” the tape records, recreating a set of file directories. To make the files easier to view over the web, I added code to create a static web site allowing the files to be browsed, including translations from Bravo format to HTML and Press format to PDF. (Bravo was the first WYSIWYG word processor, and Press was a device-independent print-file format.)

There are 14680 files in all, of which 8598 are distinct. They include the Alto operating system; BCPL, Mesa, and (portions of the) Smalltalk programming environments; applications such as Bravo, Draw, and the Laurel email client; fonts and printing software (PARC had the first laser printers); and server software (including the IFS file server and the Grapevine distributed mail and name server).

Although not many people ever used an Alto, it had a huge influence on the hardware and software we use today, so I am very pleased that this software is now available for study.

The blog post Len invited me to write is here. The archive itself is here, but I recommend starting with this walk-through of the archive describing what is there and who wrote the various programs. More detail about the archive (provenance, naming conventions, file types, etc.) is available here.

]]>https://mcjones.org/dustydecks/archives/2014/10/24/784/feed/6Dr. John E. L. Peck, 1918-2013https://mcjones.org/dustydecks/archives/2013/11/20/676/
https://mcjones.org/dustydecks/archives/2013/11/20/676/#respondThu, 21 Nov 2013 01:52:45 +0000http://www.mcjones.org/dustydecks/?p=676Continue reading "Dr. John E. L. Peck, 1918-2013"]]>Dr. John E. L. Peck (1918-2013)Dr. John E. L. Peck, whose work on ALGOL68 was described in a recent post, passed away on November 6, 2013. His family has provided this obituary:

John, born August 14, 1918 in Pietermaritzburg, South Africa, passed away peacefully with his family by his side on November 6, 2013. He is predeceased by his wife Dornacilla of 61 years, and lovingly remembered by his sons, Edward (Phyllis) and Nigel (Susan); his twin daughters Lenny (George) and Gwenda; his sister Gwenyth; grandchildren Justin (Kristina), Linstead (Randi), Shannon, Tanya and Vernon; great-grandson Isaac; nieces and nephews, Elizabeth, Brian, Richard, Louise, Deborah, Sheryl, Ross, Janene, Randa, Dahl and Fraser; relatives, good friends and colleagues from around the world. John was the first Head of the University of Calgary Mathematics Dept. and founded UBC’s Department of Computer Science – his contributions to computer science were significant internationally. He was a key member of the international community that pioneered the field of Computer Science beginning in the early 60s. He was an avid outdoorsman who enjoyed alpine climbing, skiing and cycle touring. He also had a strong love of music playing pipe organ, piano and classical recorder. He enjoyed a full and rich life and will be greatly missed. A Celebration of his Life will be held Saturday, December 7, 2013 at 10:00am at Victory Memorial Park Funeral Centre, 14831 28th Avenue, Surrey, BC. In lieu of flowers, please consider making a donation to the charity of your choice.

]]>https://mcjones.org/dustydecks/archives/2013/11/20/676/feed/0ALGOL 68: Implementation and morehttps://mcjones.org/dustydecks/archives/2013/08/24/662/
https://mcjones.org/dustydecks/archives/2013/08/24/662/#respondSat, 24 Aug 2013 23:41:30 +0000http://www.mcjones.org/dustydecks/?p=662Continue reading "ALGOL 68: Implementation and more"]]>John E. L. Peck joined the ALGOL 68 design project in 1966, was a coauthor of the report, edited the proceedings of the 1970 Munich implementation conference, hosted meetings that laid the foundations for the revised report, and chaired IFIP Working Group 2.1 from 1975 to 1978. Recently his son Edward Peck contacted me to say that he had come across a set of ALGOL 68-related documents in his father’s papers, and wondered if they would be appropriate for the ALGOL 68 section of the History of ALGOL web site. That led to some valuable additions:

I’d like to thank Edward Peck very much for making these documents available and for careful work scanning them.

]]>https://mcjones.org/dustydecks/archives/2013/08/24/662/feed/0Korean edition of Elements of Programminghttps://mcjones.org/dustydecks/archives/2013/02/14/644/
https://mcjones.org/dustydecks/archives/2013/02/14/644/#respondThu, 14 Feb 2013 23:09:14 +0000http://www.mcjones.org/dustydecks/?p=644Continue reading "Korean edition of Elements of Programming"]]>In addition to the English, Japanese, Russian, and Chinese editions, Elements of Programming is now available in a Korean edition published by Pearson Education Korea and available from Kyobo Book Centre. Five editions, five scripts.

P.S. I can’t find a listing for the book at www.pearson.co.kr; I will update this post and our book website if I hear of one.

]]>https://mcjones.org/dustydecks/archives/2013/02/14/644/feed/0Algol 68: Informal Introduction and morehttps://mcjones.org/dustydecks/archives/2012/09/23/619/
https://mcjones.org/dustydecks/archives/2012/09/23/619/#commentsMon, 24 Sep 2012 01:54:56 +0000http://www.mcjones.org/dustydecks/?p=619Continue reading "Algol 68: Informal Introduction and more"]]>Several years ago I began an archival collection for the Algol family of programming languages: Algol 58 (originally known as the International Algorithmic Language), Algol 60, and Algol 68. I began looking for implementations of Algol 58 and Algol 60. Since then I’ve also found information (including, in some cases, source code), for many Algol 68 implementations.

I’d like to announce the return of a very useful Algol 68 resource: a scanned copy of Informal Introduction to Algol 68, posted by permission of coauthor Charles H. Lindsey and copyright holder IFIP. This is the revised 1980 reprint of the second (“completely revised”) edition of 1977. For convenience, I’ve also posted separate files containing the large fold-out Table of Contents and the appendix of Syntax Charts.

This book, together with Marcel van der Veer’s modern Algol 68 Genie implementation and the extensive documentation accompanying it (including a hypertext version of the Revised Report) provide an excellent way to study Algol 68.

In addition to the above-mentioned, a number of other people have contributed to the overall Algol archive project. I’d like to single out Neville Dempsey for his dedication to spreading knowledge of and appreciation for Algol 68.

]]>https://mcjones.org/dustydecks/archives/2012/09/23/619/feed/450th Anniversary of LISP 1.5 Programmer’s Manualhttps://mcjones.org/dustydecks/archives/2012/08/29/590/
https://mcjones.org/dustydecks/archives/2012/08/29/590/#respondThu, 30 Aug 2012 03:10:10 +0000http://www.mcjones.org/dustydecks/?p=590Continue reading "50th Anniversary of LISP 1.5 Programmer’s Manual"]]>
I just noticed that August 17 was the 50th anniversary of the LISP 1.5 Programmer’s Manual by John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I. Levin. On that day in 1962 it was published as a bound report of the Computation Center and Research Laboratory of Electronics of the Massachusetts Institute of Technology. It was also published by MIT Press — perhaps simultaneously — and is still in print. A second edition was released in 1965; the only difference that I see comparing tables of contents is the addition of Appendix I: LISP for SHARE distribution.

This was of course the first book on LISP. It is a reference manual rather than a textbook, but many people managed to learn LISP from it, and a number of people managed to implement LISP from it. Today ACM’s Digital Library lists 327 citations for it, and Google lists about 23,900 hits. I’m pleased to say that #1 on Google is the authorized PDF at my History of LISP archive at the Computer History Museum.

Through the generosity of several people, the History of LISP archive includes not only the book but also several versions of the underlying source code:

If you’re resourceful and you’d like to actually run the system described in this book, you don’t need an IBM 7090 or a time machine; the SIMH simulator package and the files and information here are sufficient; scroll down until you find “Running Lisp 1.5 in the SIMH IBM 7094 emulator.”

]]>https://mcjones.org/dustydecks/archives/2012/08/29/590/feed/0Harold V. McIntosh and his students: Lisp escapes MIThttps://mcjones.org/dustydecks/archives/2012/07/06/239/
https://mcjones.org/dustydecks/archives/2012/07/06/239/#commentsFri, 06 Jul 2012 16:19:50 +0000http://www.mcjones.org/dustydecks/?p=239Continue reading "Harold V. McIntosh and his students: Lisp escapes MIT"]]>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.

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.

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.

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.

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.”

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.

]]>https://mcjones.org/dustydecks/archives/2012/07/06/239/feed/5Remembering Jim Grayhttps://mcjones.org/dustydecks/archives/2012/05/18/496/
https://mcjones.org/dustydecks/archives/2012/05/18/496/#respondFri, 18 May 2012 17:07:47 +0000http://www.mcjones.org/dustydecks/?p=496Continue reading "Remembering Jim Gray"]]>Jim Gray’s professional contributions to the theory and practice of transactions, databases, and scientific applications of large databases, coupled with his teaching, mentoring, and warm friendships made a tremendous impact on the world. When he failed to return from sailing his 40-foot sloop Tenacious around the Farallon Islands on January 28, 2007, it was a devastating blow to family, friends, and colleagues alike. Despite a series of extremely thorough searches by the Coast Guard, by his friends, and by his family, no trace of him or his boat were ever found, which meant he could not be declared legally dead at that time. The ambiguous loss suffered by his wife and family meant his disappearance was especially difficult to recover from. After the legally-mandated five-year waiting period, a court recently granted a petition by his wife Donna Carnes to have Jim declared dead as of January 28, 2012. As Donna indicates in this NY Timesinterview, the waiting followed by the court order have led to a sense of closure for her.

I recently wrote a summary of Jim’s life and career for the updated ACM Turing Award web site; it includes links to related articles from the 2008 Tribute held for him at U.C. Berkeley and also photographs supplied by Donna.

Here I’ll note a few of my personal memories of working with Jim, who I met at the University of California in the late 1960s, when he was a computer science graduate student, and I was an engineering undergraduate and part-time employee of the campus computer center. Jim served as an informal advisor to me on course work, and he was also my manager for a time on the CAL Timesharing System project. Jim was a knowledgeable, patient and enthusiastic advisor. There were few boundaries between Jim’s professional and social life. I will never forget going walnut picking with Jim, who stood on the roof of his VW bus to reach the walnuts, and then easily repaired the dent in the roof by pushing upward from below.

Jim and I worked together again a few years later at IBM San Jose Research (now IBM Almaden). After working with John Backus (whom Jim had introduced me to) on functional programming for about 15 months, I joined Jim on the System R team. By then Jim was well into his work on the transaction abstraction — creating a unified approach to the interrelated problems of concurrency control and crash recovery — which led to his 1998 ACM Turing Award. I took over some of the transaction management code, designed the crash recovery component, and wrote a multiprocess debugger which we used to test and debug the lock manager. As always, Jim was an enthusiastic and generous collaborator; I’m very proud of being a coauthor with him and six of our System R colleagues of the paper “The Recovery Manager of the System R Database Manager”.

I don’t suppose I’ll ever stop encountering subjects causing me to say to myself, “If only I could talk to Jim about this.”

]]>https://mcjones.org/dustydecks/archives/2012/05/18/496/feed/0The First International LISP Conference (1963)https://mcjones.org/dustydecks/archives/2012/04/23/456/
https://mcjones.org/dustydecks/archives/2012/04/23/456/#commentsMon, 23 Apr 2012 23:44:36 +0000http://www.mcjones.org/dustydecks/?p=456Continue reading "The First International LISP Conference (1963)"]]>If you thought the 1980 LISP Conference was the first Lisp conference, you were wrong. The 1980 conference was organized by Ruth E. Davis and John R. Allen and was held at Stanford University, with sponsorship by Stanford, Santa Clara University, and The LISP Company. It led to the biennial ACM-sponsored Lisp and Functional Programming Conference. But more than 16 years earlier, the First International LISP Conference was held at Universidad Nacional Autónoma de México (UNAM) in Mexico City, from December 30 to January 4, 1964. No proceedings was published for the conference, but I have been able to assemble some information about it.

Sergio F. Beltrán founded the Centro de Calculo at UNAM in the late 1950s, starting with an IBM 650. He organized a series of annual conferences on applications of computers, and for the third conference he thought it would be interesting to hear about the programming language Lisp. Robert Yates was an American undergraduate enrolled at Johns Hopkins but spending the 1963-1964 academic year at UNAM. In a recent email, Yates told me:

[Beltrán] asked me to write letters to McCarthy, Perlis and Newell inviting them to Mexico City in December 1963. [Harold V.] McIntosh was living in Mexico at that time. McCarthy accepted and brought Marvin Minsky and a group of graduate students including Steve Russell and [Tim] Hart. The conference lasted about a week; there were about 12-15 presentations given. For me it was great because of the opportunity to meet McCarthy, Minsky and Russell.

John McCarthy was to give a talk on “The LISP 2 compiler”. LISP 2 was an ambitious but ill-fated project getting started around this time, which deserves its own posting. Suffice it to say it was completely compiler-based; expressions could still be typed in from a READ-EVAL-PRINT loop, but were compiled in an appropriate environment, executed, and discarded. See the LISP 2 section of the CHM History of LISP web site.

Beltrán was interested in applications of computers, and the applications at this first Lisp conference mostly involved what is now known as computer algebra: solving equations algebraically (symbolically) rather than numerically. This topic included:

Victor Dulock (LISP. Applications to Symmetric groups, Dirac groups and Lie algebras), Lowell Hawkinson (Data structures and arrangements), Billy S. Thomas (Use of arrays in LISP. Group theory programs), and Robert Yates (LISP. Group analysis programs. Lambda Lisp. Compiler for a variable word machine (Gamma 30 Scientific)) were colleagues or students of Harold V. McIntosh (The use of operator predicates in LISP). McIntosh was a mathematical physicist who began his career at RIAS, a research subsidiary of Martin Aircraft in Baltimore, Maryland, and then spent 1962-1963 at the Quantum Theory Project at the University of Florida before accepting a position at Centro Nacional de Calculo, Instituto Politecnico Nacional, Mexico. A flavor of the talks from this group may be obtained from the documents in the MBLISP section of the History of Lisp web site, and also perhaps from this later paper: Adarsh Deepak, Victor Dulock, Billy S. Thomas and Harold V. McIntosh: Symmetry Adapted Functions Belonging to the Dirac Groups. International Journal of Quantum Chemistry, 3 445-483 (1969).

There were a few other speakers in Beltrán’s preliminary list:

Joseph Weizenbaum: Open ended compilation. Weizenbaum had been at General Electric for a number of years, and had published papers on list processing including his Symmetric List Processor (SLIP) system. In 1964, he accepted a position at MIT.

Joseph Williams: A Lisp page plotter.

Verhovsky: Fns analoguous and similar.

I’ll update this post if I hear more from any of the attendees of this historic conference.

Update 5/12/2017: I contacted Robert Yates in conjunction with an article I’m writing about LISP 2, and he said he doesn’t remember what McCarthy talked about, but he’s certain it was not LISP 2 – despite the preliminary agenda, McCarthy did not give a talk on the LISP 2 compiler. Robert said, “My talk was on R-lists – a clever way that McIntosh came up with to save and restore variable values to and from the stack.”

Update 5/1/2012: Tony Hearn notes that the handwriting on the preliminary list of participants and papers is his own; he probably gave it to Herbert Stoyan one of the times he visited Stoyan in Dresden in the 1970s.

]]>https://mcjones.org/dustydecks/archives/2012/04/23/456/feed/1Chinese translation of Elements of Programminghttps://mcjones.org/dustydecks/archives/2012/02/17/446/
https://mcjones.org/dustydecks/archives/2012/02/17/446/#respondSat, 18 Feb 2012 00:05:30 +0000http://www.mcjones.org/dustydecks/?p=446In addition to the English, Japanese, and Russian editions, Elements of Programming is now available in a Chinese edition translated by Professor Qiu Zongyan (裘宗燕) of Peking University and published by China Machine Press. It’s interesting that every translation has been in a different script.

]]>https://mcjones.org/dustydecks/archives/2012/02/17/446/feed/0More ALGOL history papershttps://mcjones.org/dustydecks/archives/2012/01/02/441/
https://mcjones.org/dustydecks/archives/2012/01/02/441/#respondTue, 03 Jan 2012 03:13:30 +0000http://www.mcjones.org/dustydecks/?p=441Continue reading "More ALGOL history papers"]]>As the ALGOL programming language enters its sixth decade, its interest to historians seems to be increasing. I’ve recently added additional citations to the “Papers on the history of ALGOL” section of the History of ALGOL web site: