[comp.object] My OOPSLA '89 Report

eberard@ajpo.sei.cmu.edu (Edward Berard) (10/16/89)

During the week of October 2-6, 1989 I attended my first OOPSLA.  It
seems that I was always scheduled to be someplace else during the
previous OOPSLAs, so I looked forward to the event. I was, however,
warned about several things, e.g.:

	- "OOPSLA resembles a multi-denominational religious
	  conference. Imagine that fundamentalists from many different
	  religious sects were holding a joint convention. That gives
	  you a hint of what you will run into.", a colleague informed
	  me. -- This was true to some extent, but was tolerable.

	- I was told that OOPSLA was the exclusive domain of
	  "academicians and 'techno-geeks'." I did not, in general,
	  find this to be true. Although, I did have to marvel at some
	  of the classic "ivory tower naivete" which I heard. To be
	  sure, there were plenty of "people in suits" (and out of
	  suits) who were investigating the (gasp) commercial
	  potential of object-oriented technology.

	- Very often, I was told, people at OOPSLA talk "at" each
	  other not "to" each other. Seldom do they take the time to
	  throughly and fairly examine the other fellow's point of
	  view. Unfortunately, this is true of life in general, so its
	  presence at OOPSLA was no surprise.

As someone who has studied object-oriented technology since 1982, and
successfully applied the concepts to real, and very large, projects, I
can assure you that, underneath all the hype, there is real, and very
useful technology. Like Brian Foote, I found the conference obscenely
rich in food for thought.

Since I did not get a chance to attend any of the tutorials (I did buy
the notes from 4 tutorials), the conference started for me when I sat
in on the Greed presentation on Tuesday night. [I have already posted
some information on the Greed contest.] There were 10 presentations
(i.e., solutions) on the Greed problem, all were interesting. Some
examples, from memory, include:

	- Ward Cunningham's discussion of how he used his CRC
	  (class-responsibility-collaboration) cards in helping to
	  understand the problem.

	- Phillip T. Cox's presentation which included a detailed
	  discussion of methods for calculating the most appropriate
	  strategy. Cox works for TGS Systems which markets a product
	  called Prograph, a "very high-level, pictorial,
	  object-oriented programming environment." If you get a
	  chance, take a look at this product.

	- Some poor fellow from the Whitewater group who got the
	  problem at 12:30 a.m. Tuesday morning, and had to learn
	  Actor before (and during) his efforts to solve the problem. 

	- Kurt Schmucker's presentation on the use of MacApp gets the
	  award for "lightspeed featureism." Not only did he, and his
	  coworkers produce a solution, but they also included items
	  like an inference engine and a color interface in the
	  solution. Apple's solution demonstrated the power of both
	  object-oriented thinking and software resuability.

It was interesting that few, if any of the solutions totally
overlapped each other. Each presenter had some unique insight into the
object-oriented problem solving process.

Wednesday morning began with Peter Wegner's Keynote address;
"Conceptual Evolution of Object-Oriented Programming." The talk was
highly informative, but came across more like a college seminar than
it did a keynote address.

I then attended the session on teaching. I liked the ideas presented
in the Beck and Cunningham paper ("A Laboratory for Teaching
Object-Oriented Thinking"). The use of index cards, each of which
focused on a single class, and discussed the responsibilities of that
class, and the other class with which the class must collaborate, is a
great idea. The more senses (sight, hearing, touch, smell/taste)
involved in a learning process, the greater will be the possibility
that the material will indeed be learned. There are some caveats
though:

	- Students may need some initial guidance in identifying the
	  necessary classes. This problem will diminish as students
	  become more familiar with object-oriented thinking.

	- Students will also need some initial guidance on properly
	  identifying responsibilities, e.g., there is a high
	  potential for unnecessary object coupling. This need will
	  also diminish with time.

	- The inclusion of collaboration on the card introduces
	  another level of abstraction, i.e., the internal design of
	  the class. Students must be made aware of this. Once again,
	  the potential for unnecessary object coupling is high.

All in all, I think CRC cards are a good idea, but there use should be
followed by a discussion of object coupling, software reusability, and
object/class design strategies.

Mary Beth Rosson presented a paper she co-authored with Eric Gold. It
discussed how Smalltalk users thought when they were solving a
problem. It also briefly contrasted their thinking process with the
more traditional, functional decomposition thought process. The paper
is very interesting. As expected, the Smalltalk language heavily
influenced the thinking and solutions of the participants. A suggested
follow on research project would be one that attempted to factor out
the programming language (i.e., Smalltalk) influences, and attempt to
get at "pure" object-oriented thinking.

I liked the presentation on the Lieberherr and Riel paper
("Contributions to Teaching Object-Oriented Design and Programming").
One of the sad things about many so-called object-oriented programmers
is that they do not understand object-oriented thinking, but do
understand the syntax and semantics of the programming language they
use. Lieberherr and Reil proposed a "formal agenda for teaching the
object-oriented paradigm in a programming language independent
manner." There are, however, still hints of programming languages in
the process, e.g., the discussion of "instance variables" as opposed
to saying that "objects have knowledge of state."

The next session that I attended was the Software Engineering session.
As you may know, I think that there is much more to object-oriented
software engineering than just programming (i.e., coding). Rebecca
Wirfs-Brock presented a paper she co-authored with Brian Wilkerson
("Object-Oriented Design: A Responsibility-Driven Approach"). The
paper discussed designing classes based primarily on their behavior
as opposed to their structure. While I like many of the ideas
presented in this paper, I feel there is a tendency to unnecessarily
couple objects, and thus diminish both reusability and overall
reliability. This paper should be read.

[Pet Peeve Time: Why isn't there more "cross fertilization" (i.e.,
sharing (reusing) of ideas) in the technical community? For example, in
the Ada community (horrors -- did I say the A-word? ;-)), a great deal
of work has been done on attempting to bring object-oriented concepts
to the entire life-cycle. Regardless of how you feel about Ada, it
might be interesting to attempt to "re-steal" some of these ideas.]

The "Saving a Legacy With Objects" paper discussed a very practical
concern, i.e., how to integrate new (e.g., object-oriented) technology
with existing old technology. If you are trying to sell the boss, or
your clients on an object-oriented approach, you need to read papers
like this so that you can have some answers to questions such as:
"Well, what do we do with all this existing, non-object-oriented
software?" This is a question my clients frequently ask me.

(We also need satisfactory answers, case histories, and war stories
about what to do when we introduce object-oriented software into a
system with a relational database.)

[I did not get a chance to hear the entire discussion on the "Good
News, Bad News ... article, and will not comment on it.]

Before I discuss the panel ("Objects In Their Eyes"), I have to make a
comment.

	Programming language bashing usually demonstrates technical
	ignorance on the part of the basher. It is one thing to point
	out flaws in a language you have actually used to develop
	applications. It is quite another to criticize a language
	which you do not understand.

Early in the week, there was some C++ bashing. However, the Objects in
Their Eyes (OITE) panel, and in particular Bill Joy, "let COBOL _and_
COBOL programmer have it right between the eyes." In effect, Bill Joy
said that "COBOL programmers are incapable of learning object-oriented
concepts." This brought to mind E.W. Dijkstra's famous quote:

	"COBOL cripples the mind. Therefore, its teaching should be
	regarded as a criminal offense."

Bill Joy's remarks are particularly sad when one realizes that:

	1. Whether or not an individual is capable of quickly grasping
	   a concept is a separate issue from what tools that
	   individual is currently using. While it is true that very
	   often we have to send people to "object-orientation
	   re-education camp," I have found that users of assembly
	   language, Fortran, and C have just as many problems as do
	   Cobol programmers.

	2. People in the Cobol community are very interested in
	   object-oriented technology. In fact, at my suggestion,
	   several of these people attended OOPSLA '89.

Bertrand Meyer was almost subdued (compared to his previous
presentations). He brought up a number of good points, including the
incompatibility of structured approaches with object-oriented
approaches. 

Ed Yourdon was in the audience, and when he got to the microphone for
questions, he observed that the panelists "must consider him to be
evil incarnate." This brought up another of my pet peeves.

	"If I have seen further (than you and Descartes) it is by
	standing upon the shoulders of giants."
				-- Sir Issac Newton (1675)

We owe  a great debt to the people who helped bring about the
structured revolution. They opened our eyes, and let us know that we
did not have to develop software via "Brownian motion." Concepts like
coupling, cohesion, and module size are still relevant. However,
technology changes constantly. We must thank those who aided us in the
past, take those items which are still useful, and build a new
plateau. Remember, one day, object-oriented technology will be
supplanted by something better.

As you might guess (from my previous postings) The Thursday morning
session on Agents was my favorite. I will say that it did take some
re-reading and some follow-up discussions with the authors before I
could get the concepts completely straight. The Fenton and Beck paper
was enjoyable reading, but the Adams and Nabi paper provided more in
the way of definitions. (I also thought the timing of the conference
was great given that the previous week's issue of Newsweek (the one
with Spike Lee on the cover) had an article about Alan Kay, and
mentioned agents.)

The panel, "Inheritance: Can We Have Our Cake and Eat It Too," was
also interesting, apart from some totally unnecessary Ada bashing. As
usual, the Ralph Johnson - Dave Ungar tradoffs added zest to the
discussion. This panel seemed to offer a number of interesting issues,
e.g., delegation vs. inheritance, and types in an object-oriented
language. 

In the afternoon, I attended the Ada panel. If I was chairing this
panel, I would have re-arranged some of the speakers, and, of course,
brought up different points. This brings up an observation:

	Most often, when assessing whether a given programming
	language is object-oriented, the sole criteria seems to be
	"how closely does this language resemble Smalltalk." I propose
	a better evaluation process, i.e., 

		a. what features does language X have that most
		   so-called object-oriented languages wish they had, 

		b. what features does language X have in common with
		   most object-oriented languages, and

		c. what important object-oriented features does
		   language X lack, i.e., are candidates for addition

Further, I would make sure that I separated concepts from
implementation schemes. For example, it is possible to mimic many
object-oriented characteristics in a number of languages, hence, very
often the question boils down to one of convenience.

As you might also guess, I found the papers on reflection to be of
interest. While I continue to re-read them, my opinion shifts. I
particularly favor the paper by Jacques Ferber, but they are all worth
reading.

Finally, the exhibits:

	- I love publisher exhibits. I get to look at a lot of
	  interesting books. Most interesting was the Springer Verlag
	  booth, and least interesting was the MIS Press booth. (Your
	  opinion may vary ;-))

	- I liked Apple's booth, because I got to play with the
	  portable. The C++ announcement was old news. (I am a
	  self-confessed pro-Mac bigot.)

	- As I mentioned earlier, I found the Prograph demonstration
	  interesting. 

	- The object-oriented database booths had interesting demos.
	  Although the sad news was that Graphael had gone the way of
	  all flesh.

	- I tried to collect literature from all booths, but was
	  already aware of what most people had to offer.

Once again, I have probably overflowed your disk space. Thanks for
listening.

				-- Ed Berard
				   (301) 353-9652

UH2@PSUVM.BITNET (Lee Sailer) (10/16/89)

>Their Eyes (OITE) panel, and in particular Bill Joy, "let COBOL _and_
>COBOL programmer have it right between the eyes." In effect, Bill Joy
>said that "COBOL programmers are incapable of learning object-oriented
>concepts." This brought to mind E.W. Dijkstra's famous quote:
>

One thing to consider is that *we* are all interested in new concepts and
new ways of doing things.  That is, we attend conferences, read journals
and books by the dozen, and even hang around the computer late at night
in order to read this newsgroup.

On of the most depressing statistics I've seen lately (in Computer Language,
I think) is that the average number of technical books that a professional
computer analyst/programmer/engineer reads in a year is about 3/4 of a book.

When you consider that the readers of a group like this probably average
10--50 books per year, that figure becomes truly ...

I teach MIS in an MBA program.  Every term I get two or three local
DP professionals.  They are smart enough to learn things other than COBOL,
but they won't, because they refuse to.