Argh
IronPython in the wild

Paul Graham and Arc

I listened to Paul Graham's interview at ITConversations. You've got to admire his approach to the development of Arc, a new Lisp dialect. He is not planning to release it until he feels it's ready, which might take several years. A lot of people are, even as of now, eagerly waiting for the release. And I bet Paul sometimes feels a strong urge to just show the world the amazing stuff he has done and get on with the project in public.

Even if you are just programming some little utility for yourself and your co-workers, there's a point in the development, when a feeling of wanting to share your work just overwhelms you. "Look at this neat script!" As soon as you actually share it, you suddenly realize dozen things that are broken and another dozen things wrong with the UI (be it graphical or command line UI or a programming API). And if the utility happens to be useful, you realize that you just cannot change it that easily anymore. There are people already using it and you find yourself at the maintenance phase of the classic waterfall model. It's not that it isn't fun developing the thing anymore, but that it's considerably more constrained.

And I'm just talking about a silly little utility.

Think of the implications in programming languages. It takes a heck of a lot of work to try to improve a language (and it's libraries) and to provide some sort of a backwards compatibility. (Now, place yourself in the shoes of a programmer that, yet again, runs into a Java API document, that describes a perfect method for your needs, just to find out that it's DEPRECATED. Bastards! It's not particularly a Java problem, though, but somehow I have the most painful experiences programming Java.) Furthermore, there's going to be a herd of vocal people that don't want you to change the language (at least in the way you are going to change it), even though they couldn't design their way through a cubicle. If only you could have anticipated all these things that need to be changed at the first place.

Of course, you rarely can anticipate future needs and future enlightenments. A bunch of languages have been born by sort of an accident. Guido never ment Python to be a full-blown general purpose programming language. Yet that's just what it is nowadays. And I'm not saying that Python isn't fit for general purpose programming, quite the contrary actually, but that it wasn't the idea Guido had in his mind when went on a prolonged Christmas vacation. (OK, the vacation didn't last longer, but its implications sure did.)

Anyways.

Graham obviously has a pretty strong agenda for Arc. He knows what he wants Arc to be good at, specifically web programming, and Arc, of course, has a rather solid foundation already, being a dialect of Lisp. Sure, Arc might get popular at some entirely different application area, or might not get popular at all, but there, nevertheless, will be a lot of hurdles along the way, a lot of things that need to be done completely different than originally thought. By holding of the release, he buys himself a lot of room and freedom with the design.

One might suggest that Graham could just release the damn thing, and after finding flaws in the core design, he could just say "fuck off, users", and release a new, totally incompatible version of Arc later, but that's not the way hackers go about. In fact, this relates to another concept Graham talked in the interview. Namely, empathy. He argues that great programmers can feel truly emphatic of their users. Great programmers can get into the shoes of the user, so to speak. And emphatic programmers just don't go introducing backwards incompatible changes to their language; unless necessary, of course. And if the users are programmers themselves, and the software is a programming language, the emotional and intellectual investment that the users devote to the software is something that you just can't ignore.

So, all in all, I wish that Graham can continue to design Arc in peace and comes up with a great programming language. I won't probably be using it, because I've kind of decided to stick with Python, for better of for worse, for my favorite language. I'll be using languages like Java or even Perl at work, and I'm fine with it; believe it or not, Paul, but Java is a right tool for a broad set of problems and contexts. But when I can make the decision myself, the implementation language is going to be Python. But never say never; I'll look forward to see as for what kind of language Arc turns out to be.

[1 comment]

Filed under:

Comments: