Ed: So then maybe the takeaway would be [that] if you were a curious person, it wouldn’t sit well with you to not know how it worked all the way down to the bottom. Even if you have no interest in learning an assembly language, you have to know there is a benefit to doing so. So maybe the moral is study computer history?
Andy: No. There’s no future in history, somebody once told me. What you want to do is play. I do see the curious young developers now, they’re running [GNU/]Linux in several flavors at home, and they’re building their own media centers and screwing around with very low-level protocols and cables and soldering stuff together and writing device drivers. That’s really what you want to do. That gives you the most modern equivalent to the sorts of experiences that the rest of us [older folk] had growing up, just getting in there and hacking, because that teaches you a fair bit, and you start getting an appreciation for -- by the time you end up in a high-level language and ability on top of an operating system, you’ve got a good understanding of all the bits and pieces and how this all hangs together.
Ed: From the past to the future. What are some attributes of the language and environment that people will be using to develop software ten years from now?
Andy: Oh, I love this question. Okay, so here’s my thought on that, and I have no idea if this is actually going to work this way or not, but it strikes me that there is a real aspect of the cobbler’s children having no shoes here.
If you look at any of our popular computer languages today, with very few exceptions, you could render any popular program today onto paper tape or punch card. It’s a limited character set. It’s a limited line length for the most part. It’s black and white. It’s two-dimensional. It’s text. Gutenberg could print virtually any computer program in use. Any computer language program in use today could be printed on a Gutenberg press. It’s that basic, that simple, and it occurs to me in a lot of environments, given the richness of what we’re trying to express, that that’s a pretty poor model. You look at where, say, the gaming community is at, even simple things -- the use of color, but even going into three dimensions, use of spatial cueing, any kind of a richer environment, it strikes me that there’s an awful lot of opportunity there for a far richer expression of programming constructs.
And I’m not talking necessarily just about graphical programming or boxes and lines and that kinda stuff, but something more along the lines of interacting in, say, Second Life or some very rich virtual environment like that for a couple of reasons. Writing programs in black and white text seems pretty limiting, bandwidth-wise. That’s a waste of bandwidth.