Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!maverick.ksu.ksu.edu!ux1.cso.uiuc.edu!ux1.cso.uiuc.edu!m.cs.uiuc.edu!johnson From: johnson@m.cs.uiuc.edu Newsgroups: comp.object Subject: Re: Overused metaphors - Software I Message-ID: <77500050@m.cs.uiuc.edu> Date: 10 Aug 90 03:44:00 GMT References: <8190@fy.sei.cmu.edu> Lines: 48 Nf-ID: #R:fy.sei.cmu.edu:8190:m.cs.uiuc.edu:77500050:000:2550 Nf-From: m.cs.uiuc.edu!johnson Aug 9 22:44:00 1990 I agree with Chuck Plinta (cpp@sei.cmu.edu), who said: >Also, products such as nuts and bolts (stacks and queues) are not >the products I'm talking about. Engineers designing a car, a bridge, >or the next generation fighter, do not start with nuts and bolts. They >have higher level concepts/components available to them. These concepts >are present in the "standard" architecture, and this tends to be their >starting point. For example, cars are not designed from scratch each year. >A basic architecture is chosen, and some aspects of the car are enhanced >or changed. However, I think that that is also the opinion of the Smalltalk community. The important part of a design is not the class, it is the interface. The most important kind of reuse does not happen one class at a time, it happens with entire application frameworks. Model/View/Controller is not just a set of classes, it is a way of thinking, a reusable design. There are a few domains where computer science has produced standard, reusable designs. In particular, there are classes on the design of compilers, operating systems, and database systems. However, we seem to think that it is beneath our dignity to worry about building standard designs for other kinds of applications. These reusable designs are tremendously successful. Compare the complexity/power ratio of Unix with OS/360. Building OS/360 cost a tremendous amount of money, while it is pretty easy to make a Unix clone. Most of us would rather use Unix. The difference is that the designers of OS/360 were inventing operating systems as they went along, while Unix clone makers have a couple of decades of research and experimentation to rely upon. Perhaps the most important strength of object-oriented programming is its ability to represent these abstract designs. At the University of Illinois we are building frameworks for operating systems (Choices) and for optimizing compilers (TS). It is hard enough to design frameworks for application domains that have seen a lot of research, but it is going to be a lot harder to build them for domains in which computer scientists have little experience. Nevertheless, I think that frameworks for particular application domains are where we will find pay-offs of several orders of magnitude, and am very interested in projects to build frameworks for different kinds of applications. I am very interested in learning more about the C3 project that Chuck Plinta mentioned. Ralph Johnson - Univerisity of Illinois at Urbana-Champaign