The Future of Programming

An excerpt from Steve Yegge’s talk on the future of dynamic (aka “scripting”) languages, specifically on optimization:

It’s all the same kind of stuff they were doing with these [Dragon Book] data structures back when they were building static compilers. We are at the very beginning of this research! What [[happened was]] dynamic research stopped, and anybody who was doing it was sort of anathema in the whole academic [community]… worldwide across all the universities. There were a couple of holdouts. [Dan Friedman and] Matthias Felleisen, right, the Little Schemer guys, right? Holding out hope.

And everybody else went and chased static. And they’ve been doing it like crazy. And they’ve, in my opinion, reached the theoretical bounds of what they can deliver, and it has FAILED. These static type systems, they’re WRONG. Wrong in the sense that when you try to do something, and they say: “No, category theory doesn’t allow that, because it’s not elegant…” Hey man: who’s wrong? The person who’s trying to write the program, or the type system?

And some of the type errors you see in these Hindley-Milner type [systems], or any type system, like “expected (int * int * int)”, you know, a tuple, and “but got (int * int * int)”, you know [(clapping my hands to my head)] it’s pretty bad, right? I mean, they’ve, I think they’ve failed. Which is why they’re not getting adopted.

Now of course that’s really controversial. There are probably a bunch of type-systems researchers here who are really mad, but…

What’s happening is: as of this Ajax revolution, the industry shifted to trying to optimize JavaScript. And that has triggered what is going to be a landslide of research in optimizing dynamic languages.

So these tricks I’m telling you about, they’re just the beginning of it. And if we come out of this talk with one thing, it’s that it’s cool to optimize dynamic languages again! “Cool” in the sense of getting venture funding, right? You know, and research grants… “Cool” in the sense of making meaningful differences to all those people writing Super Mario clones in JavaScript.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: