Search This Blog

Friday, December 7, 2007

Programming is Hard, Let's Go Scripting...

I think, to most people, scripting is a lot like obscenity. I can't
define it, but I'll know it when I see it. Here are some common memes
floating around: Simple language; "Everything is a string"; Rapid
prototyping; Glue language; Process control; Compact/concise;
Worse-is-better; Domain specific; "Batteries included." ...I don't
see any real center here, at least in terms of technology. If I had
to pick one metaphor, it'd be easy onramps... If you allow a language
to mutate its own grammar within a lexical scope, how do you keep
track of that cleanly? Perl 5 discovered one really bad way to do it,
namely source filters, but even so we ended up with Perl dialects
such as Perligata and Klingon. What would it be like if we actually
did it right? Doing it right involves treating the evolution of the
language as a pragmatic scope, or as a set of pragmatic scopes. You
have to be able to name your dialect, kind of like a URL, so there
needs to be a universal root language, and ways of warping that
universal root language into whatever dialect you like. This is
actually near the heart of the vision for Perl 6. We don't see Perl
6 as a single language, but as the root for a family of related
languages... Among the generalists, the conventional wisdom is that
the worse-is-better approach is more adaptive. Personally, I get a
little tired of the argument: My worse-is-better is better than your
worse-is-better because I'm better at being worser! Is it really
true that the worse-is-better approach always wins? With Perl 6
we're trying to sneak one better-is-better cycle in there and hope
to come out ahead before reverting to the tried and true worse-is-better
approach.

No comments: