Maybe we live in a scripting universe

2007-12-18Comments

Although Perl was the first high-level language I fell for I rarely use it these days. It’s true, some well-worn Perl scripts still lurk in my ~/bin but, despite their manipulexity and whipuptitude, I make little effort to maintain them.

Graph plotting manipulexity against whipuptitude

As a consequence I haven’t really tracked the development of Perl 6. Standing on the sidelines it sometimes seems like a joke: but Perl has always had a great sense of humour; and, like all great humour, it deserves taking seriously.

Wall on Perl

The language’s creator, Larry Wall, very definitely merits attention. Given Perl’s heritage, it’s hardly surprising his 11th State of the Onion address about scripting, programming and the future of Perl is crammed with one-liners. I can’t resist quoting a few:

So basically, multiple dispatch is like democracy. It’s the worst way to do late binding, except for all the others.

And we’re making all the remaining punctuation work harder. Each symbol has to justify its existence according to Huffman coding.

Keep common things short, but not too short. In this case, 0 is too short.

I’ve looked a bit at Microsoft’s Monad, and I’m pleased to note that it has object pipes like Perl 6. I just hope they don’t patent it.

Wall’s linguistic facility shines through every level of his address. I hadn’t realised he studied linguistics at grad school. It seems obvious now. Programming, scripting, reading, writing — all language. Wall again:

I view a string as a Text, with a capital T.

Text

I read that word from a postmodern perspective. Of course, the term Postmodern is itself context-sensitive. Some folks think Postmodernism means little more than the Empowerment of the Vulgar. Some folks think the same about Perl.

But I take Postmodernism to mean that a Text, whether spoken or written, is an act of communication requiring intelligence on both ends, and sometimes in the middle too.

I won’t pretend I followed all Wall’s flourishes or grasped every linguistic dimension he describes. He admits in advance he’s probably got it wrong.

Really designing a language for the future involves a great deal of humility. As with science, you have to assume that, over the long term, a great deal of what you think is true will turn out not to be quite the case. On the other hand, if you don’t make your best guess now, you’re not really doing science either. In retrospect, we know APL had too many strange symbols. But we wouldn’t be as sure about that if APL hadn’t tried it first.

Wherever and whenever Perl 6 may be, there’s more than one way to do there’s more than one way to do it.

… for each of these dimensions, it’s not just a binary decision, but a knob that can be positioned at design time, compile time, or even run time. For a given dimension X, different scripting languages make different choices, set the knob at different locations.

  • You can’t even think about X!
  • There’s only one way to do X!
  • There’s more than one way to do X!
  • There are too many ways to do X!

Footnote

In the 11th State of the Onion Wall asserts:

Perl and Ruby take their functional programming support rather more seriously than Python does.

I don’t know enough about Perl and Ruby to disagree with any authority. I do know Python’s support for functional programming has been steadily improving from one minor revision of the language to the next, with (e.g.) core language features like decorators and generator expressions, and library support for lazily evaluated sequences and partial function application. The next major revision, Python 3000, continues this evolution, even if anonymous functions remain under-emphasised and reduce is to be axed from the language core.