Influences

"If I have seen further, it is by standing on the shoulders of giants."

— Sir Isaac Newton, letter to Robert Hooke, February 5, 1676

No software system can truly be said to be wholly original; like all creative works, computer programs exist only due to their historical antecedants and infleunces. Seax is greatly indebted to the work of many of computing's greatest pioneers, including Peter J. Landin; Tom Knight, David Moon, and Jack Holloway; Guy L. Steele, Jr and Gerald Sussman; and James Gosling. take a great deal of pride in drawing ideas and inspiration from the work of these brilliant researchers.

I will briefly enumerate some of the particular publications and software systems that have provided the greatest influence on Seax. In addition to providing credit where it is greatly deserved, highlighting these previous works is one of the most effective ways to teach the interested reader about Seax. The reader who is interested to use Seax as a tool, or to contribute to its ongoing development, would do well to consult some of these works, taking the ideas from the proverbial horse's mouth.

Landin's SECD Machine

Although Seax has a great deal of influences, both software and academic works, it owes its' entire existence to Peter J. Landin's visionary papers The Next 700 Programming Languages and The Mechanical Evaluation of Expressions.

In "The Next 700 Programming Languages", published in the _Communications of the ACM in 1966, Landin describes an unimplemented programming language he calles ISWIM, for 'If you See What I Mean'. While the Lisp-inspired ISWIM has never been implemented, it has been a major influence in the design of many modern functional languages.

In "The Mechanical Evaluation of Expressions", published in Computer Journal in 1964, Landin provides the first description of the SECD abstract machine, which he would later use to define the operational semantics of ISWIM. The machine described here forms the basis of the virtual machine at the core of the Seax runtime environment.

Also of great interest is Olivier Danvey's much more recent A Rational Deconstruction of Landin's SECD Machine, published in Basic Research In Computer Science in 2003; and Brian Graham's 1989 paper SECD: Design Issues and 1992 book The SECD Microprocessor: A Verification Case Study, both of which concern the implementation of the SECD machine as a hardware device.

Lambda: the Ultimate CPU Architecture

While not directly related to the SECD machine, something would be seriously amiss if I neglected to mention Sussman and Steele's Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode, MIT AI Memo No. 514. The very idea of functions as the core primitives of a hardware architecture can likely be traced back to this paper. All of Sussman and Steele's similarly-named papers are major sources of influence and motivation for Seax.

Also worthy of looking into are the MIT Lisp Machines built in the 1970s and 80s. These computers, which were designed to run Lisp programs language as efficiently as possible, used a stack-based CPU architecture called CADR, with many similarities to the SECD machine. The CADR computer architecture is described in MIT AI Memo No. 528, by Thomas F. Knight, Jr., David Moon, Jack Holloway, and Guy L. Steele, Jr.

The Lisp machines were very far ahead of their time, with the distinction of being among the earliest computers to boast high-resolution bitmapped graphics, window-based graphical user interfaces, mice, and automatic memory management. While these beautiful computers are no longer manufactured, hopefully the Seax VM will help to 'keep the torch alive' for functional-programming-based computer architectures.