2011/2/16 Bruno Medeiros <[email protected]>: > We must not be saying (or thinking) the same thing then, because I do think > it is worthwhile to have orthogonality as one of the primary design goals. > I believe we are still not thinking of orthogonality in the same way. You > seem to be thinking in terms of pure simplicity, how easy a language is to > describe, learn and understand. I'm thinking of how much expressiveness you > get per amount of "complexity" (how easy it is to describe, learn, and > understand). > > > So considering C++ and Java again: then yes, C++ is much more complex than > Java (even new-school Java, barring generics perhaps). But I never said > otherwise. I did say that Java is not more orthogonal than C++, but not in > the sense that Java is just as orthogonal as C++. Rather I was trying to say > that the comparison doesn't make much sense in the first place, because Java > has much less "capabilities". Like, you can compare D's meta-programming > capabilites with C++, because in D you can do pretty much the same things as > C++ (if not more) meta-programming-wise, yet the way things work in D are > much more orthogonal, more simpler to describe and understand (and probably > because of that, more powerful). The same comparison could be done with > other features, like operator overloading between D and C++. But not between > C++ and Java because doesn't support most of this functionality (and it > doesn't make sense to compare with the Java alternatives)
I completely agree in all of this, but I think orthogonality is a poor term for it. I think what you're describing is closer to the term "elegance", in the mathematical sense (http://en.wikipedia.org/wiki/Mathematical_elegance). Mathematical elegance is basically about - Finding the "simplest" expression or solution for a problem, that still accounts for all possibilities. - Finding generally applicable solutions for many similar problems. (Even when the do not seem very similar. Consider, for instance physical velocity, and bitrates in computers) - Finding a solution few dependencies on other work or assumptions. It is also very close to the principle of Occams Razor, (http://en.wikipedia.org/wiki/Occam's_razor), basically saying that given two solutions to a problem which is equally "correct" (or equal probability of being correct), the one that is "simpler" is preferable. (The exact meaning of simpler is open to interpretation though. ;) A couple of good related quotes; "Simplicity is the ultimate sophistication." - Da Vinci "Make everything as simple as possible, but not simpler." - Einstein And finally one from Ockham himself: "It is futile to do with more things that which can be done with fewer."
