What is orthogonality?
Bill Baxter
dnewsgroup at billbaxter.com
Wed Oct 18 19:28:22 PDT 2006
The world orthogonality has been thrown around a bit here, me included.
I just read this interesting interview with Matz, Ruby's creator where
he says he doesn't like orthogonality and gives an example of why it's bad:
"An example of orthogonality is allowing any combination of small
features or syntax. For example, C++ supports both default parameter
values for functions and overloading of function names based on
parameters. Both are good features to have in a language, but because
they are orthogonal, you can apply both at the same time. The compiler
knows how to apply both at the same time. If it's ambiguous, the
compiler will flag an error. But if I look at the code, I need to apply
the rule with my brain too. I need to guess how the compiler works. If
I'm right, and I'm smart enough, it's no problem. But if I'm not smart
enough, and I'm really not, it causes confusion. The result will be
unexpected for an ordinary person. This is an example of how
orthogonality is bad." -- Matz
First a definition. My concept of orthogonal comes mostly from linear
algebra. If you have two vectors that are orthogonal there is no
component of one that can be represented using the other. I.e. the
projection of one onto the other is zero. They have zero overlap.
What Matz is talking about is more like "syntactic orthogonality". The
syntax of those two features is orthogonal so they can coexist without
issues. The syntax subspaces they cover have zero overlap.
That's important, but I think a low-level kind of orthogonality. What
I'm talking about is more of a "semantic orthogonality". What does the
feature let you express? In the semantic sense his example of
overloading functions by number of paramters versus using default
parameters is exactly 100% UN-orthogonal. They both achieve exactly the
same behavior. They overlap 100% in terms of what you can express.
In the end he says he wants things to be "harmonious", which I think is
more or less equivalent to "semantically orthogonal". Harmonious in the
sense that I do my job and you do yours, and we don't step on each
other's toes. But that's precisely what orthogonality is -- not
overlapping.
The full interview is here:
http://www.artima.com/intv/ruby.html
--bb
More information about the Digitalmars-d
mailing list