IPL-V from 1957 - Information Processing Language v5

Here’s a language I hadn’t come across before. It seems to have good list-processing facilities and there were ideas of writing programs which could learn.

Sammet wrote: “A list processing system whose commands are similar in spirit to those of an assembly language, but for manipulating lists”

But it’s terribly low level - almost like a byte code or an assembly language. From the manual (300 page pdf), here’s “a complete program” - comments on the left, instructions on the right:

Newell, one of the inventors (Newell, Simon, and Shaw), wrote in 1963

IPL-V (Information Processing Language-V) is a programming language for list processing and symbol manipulation. It is the fifth of a series of programming languages that has developed as part of a research effort in artificial intelligence and simulation of cognitive processes. This research started in late 1954 at The RAND Corporation and Carnegie Institute of Technology

At that time, the language had been implemented on six machine types - it was a portable language.

The following systems exist currently (the persons named are currently responsible for maintenance) :
IBM 709/7090 Gloria Goldberg, Computer Sciences Dept., The RAND Corp., 1700 Main St., Santa Monica, Calif.
CDC 1604 Robert K. Lindsay and John H. Dauwalder, Computation Center, University of Texas, Austin, Texas.
Bendix G-20 Alan J. Perils, Computation Center, Carnegie Institute of Technology, Pittsburgh 13, Penn.
Philco 2000 Stuart Shaffer, System Development Corp., 2500 Colorado Ave., Santa Monica, Calif.
IBM 650 Lewis G. Creary, Computer Center, Wayne State University, Detroit 2, Mich.
Univac 1105 J.W. Hanson, Computer Center, University of North Carolina, Chapel Hill, N. C.

Portable doesn’t mean source-available, of course:

The published manual is a fairly adequate description of the system in the sense that versions of IPL have been coded exclusively from the manual as a specification. As far as I know, none of the machine systems has been flow-charted or documented in detail. This is undoubtedly deplorable, but it seems we must be content to live in a deplorable world.

Of special interest (to me!), there was a proposal to construct a hardware machine to execute IPL-V directly, for a tenfold performance improvement. See the 19 page report by Donald Hodges:
IPL-VC A COMPUTER SYSTEM HAVING THE IPL-V INSTRUCTION SET

The CDC-3600 has the following convenient features for converting it into an IPL-V hardware system (henceforth called IPL-VC):

  1. A fast (1½ microsecond cycle time), 64,000-word, random access memory .
  2. Ease of attachment of equipment directly to the memory.
  3. Working input-output equipment of all types.
  4. A high-speed conventional arithmetic unit, with the provision of one list-processing instruction already built in, which is all that is needed in the arithmetic unit itself.
  5. An IPL-V simulator program written for the CDC 1604, which is being converted to be suitable for the CDC-3600.

Hodges notes

The convenience of having a simulator, even on a hardware IPL-V machine, is obvious to an IPL-V programmer. The simulator programs contain excellent tracing, dumping, and snapshot procedures.

Also

In arithmetic computers for the applications described here, it has been found convenient to define new programming languages which are classed as Symbol Manipulation Languages. To achieve a working machine obeying such languages, simulation programs of such machines have been written on conventional arithmetic computers. Five major languages have been developed, and these are reviewed in Refs. 4 and 5. They are COMIT, a system for helping in automatic translation (Ref. 6) and four general information-processing languages: LISP 1.5 (Refs. 7, 8, 9), FLP L (Ref. 10), IPL-V (Refs. 2, 11), and SLIP (Ref. 12). Although descriptions of the first two information languages exist, there is little published work involving their use . However, with IPL-V, not only the original designers of the language, but others have used the language as a working tool. The uses of the language are reviewed by A. Newell in Ref. 13.

Reference 13 is found online as a 41 page PDF:
Learning, Generality and Problem Solving, IFIP 62, North American Holland (1963).

There’s a short paper on a checkers (draughts) program here, and one on chess playing program here.

Edit: I see that Jack Copeland has the original IPL (not IPL-V) as a predecessor to LISP:

In 1960 John McCarthy combined elements of IPL with elements of the lambda calculus–a powerful logical apparatus dating from 1936–to produce the language that he called LISP (from LISt Processor). In the U.S., LISP remains the principal language for AI work.

(hat-tip to Chris/Baz for the initial pointer)

1 Like

Some early seminal AI systems were implemented in IPL such as Logic Theorist and GPS by Newell and Simon.

1 Like

Very interesting!
It seems very complicated. I have checked other PDFs of the main directory on bitsavers (where the chess example was from)

http://bitsavers.informatik.uni-stuttgart.de/pdf/rand/ipl/

It’s maybe better explained (and shorter and looking different) on these PDFs

P-954 Logic Theory Machine, illustration on page 7.
RM-3879 TIPL, list page 19
P-1817 Feigenbaum EPAM , list, pages 79, 82
"A code is a string of bits… J4 for 0 J3 for 1… thus in IPL-V the code for the letter A is…
RM-4320 LIPL page 9, better programming sheet with more symbol and link contents including alphanumeric text example
and page 12, assembly listing of a card deck

Also interesting: Simulation of Human Thinking.

And on the Logic Theory Machine PDFs there’s also programming of the JOHNNIAC computer mentioned as alternative.

1 Like

I just ran across IPL-V in Alan Kay’s The Early History of Smalltalk. In particular, he discusses a programming challenge given to Alan Newell, with which the gentleman struggled, and asserts that the reason was that his thinking was bound by his model of computation, which was informed by IPL-V. In particular, Kay says that his thinking (Lisp-informed) was much clearer and that he was able to produce a declarative solution very rapidly. His own solution (in "Landin’s LISP Syntax"O was:

oddsEvens(x) = append(odds(x), evens(x))

where odds(x) = if null(x) v null(tl(x)) then x
                   else hd(x) & odds(ttl(x))
where evens(x) = if null(x) v null(tl(x)) then nil
                    else odds(tl(x))

Which, in Common Lisp syntax, would read:

(defun oddsEvens (x) (append (odds x) (evens x)))
(defun odds (x) (if (or (null x) (null (cdr x))) x
                    (cons (car x) (odds (cddr x)))))
(defun evens (x) (if (or (null x) (null (cdr x))) nil
                     (odds (cdr x))))

I’m not sure what this says about IPL-V in reality, although Kay bemoans that in IPL-V “pointers are manipulated explicitly,” which tracks with @EdS’s observation that it is “terribly low level - almost like a byte code or an assembly language.”

1 Like

If you want to try IPL-V, it’s one of the languages on the
University of Maryland “Bamberger” IBSYS tape from Paul Pierce’s
Web site (via Richard Cornwell’s Web site). There’s a demo
included with Rob Storey’s “B7094” IBM 7090/7094 emulator
( GitHub - Bertoid1311/B7094 ).

On the initial demo script window, click “NEW! Try the University
of Maryland MAMOS system” and on the next screen “Run standard
IBSYS jobs using the Bamberger system”.

If you want to write your own programs (in any of the supported
languages – Fortran II, Fortran IV, Cobol, Algol 60,
Snobol, MAD, MADTRAN, OMNITAB, or IPL-V), consult the
manual.

2 Likes