Making pure object-oriented languages practical

In the past, object-oriented language designers and programmers have ken forced to choose between pure message passing and performance. Last year, our SELF system achieved close to half the speed of optimized C but suffered from impractically long compile times. Two new optimization techniques, deferred compilation of uncommon cases and non-backtracking splitting using path objects, have improved compilation speed by more than an order of magnitude. SELF now compiles about as fast as an optimizing C compiler and runs at over half the speed of optimized C. This new level of performance may make pure object-oriented languages prac-

[1]  Jonathan Rees,et al.  T: a dialect of Lisp or LAMBDA: The ultimate software tool , 1982, LFP '82.

[2]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[3]  L. Peter Deutsch,et al.  Efficient implementation of the smalltalk-80 system , 1984, POPL.

[4]  Bertrand Meyer,et al.  Genericity versus inheritance , 1986, OOPLSA '86.

[5]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[6]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[7]  Paul Hudak,et al.  ORBIT: an optimizing compiler for scheme , 1986, SIGPLAN '86.

[8]  Andrew P. Black,et al.  Object structure in the Emerald system , 1986, OOPSLA 1986.

[9]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[10]  Ralph E. Johnson,et al.  Type-checking Smalltalk , 1986, OOPLSA '86.

[11]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[12]  Norman C. Hutchinson,et al.  EMERALD: An object-based language for distributed programming , 1987 .

[13]  Stephen Slade,et al.  The t Programming Language: A Dialect of Lisp , 1987 .

[14]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

[15]  M. Wand,et al.  Corrigendum: complete type interference for simple objects , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[16]  Justin O. Graver,et al.  TS: an optimizing compiler for smalltalk , 1988, OOPSLA 1988.

[17]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[18]  Justin O. Graver,et al.  Type checking and type inference for object-oriented programming languages , 1989 .

[19]  Ralph E. Johnson,et al.  A type system for Smalltalk , 1989, POPL '90.

[20]  V. Rich Personal communication , 1989, Nature.

[21]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[22]  Craig Chambers,et al.  Customization: optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language , 1989, PLDI '89.

[23]  Peter Buneman,et al.  Static type inference for parametric classes , 1989, OOPSLA 1989.

[24]  François Rouaix,et al.  Safe run-time overloading , 1989, POPL '90.

[25]  Craig Chambers,et al.  An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes , 1989, OOPSLA '89.

[26]  Robin Milner,et al.  Definition of standard ML , 1990 .

[27]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[28]  Craig Chambers,et al.  Iterative type analysis and extended message splitting; optimizing dynamically-typed object-oriented programs , 1990, PLDI '90.

[29]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[30]  Craig Chambers,et al.  The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages , 1992 .