PLDI'97 Tutorials
Sunday, 15 June 1997
There will be three half-day tutorials, two in the morning and one in
the afternoon, organized into a "research-oriented" track (Track I) and
a "teaching-oriented" track (Track II). Note that the afternoon
tutorial is part of both tracks.
You may register for a half-day or a full-day of tutorials. In addition to
the breaks, the morning tutorials include breakfast and the full-day
tutorials include both breakfast and lunch.
Schedule:
| 08:00 -- 08:30 |
Breakfast
|
| 08:30 -- 12:00 |
Morning tutorials
(20 min break at 10:10) |
| 13:30 -- 17:00 |
Afternoon tutorial
(20 min break at 15:10) |
Tutorial Program Chair
Linda Torczon
(linda@cs.rice.edu)
Efficient Implementation of Object-Oriented Programming Languages
Craig Chambers
Abstract
How are object-oriented languages implemented? What features of
object-oriented languages are expensive? What optimizations have been
developed to make object-oriented languages more efficient? In this
tutorial I aim to answer these questions. I will begin by identifying
the main features of object-oriented languages that are difficult to
implement efficiently. The remainder of the tutorial will present
three classes of implementation techniques. First, I will describe
run-time system techniques such as virtual function dispatch tables
(including complications due to multiple inheritance and virtual
inheritance) and inline caches. Second, I will describe static
analyses that seek to identify at compile-time the possible classes of
message receivers, in order to reduce or eliminate the overhead of
dynamic binding. Third, I will discuss ways in which dynamic
execution profiles can be exploited to complement static analysis
techniques. I will present empirical measurements of the
effectiveness of many of these techniques, as implemented in the
Vortex optimizing compiler, for large benchmarks written in C++, Java,
Modula-3, and Cecil.
Who Should Attend
Those interested in understanding the state-of-the-art in
implementing, analyzing, and optimizing object-oriented languages and
those who want to understand the performance ramifications of the main
features of object-oriented languages.
Craig
Chambers has been researching object-oriented language design and
implementation since 1987, with publications in PLDI, OOPSLA, ECOOP, PEPM,
ISOTAS, and TOPLAS on the topic. He developed the first efficient
implementation of the Self language, and he is the designer of the Cecil
language and heads the Vortex optimizing compiler project. Chambers received
his S.B. from MIT in 1986 and his Ph.D. from Stanford in 1992. He is
currently an Assistant Professor of Computer Science and Engineering at the
University of Washington.
Teaching Object-Oriented Programming: Practical Examples Using C++ and Java
Owen L. Astrachan
Abstract
Object-oriented languages, concepts, and programming are being used at
all levels in academic and industrial settings. Using object-oriented
concepts requires more than a language, it requires a different way
of thinking about and attacking programming and teaching and learning
about programming.
Both C++ and Java can be used at all levels, though each language
has idiosyncrasies that affect how object-oriented programming and
concepts are taught. We will examine how C++ and Java can be used
in teaching about programming and object-oriented concepts. We will
illustrate concepts including classes, encapsulation,
inheritance, references, and patterns using examples that show
the strengths (and weaknesses) of each language. Examples will show how
an object-oriented approach can improve on the imperative approach
traditionally taught using languages like Pascal and C.
Who should attend
Those interested in teaching and learning about object-oriented
programming and how to use object-oriented languages and concepts
in teaching programming. No experience with either C++ or Java
is assumed, although a reading knowledge of C (or C++ or Java) will
be helpful.
Owen L. Astrachan, A.B.,
1978 Dartmouth College; M.A.T., 1979,
M.S. 1989, Ph.D., 1992, Duke University, is Associate Professor of the
Practice of Computer Science at Duke University and Director of
Undergraduate Studies in the Computer Science Department. He is the
author of A Computer Science Tapestry: Exploring Computer Science and
Programming with C++ (McGraw-Hill) and Principal Investigator in two NSF
educational projects: "The Applied Apprenticeship Approach: An
Object-Oriented/Object-Based Framework for CS2" and "CURIOUS: Center for
Undergraduate Education and Research: Integration through Performance
and Visualization". In 1995 he received Duke's Robert B. Cox
Distinguished Teaching in Science award.
The Java Programming Language: Present and Future
Guy L. Steele Jr.
Abstract
Java is a small, simple, object-oriented programming language that is now
widely used on the World Wide Web. Java allows a Web user to access programs:
a mouse click in a Java-capable browser can retrieve a program to be
executed on the local machine. Java manages to go a long way with a fairly
small set of concepts: primitive values, objects, references, methods,
classes, interfaces, class loaders, and a security manager. We will survey
these concepts with an emphasis on the more unusual ones and how they all
fit together.
Enough time has passed that various proposals have emerged for extensions
to the Java language. These include nested classes, parameterized types,
enumeration types, operator overloading, additional numeric types (such as
intervals and complex numbers), and means for returning more than one value
from a method. We will examine some of these and discuss (in fairly
objective terms, we hope) their advantages and disadvantages.
Who should attend
Those interested in using the Java programming language and those interested
in the problems of programming language design.
Guy L. Steele Jr., Distinguished Engineer, Sun Microsystems Laboratories.
A.B., 1975, Harvard College; S.M., 1977, and Ph.D., 1980, M.I.T.
Assistant professor, Carnegie-Mellon University, 1980--1984.
Senior scientist, Thinking Machines Corporation, 1985--1994.
ACM Grace Murray Hopper Award, 1988; AAAI Fellow, 1990; ACM Fellow, 1994.
Co-designer (with Gerald Jay Sussman) of the Scheme dialect of Lisp.
Member (at various times) of standards committees X3J13 (Common Lisp),
X3J3 (Fortran), and X3J11 (C).
Co-author (with Samuel Harbison) of
C: A Reference Manual (Prentice Hall).
Author of Common Lisp: The Language (Digital Press).
Co-author of The High Performance Fortran Handbook (MIT Press).
Co-author of The Java Language Specification (Addison-Wesley).
Return to PLDI'97 homepage.
PLDI'97 Tutorials /
Young-il Choo /
Last modified: Wed Apr 16 09:50 1997