Language interfaces

Uncategorized — November 20, 2011 at 4:40 am

Woz, in an interview with Jessica Livingston:

Back a year before, when I had worked at Atari, they were starting to talk about coming out with microprocessor games. Up till then it was all hardware. In other words, you solder wire to the right sort of chips and put it through some more chips and some other chips, and it determines where the score is on the screen. It’s not like you type it in software and say “put the score at this location.” No, it was all done with wires and gates and chips and registers, and it was very difficult back then.

So now I had a machine that I could program a game in (or somebody could) and I got this crazy idea to try to do Breakout in Basic. Basic is like a hundred to a thousand times slower than machine language, so I don’t know if it’s possible. I sat down one night and finally put in all the commands in the Basic to draw color, and I started typing away in Basic and, within half an hour, I not only had my Pong game working, but I had done about 50 or so variations of colors and speeds and sizes and where the score was and all that stuff. I had changed so many things around and put in little features that would just take forever to do in hardware. Little words pop up on the screen when things happen. I called Steve over and I was just shaking, I was quivering, and I showed him the game running, and I said, “This game was so easy to write! Look at this, go ahead—change the color of the bricks.” This would have taken me a lifetime to do in hardware and I did it in half an hour.

And that was true. It would have taken an entire lifetime for any engineer with a soldering iron to try all those variations. So I said to him, “Now that games are software, it’s going to be a different world for games.”

Flash forward a couple decades: software is now the bottleneck. We spend the vast majority of our time looking up commands - there are far too many to remember.

Language interfaces, which translate search queries into source code, are the next leap forward. In my experience, the difference is on par with the transition from hardware to software. Consider how quickly you can program when you don’t need to look up the commands.