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.