So very, very tired

Monday, 26 Dec 2005

I’m getting increasingly cranky, lately, but much as I try to, I can’t write this post. Trying to express my dissatisfaction with all the choices in the current circus of dynamic languages just comes out as a meandering ramble; I guess I’ll have to leave it at the following response from Larry Wall to a post titled TMTOWTDI… and most of them are wrong:

Anyway, if you read up on the design of Perl 6 since then, you’ll discover a lot of things that will (hopefully) make Perl 6 a good language for both the wizards and the non-wizards. There’s a lot of power in Perl 6, but we’ve tried to add that power in such a way that people just trying to get their job done are unlikely to fall into traps. In particular, the entire OO design is based on the notion that there should be one fairly complete and fairly standard way to do OO in Perl 6, so that people aren’t obliged to roll their own OO systems. The hooks are still there underneath to break out of that, but ordinary folks aren’t going to be tempted to do that if the standard way is nice enough, and just sort of “lays under the fingers.”

Perl 5 has a lot of power too, but it tends to make all the options equally likely. It’s almost too orthogonal in that respect. In contrast, Perl 6 gives you a default OO system, a default switch statement, a default exception system, a default grammar system, and so on. It gives you standard ways to extend the language without negatively impacting other people’s code. Concepts that are confusing in Perl 5 because of excessive overloading are detangled in Perl 6 by use of separate keywords or operators. You can define your own operators, but we try to give you most of the operators you need by default so that you don’t need to define your own except for specialized needs. And, of course, strictures and warnings are on by default (though you can still turn them off).

In short, Perl 6 is designed to be just as good for small programs, and much, much better for large programs. People can still write screwed up Perl 6 code and put it into CPAN, but it won’t happen by accident nearly as often as it does in Perl 5, and even when it does happen, you’ll be much better isolated from its effects because Perl 6 takes lexical scoping much more seriously than Perl 5.

(Quoted almost wholesale; emphasis mine.)

Let’s see if this plays out as intended.