Rationale

This chapter is about object-oriented programming languages. It presents an overview of existing languages and discusses their heritage from Simula. Further, it contains a detailed comparison of the three major object-oriented languages; Smalltalk, Eiffel and C++. It discusses the design dimensions of object-oriented languages and proposes orthogonal dimensions of design, following  [Wegner87]. Also, class-less prototype-based languages are dealt with. These languages use dynamic delegation instead of static inheritance for sharing resources. Finally, the chapter discusses meta-level architectures for object-oriented languages.

Hints

According to  [Tai], the heritage of Simula may be observed in many well-established research and development areas. You may need to provide some additional material with respect to these areas if your audience is not familiar with them. .so literat

Project assignments

As subjects for a paper, you may think of where X may range over Turbo Pascal, Nexpert Object, or any language that claims to be object-oriented. Features to pay attention to include protection mechanisms and inheritance. As practical assignments you may think of where X may be any non object-oriented language. An interesting project would be to develop an object-oriented extension of yacc.

Comments

Many object-oriented languages and extensions to languages have been developed. For example, a variety of such extensions has been proposed for the language Tcl that is discussed in section hush. These extensions support radically different object models, ranging from a model based on CLOS to a model based on C++. See the {\tt comp.lang.tcl} newsgroup for a discussion of these extensions.