From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,2c6139ce13be9980 X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,3d3f20d31be1c33a X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,2c6139ce13be9980 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,2c6139ce13be9980 X-Google-Attributes: gidf43e6,public From: doylep@ecf.toronto.edu (Patrick Doyle) Subject: Re: Interface/Implementation (was Re: Design by Contract) Date: 1997/09/13 Message-ID: #1/1 X-Deja-AN: 272183337 Sender: news@ecf.toronto.edu (News Administrator) References: <5v7mhr$meo$2@flood.weeg.uiowa.edu> X-Nntp-Posting-Host: skule.ecf Organization: University of Toronto, Engineering Computing Facility Newsgroups: comp.object,comp.software-eng,comp.lang.ada,comp.lang.eiffel Date: 1997-09-13T00:00:00+00:00 List-Id: In article <5v7mhr$meo$2@flood.weeg.uiowa.edu>, Robert S. White wrote: >In article , doylep@ecf.toronto.edu says... >> >>Orthogonal means that anything achieved using one technique cannot > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>be achieved using the other. But specifying implementation (ie. > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>the client relationship) can be accomplished by inheritance, so I'm >>not clear on how these are orthogonal. (Perhaps I'm mistaken about >>what "orthogonal" means? I'm going on recollections of a book I >>read a while back.) > > I just now went back to Webster's New Universal Unabridged (not quite >the OED?) but fairly long for its 2000+ pages. Seems to me that your >definition of orthogonal is a bit restrictive. In the context of >Don's use it seems the word orthogonal is being used to say that the >reason behind the functionality purpose is at "right angles" to that >of the visibility purpose. You must admit that this "right-angles" definition can't be applied literally to programming languages. It makes the definition very vague and subject to interpretation. So let's look for an analogy. In mathematics, two vectors are orthogonal if their scalar product is zero. It's not enough that they're linearly independent. Any n linearly independent vectors will span n-space, but that doesn't make them orthogonal. Likewise, simply because every desirable objective can be expressed as a combination of two (or more) features doesn't make them orthogonal. That just makes them linearly independent. To be orthogonal, as you say, implies that they're at "right angles", so that they go in two unrelated directions. With vectors, if we want to move in the direction of one vector, it will not help to move in the direction of an orthogonal vector. It will not progress you whatsoever in the direction you desire. Likewise, using one feature of a language should not take you in the "direction" of an orthogonal language feature. So in summary, it's not enough that the entire "program space" can be spanned by a set of features--that just makes them linearly independent. It's necessary that these features go in unrelated directions, so that one cannot accomplish what another can. Also, I just remembered where I read this definition. It was in Object-Oriented Type Systems, by Palsberg and Schwartzbach. So I'm not alone in this. :-) -PD -- -- Patrick Doyle doylep@ecf.utoronto.ca