Xref: utzoo comp.lang.eiffel:1399 comp.object:2546 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!elroy.jpl.nasa.gov!ames!ucsd!hub.ucsb.edu!eiffel!bertrand From: bertrand@eiffel.UUCP (Bertrand Meyer) Newsgroups: comp.lang.eiffel,comp.object Subject: Re: Inheritance and Information Hiding Message-ID: <498@eiffel.UUCP> Date: 9 Feb 91 23:39:29 GMT References: <1991Feb8.171341.19413@cs.tcd.ie> <2140@cs.rit.edu> Organization: Interactive Software Engineering, Santa Barbara CA Lines: 54 ** Note: As Markku Sakkinen requested before, it would be nice if everyone left the original groups in the Newsgroups line. Someone, for some reason, had removed comp.lang.eiffel. I have put it back. ** end of note. This is simply to point out that the issue of ``implementation reuse'' versus ``specification reuse'' has nothing to do with this whole discussion. The debate (e.g. my original questions regarding polygons and rectangles) can be entirely confined, if need be, to the purely mathematical notion of abstract data types. We can talk about inheritance relations as being morphisms in categories, and we don't even need to refer to computers. I should add that ``implementation reuse'' is, for me, a term devoid both of meaning and of interest. The separation between concept and implementation in software is an historical evil, not a desirable situation. With a good notation we can remove the difference. For one thing, this is clearly the goal of Eiffel. But of course the human tendency to make things difficult when they should be simple is eternal. I also know that there is very little chance that anyone beyond Eiffel users will accept this today. It will take several years; too many people have been taught that implementation is dirty and ``specification'' or ``design'' is good. (See the lengthy letter in the January Communications of the ACM, by a gentleman from the US Coast Guard, claiming that he represents the trenches of the computing profession and, among other things, that software engineering has nothing to do with implementation.) Of course if one's world is an environment where implementation is done in Cobol or C, the need for something at a higher level is obvious. But this is irrelevant to object-oriented technology, or software engineering for that matter. Somewhere in his essays on linguistics, Roman Jakobson illustrates a point by telling the following story. A missionary was blaming natives because they always went everywhere naked. ``Cover your body!'', he would scream. Once they asked back: ``But you too have an area of uncovered flesh, right there, haven't you?''. ``Of course'', said the Father, ``but that's different! It's my face''. ``Well then'', retorted the natives, ``with us, everything is the face''. I like to think of this as a guide for software construction. One day we will stop being ashamed of implementation, not because we will have removed the need for implementation but for exactly the opposite reason: with us, everything is the implementation. -- Bertrand Meyer bertrand@eiffel.uucp