Foreword by Brendan Eich
In April 1995 I joined Netscape in order to “add Scheme to the browser.” That recruiting bait from a month or two earlier immediately morphed into “do a scripting language that looks like Java.” Worse, because the negotiation to put Java in Netscape was underway, some at Netscape doubted that a “second language” was necessary. Others wanted to build something like PHP, an HTML templating language for a planned server-side offering called LiveWire.
So in 10 days in May 1995, I prototyped “Mocha,” the code name Marc Andreessen had chosen. Marc, Rick Schell (vice president of engineering at Netscape), and Bill Joy of Sun were the upper-management sponsors who supported my work against doubts about a “second language” after Java. (This is ironic since Java has all but disappeared in browsers, while JavaScript is dominant on the client side.)
To overcome all doubts, I needed a demo in 10 days. I worked day and night, and consequently made a few language-design mistakes (some recapitulating bad design paths in the evolution of LISP), but I met the deadline and did the demo.
People were amazed that I’d created a language compiler and runtime in less than two weeks, but I’d had a lot of practice over the decade since switching from a physics major in my third year to math/computer science. I had always loved formal language and automata theory. I’d built my own parsers and parser generators for fun. At Silicon Graphics, I built network-monitoring ...