The 14-Year-Old Who Gave Lisp a Home
Peter Deutsch began programming at the age of 11 — in the 1950s. By the time he was 14, he’d gotten hold of an early Lisp manual and became the first to implement Lisp on a PDP-1: Digital’s first minicomputer, made famous for being the platform on which Steve Russell developed the legendary video game Spacewar!. Peter’s father worked at MIT, and Peter simply followed him to work.
As mentioned before, Digital’s PDP line was enormously influential. Unix was born on a PDP-11, and its successor, the VAX, came with the VMS operating system — a system that later inspired Windows NT, and by extension, modern Windows. Ironically, early VAX machines were bootstrapped using PDP-11s and were backward compatible with them. VAX stands for Virtual Address eXtension and was a 32-bit machine. One might wonder: would Lisp have survived without PDPs? And what about all the languages that inherited Lisp’s ideas?
Steve Russell, by the way, also implemented the very first Lisp — on an IBM 704 mainframe — by writing the now-legendary eval
function. John McCarthy, Lisp’s creator, is said to have been surprised that it worked. He also coined the term Artificial Intelligence.
Peter finished his Lisp implementation by the time he was 17. Along the way, he also invented the REPL: Read-Eval-Print Loop — the interactive programming terminal we now take for granted in languages like Clojure. A REPL is nothing more than connecting the read
function (which reads a data structure) to eval
(which executes it), followed by print
(which shows the result), and repeating the cycle. Since Lisp code is data, this loop is trivially easy to implement and becomes a natural development environment.
I once won a small programming contest with this minimalist REPL implementation in Clojure:
(defmacro Loop [& body]
`(loop [] ~@body (recur)))
(-> (read) eval println Loop)
Peter later created the Just-In-Time compiler for the Smalltalk language. While its creator Alan Kay coined the term object-oriented programming while working in Lisp, Smalltalk isn’t technically the first OOP language — that honor goes to Simula, developed by Norwegian pioneers Dahl and Nygaard.
Still, Smalltalk was heavily influenced by Lisp and shipped with a graphical interactive IDE from the beginning — an expanded REPL, if you will. It was developed at Xerox PARC, the birthplace of graphical window systems and the Alto computer. Lisp and Smalltalk are perhaps the only systems where the environment evolves as it runs.
OOP went mainstream with C++, and Bjarne Stroustrup’s motivation was reportedly to make Simula (and later, Smalltalk) faster. But in doing so, he also reshaped the very idea of object orientation — to the point where Alan Kay has said he no longer recognizes the concept. Java and C#, both children of C++, share more of its lineage than Kay’s original vision.
If we go by Alan’s definition, I’d argue that the most object-oriented language might be Swedish: Erlang. In Erlang, systems evolve interactively by swapping out actors — or as we might as well call them, objects.
IBM took inspiration from Smalltalk’s environment and created VisualAge — a tool that later supported many languages. If I recall correctly, I once found myself annoyed, writing code in VisualAge without access to any source files — everything was stored in some kind of internal object database. VisualAge was later simplified, made open source, and today we know it as Eclipse.
Peter’s JIT compiler later inspired the HotSpot compiler in Java. The JVM now optimizes running code and dynamically replaces it with faster versions — a marvel of runtime self-improvement.
And as if that wasn’t enough, Peter Deutsch also created Ghostscript, the open-source software that still powers PDF and Postscript rendering on many systems.
A remarkable journey — and to think it all started with a Lisp manual and a PDP-1.