From: mathew Date: 2005-11-26T01:12:56+09:00 Subject: Re: semenatics of if/unless/while statement modifiers On Nov 22, 2005, at 11:40 AM, Mathieu Bouchard wrote: > Well, pretend you have a real one... and it'll behave like a real one. > > How pickier is it possible to get? We're discussing language semantics here, 'picky' comes with the territory. > It's not a matter of deciding what's the best overall type of loop and > call all other ones ugly. Just pick the appropriate construct for the > situation. The construct is the appropriate one if it doesn't make you > jump through hoops. I'd say that's the Perl philosophy--give the programmer every kind of construct imaginable, and trust that they'll pick the right ones. The problem is that it bloats the language. Consider operators--there are a lot of operations that can naturally be expressed as infix operators. The Perl approach is to say well, let's have an operator for all of them, even if there are other ways to express the same thing, because what's important is not making the programmer jump through hoops. If they find it natural to express something as an operator, let them. The result is the Periodic Table of the Operators, , and a language that has 22 precedence levels. I just don't have the brain space to deal with that amount of complexity. I think most people don't. That's one of the reasons why so many people think of Perl as a "write only" language--one programmer will pick up a dozen favorite structural idioms from the hundreds available, another will pick up a different dozen, and the two will be unable to read each other's code. Then there's the effect it has on uptake of the language. C++ is another "give 'em everything and trust them to use it the right way" language, and as a result it takes 2-5 years to become proficient in it. And that's assuming you don't have to deal with code where someone has decided to make use of the ability to define your own operators and looping constructs... Note that I'm not saying that this one addition of true post-test loops to Ruby would be a disaster. I'm just explaining why in general, syntactic features are not 'free', and giving programmers too much choice of how to express things can ultimately be bad for the language as a whole, and even bad for the programmers themselves. mathew