Written by Peter Deutsch, then a then-high school student on a tiny 4K (admittedly, 4K 18-bit words) machine. Amazingly usable - and lives on in the Python REPL concept.
> Just one little story…I remember…The name Bob Hargraves [Robert F. “Bob” Hargraves, Jr. ʻ61] should come up somewhere in this business because he was the class I think of 1962, but he was a physics major at Dartmouth. He went on to get a Ph.D. in physics. He came back to Dartmouth as associate director of the computer center many years later. At any rate, he was one of those that worked on the LGP-30 that first summer and he devised a simple higher-level language program. By todayʼs standards, it was pretty crude, but it was FORTRAN-like, you know – sort of – in just six weeks.
> One student, without any prior background in computing, prepared a simple higher level language and language processor he called DART (Hargraves, 1959). Obviously influenced by FORTRAN, but wishing to avoid scanning general arithmetic expressions, he required parentheses around all binary operators and their operands. Hardly earth-shaking, but one conclusion was inescapable: a good undergraduate student could achieve what at that time was a professional-level accomplishment, namely, the design and writing of a compiler. This observation was not overlooked.
But at the same time Edgar T. Irons https://dl.acm.org/profile/81100268091/ is in town working on ALGOL syntax, and when Kemeny and Kurtz grab the wheel back they steer language development at Dartmouth towards more syntax (Kurtz assigns four undergraduates including Hargraves to implement ALGOL 58, resulting in ALGOL 30) and more lumpen, assembler-like semantics (Kemeny's DOPE https://en.wikipedia.org/wiki/Dartmouth_Oversimplified_Progr... in particular is a pseudo-assembler.) It was definitely DART that got Kurtz interested in implementing ALGOL on the LGP-30 in the first place though—see pp. 1-2 of the ALGOL 30 report ("ALGOL for the LGP-30"): https://people.csail.mit.edu/garland/publications/Reprints/1... : "It should be mentioned that our becoming involved in this project was a direct result of Hargraves’ having devised a complete language system (DART) during the summer of 1959."
But back to the point ... an interpreter (surely) for a high-level programming language relying on explicit parentheses, written in Dartmouth, in the summer of 1959? How much did Hargraves know about at that point about the IBM 704 implementation of LISP, finished by March 1959? To be sure, I doubt that DART was anything much like a full implementation of even LISP 1, but just the idea of doing a simple interpreter for FORTRAN-like nested mathematical expressions by requiring parentheses everywhere seems familiar. (McCarthy himself was still trying to do LISP as a FORTRAN extension as late as mid-1958 pjmlp↗
Another wrinkle was the hardware limitations of earlier 8 bit home computers that created the notion among a whole generation that BASIC was interpreted, and compilers came later, when it was the other way around.
The original Dartmouth BASIC would compile to machine code before execution.
Kind of a non sequitur: I bought "The Genius of Lisp"[0] and it is not what I thought (a book entirely devoted to the history of Lisp - from MIT to Common Lisp and then to Clojure). Would anyone recommend another book?
I was wrong - it was not Peter Deutsch who ported Eliza to Lisp, it was Bernie Cossell at BBN (one of the famous IMP Guys a few years later!). And it is here:
9 comments
[ 1.2 ms ] story [ 26.3 ms ] threadOur PiDP-1 simulator on github lets you try it out on any Linux machine (not just a Raspberry PI): https://github.com/obsolescence/pidp1
Posting this in the hope that someone will feel triggered to backport Eliza, it was done in the 1960s but it's been lost :-)
> Just one little story…I remember…The name Bob Hargraves [Robert F. “Bob” Hargraves, Jr. ʻ61] should come up somewhere in this business because he was the class I think of 1962, but he was a physics major at Dartmouth. He went on to get a Ph.D. in physics. He came back to Dartmouth as associate director of the computer center many years later. At any rate, he was one of those that worked on the LGP-30 that first summer and he devised a simple higher-level language program. By todayʼs standards, it was pretty crude, but it was FORTRAN-like, you know – sort of – in just six weeks.
The HOPL BASIC paper https://dl.acm.org/doi/pdf/10.1145/800025.1198404 has more about this language:
> One student, without any prior background in computing, prepared a simple higher level language and language processor he called DART (Hargraves, 1959). Obviously influenced by FORTRAN, but wishing to avoid scanning general arithmetic expressions, he required parentheses around all binary operators and their operands. Hardly earth-shaking, but one conclusion was inescapable: a good undergraduate student could achieve what at that time was a professional-level accomplishment, namely, the design and writing of a compiler. This observation was not overlooked.
But at the same time Edgar T. Irons https://dl.acm.org/profile/81100268091/ is in town working on ALGOL syntax, and when Kemeny and Kurtz grab the wheel back they steer language development at Dartmouth towards more syntax (Kurtz assigns four undergraduates including Hargraves to implement ALGOL 58, resulting in ALGOL 30) and more lumpen, assembler-like semantics (Kemeny's DOPE https://en.wikipedia.org/wiki/Dartmouth_Oversimplified_Progr... in particular is a pseudo-assembler.) It was definitely DART that got Kurtz interested in implementing ALGOL on the LGP-30 in the first place though—see pp. 1-2 of the ALGOL 30 report ("ALGOL for the LGP-30"): https://people.csail.mit.edu/garland/publications/Reprints/1... : "It should be mentioned that our becoming involved in this project was a direct result of Hargraves’ having devised a complete language system (DART) during the summer of 1959."
But back to the point ... an interpreter (surely) for a high-level programming language relying on explicit parentheses, written in Dartmouth, in the summer of 1959? How much did Hargraves know about at that point about the IBM 704 implementation of LISP, finished by March 1959? To be sure, I doubt that DART was anything much like a full implementation of even LISP 1, but just the idea of doing a simple interpreter for FORTRAN-like nested mathematical expressions by requiring parentheses everywhere seems familiar. (McCarthy himself was still trying to do LISP as a FORTRAN extension as late as mid-1958 pjmlp ↗ Another wrinkle was the hardware limitations of earlier 8 bit home computers that created the notion among a whole generation that BASIC was interpreted, and compilers came later, when it was the other way around.
The original Dartmouth BASIC would compile to machine code before execution.
[0]: https://www.amazon.com/Genius-Lisp-Cees-Groot/dp/1069886416/
https://github.com/jeffshrager/elizagen.org/tree/master/1966...
That makes a PDP-1 Lisp backport very tempting... amazing how ancient code comes back from presumed extinction.
But only if your language has tail recursion resolution!
But it appears to be valid in PDP-1 Lisp (though not in either Lisp 1.5 or modern Lisps). From https://s3data.computerhistory.org/pdp-1/DEC.pdp_1.1964.1026...
"Doing a CDR of an atom is permissible and will get the atom's property list. Doing a CAR of an atom may very easily wreck the system."