in reply to (OT) On Orthogonality

Well, to me it has lots in common with the mathematical definition. Orthogonality in a project, or a program, means to me parts, modules or subroutines or whatever on any scale that does not interact or affect any other such part - it is self-contained. So you can change whatever you like in one, or just remove it and replace it with something new, and everything else will just keep on truckin'.

By having isolated parts of the world like this, your part, or the part for the day is lot's easier to work on. It has some similar concepts to OOP and especially Black Box objects, but it isn't necessarily the same thing. It can be though. :)

Worth noting is that I don't necessarily actually work this way, but this is how I read the word. :) (Note to self: Read the Pragmatic Programmer again very soon.)

Summary: Orthogonality == independence.


You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.

Replies are listed 'Best First'.
Re: Re: (OT) On Orthogonality
by stefp (Vicar) on Apr 16, 2002 at 13:11 UTC
    I must bring again the concept of granularity. You are talking about ortogonality of big components that you can treat as black box objects that you access thru methods. Signatures allow to distinguish methods by the same name.

    But if you go back to the small building block of a language the black box approach does not work. The shellish approach used by (old Bourne shells, tcl) is to treat the langage as an empty shell that provide little more than flow control. The cost is the you must fork process. Also there is the problem of multiple level of interpration agravated by the abscence of powerful quoting mechanisms like qq||.

    Language for compiled program also delegates to black box libraries. But a "real" language like perl tries to integrate in the syntax common patterns like the use of hash. The problem is to find enough "dimensions" in the syntax to pack enough of this patterns in a readable way.

    -- stefp -- check out TeXmacs wiki

      I am ashamed to reveal this, but I have no idea what you are talking about.

      You are talking about ortogonality of big components that you can treat as black box objects that you access thru methods.

      No, I don't. I say that the concepts are similar at times. And I do not limit myself to big components, I even mention subroutines (which is to me usually a small one).

      The rest... I am sure that is correct in itself. I don't really see what it has to do with orthogonality, or how that affects the validity of black box designs. Orthogonality to me has nothing to do with how a language is to be constructed, or how it is constructed. It is a way to design programs and projects. Although *writing* an interpreter for a language can of course benefit from this principle.

      If I am simply stupid here, feel free to explain and elaborate, so even I can understand. :) And so I know if I should give you ++ or -- *grin*.


      You have moved into a dark place.
      It is pitch black. You are likely to be eaten by a grue.