History and Acknowledgements |
GOO has greatly benefitted from the help of others. During the
winter of 2001, I briefly discussed the early design of Proto, a
Prototype-based precursor to GOO, with Paul Graham and his feedback
was very useful. From there, I bootstrapped the first version of
Proto for a seminar, called Advanced Topics in Dynamic Object-Oriented
Language Design and Compilation (6.894), that I cotaught with Greg
Sullivan and Kostas Arkoudas. The 6.894 students were very patient
and gave me many helpful suggestions that greatly improved Proto.
During and after the seminar, Greg Sullivan reviewed many ideas and
helped tremendously, including by writing the Emacs goo-mode.
James Knight was one of the 6.894 students and
became my MEng student after the course. He has helped in many many
ways including the writing of the save-image facility, the
speeding up of the runtime, and the improving of the non local exit
facility. Eric Kidd worked with me during the summer of 2001
implementing the module system, restarts, and the dependency tracking
system. During that summer I decided that a Prototype-based object
system was inadequate for the type system I was interested in
supporting and changed over to the present type-based system. I
presented my ideas on Proto at LL1 in the Fall of 2001. Many
stimulating conversations on the follow on LL1 discussion list inpired
me. In fact, during the course of defending Proto's form of
object-orientation on that list I came up with its current name, GOO,
and it stuck. Andrew Sutherland became my MEng student in the winter
of 2002, wrote a GOO SWIG [2] backend, and has provided
useful feedback on GOO's design. I also wish to thank Boehm, Demers,
and Weiser for writing the conservative GC upon which this initial
version of GOO is based. Finally, I would like to thank
Keith Playford for his continued guidance in language design and
implementation and for his ever present and rare sense of good taste.
History and Acknowledgements