Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!hsi!stpstn!cox From: cox@stpstn.UUCP (Brad Cox) Newsgroups: comp.software-eng Subject: Re: Reusability considered harmful??(!!) Keywords: Reusability, Division of Labor Message-ID: <6256@stpstn.UUCP> Date: 9 Feb 91 15:51:08 GMT References: <6108@stpstn.UUCP> <4842@cui.unige.ch> <318@smds.UUCP> Reply-To: cox@stpstn.UUCP (Brad Cox) Organization: Stepstone Lines: 43 In article <318@smds.UUCP> sw@smds.UUCP (Stephen E. Witham) writes: >In article <4842@cui.unige.ch>, oscar@cui.unige.ch (Oscar Nierstrasz) writes: >> Furthermore, >> the emphasis on "software construction" gets us away from the idea that >> we must always be "programming" to build applications (another thing wrong >> with the term "object-oriented programming"). > >Hooray! To paraphrase, the problem with object-oriented programming is the >programming. It's only halfway to a new paradigm. Even Brad Cox >constructs his software by programming. But someday soon we'll have >"component software" (as distinct from software components) by analogy to >component stereo--software the user plugs together. And maybe "software >composition" or "software compositing." We do need better terminology. How's this? Hardware engineers distinguish assembly from fabrication. Assembly involves loosely-coupled binding, where stereo system is constructed by assembly of components, components (racks) by assembly of cards, and cards by assembly of chips. Below that level is fabrication; a tightly-coupled enterprise, where chips are fabricated from cel libraries (blocks), blocks are fabricated from gates, and so forth to molecular and atomic levels. The demarcation between fabrication and assembly is not precise, for the distinction between tight vs loose coupling (static vs dynamic binding) involves shades of gray along a continuum from early to late binding. Mapping this back to software, most programming languages (Ada, Pascal, C, C++) are fabrication technologies. I don't mean this in a perjorative sense, but in a descriptive one; low-level technologies are properly and inevitably oriented towards low-level interests, providing tightly-coupled integration, static binding, and strong type-checking appropriate to the relatively closed universe problems of characteristic of fabrication. Examples of assembly technologies are Smalltalk and Objective-C (chip-level integration), Fabrik and Metaphor (card-level integration), and the Unix shell (rack-level integration). -- Brad Cox; cox@stepstone.com; CI$ 71230,647; 203 426 1875 The Stepstone Corporation; 75 Glen Road; Sandy Hook CT 06482