Simon's IPL-V version of Yngve's COMIT code running on Oregon's IPL interpreter on Kimpel's IBM 1620 emulator (say that 3 times fast!)

Mia Golec, Emily Davis (both of CMU), and I have been spelunking in Simon and Newell’s archives at CMU, with particular focus on IPL code that I might be able to reanimate. (You might recall that David Moews and I have previously reanimated various versions of the Logic Theorist.)

Until recently we had been using either Rob Storey’s B7090 emulator that happens to come with a binary IPL-V interpreter (GitHub - Bertoid1311/B7094 · GitHub), or modern interpreters that David Moews and I have written, in python and Lisp, respectively. (Remarkably, David built a python emulator for IPL-I, which was actually never run on hardware – it was a language invented by Newell and Simon specifically for the original Logic Theorist, and was hand simulated. That David actually made that version of LT work is in-and-of-itself a fascinating story, and we have a paper in press on that.)

Recently David came across the source of a complete 1963 IPL-V comterpreter for the IBM 1620 by Beyer and MacDonald from IBM and UOregon: IPL-V - University of Oregon - SPS Source Listing | Stanford Digital Repository

(Because the 1620 is so small, like java, the “comterpreter” compiles to runtime code in a first pass, then a run time is separately loaded for execution. The original IPL-V implementation that ran on the JOHNNIAC at RAND also compiled to what amount to runtime code, but you didn’t, as far as we know, have to separately load a runtime.)

I asked Paul Kimpel, who has built a really lovely javascript 1620 emulator (GitHub - pkimpel/retro-1620: Web-based emulator and operating environment for the IBM 1620 Model-2 computer system. · GitHub), whether he could figure out how to run it. Paul put in an unexpectedly ENORMOUS amount of effort (and I put in a comparatively tiny bit) and we got it running on his 1620, and ran several demo IPL-V programs, including an Ackermann function program that we have the coding sheets for signed by Newell himself!

(We haven’t tried running The Logic Theorist on the 1620. It’s probably too large, and since we have that already running on our modern interpreters, It took two years (of occasional time) to get it running on our modern interpreters. I’m unmotivated to fight what I expect to be an uphill battle with it.)

We thought this a crowning achievement…until yesterday!

As above Mia, Emily and I have been exploring possible reanimatable IPL code from Simon and Newell’s archives. I’m specifically after a version of GPS, and we’re getting warm, but along the way we’ve recovered several gems!

First, we came upon a remarkable complete listing of what is probably the world’s first AI-assisted coder, Simon’s “heuristic coder” (https://dl.acm.org/doi/pdf/10.1145/321186.321192) [In the paper he calls it a “compiler”, but the listing uses the term “coder”.] I’ve only just begun studying this fascinating find, which I intend to try to reanimate, but it’s 90 dense pages of IPL-V – larger than LT! So I expect that to take significant effort.

In case you’re curious:

https://drive.google.com/file/d/1LU4d2h89_yyjH4_h61HCuiVakXllupt4

But we also found a version of Victor Yngve(pronounced, “Ing-va”, I’m told)'s 1961 COMIT random sentence generator (https://aclanthology.org/1961.earlymt-1.4.pdf) which Herb Simon and his Daughter (Katherine) apparently translated to IPL-V in 1962. It’s actually very short, and we (being claude and I) got it running on Paul’s 1620 emulator, and it’s truly amazing to watch a 1962 IPL program running on a 1963 IPL compterpreter on a 1960s-era (emulated) computer! Note that in this stack the only part of that isn’t original is the javascript 1620 emulator!

Really worth seeing, and easy for you to do at home since Paul’s emulator runs entirely through the web!

Here’s a video that walks you through the process – if you just want to see it run, just skip to the second half of the video: https://youtu.be/Mfai7F6j3vE

And if you want to run it yourself, start here:

1 Like

Is there anything specific for IPL that it requires that prevents it from porting to different machines?
Had this been done say 5 years later, would a IBM 1130 worked just as well? It is shame that all
the early computer software developments where hampered by machines that had so little memory.

1 Like

Great adventure Jeff thanks for sharing!

1 Like

In fact, IPL was ported to dozens of machine. However, IPL was basically the assembly language for an imaginary Lisp machine (although it existed well before Lisp, and in fact was an explicit core influence on Lisp), and Lisp itself made IPL obsolete by the mid 1960s, so by the time the 1130 came around (which, BTW, was my first in-person machine!) IPL was essentially dead, so no one would have thought to do what you’re describing. Who wants to program in assembler (IPL) when you have an elegant compiled language (Lisp)?! :slight_smile:

1 Like

I checked on the web, and the IBM 1130 has a LISP, so porting IPL looks possible.:slight_smile:
The IBM 1130 was my first hands on computer, after a PDP-8, 20 years later than you.
(mind you only for a hour or two).
Ben.