The first computer on which I spent a lot of time, maybe even too much time, was the Hewlett-Packard HP 2000E computer. It was made in the early 1970s and was one of the early minicomputers, and was capable of supporting some number of simultaneous users. There was a terminal room at Newcastle University that had 8-10 terminals in it but not terminals like we're used to today. These were more like a typewriter than anything else except that they used a continuous roll of paper instead of individual sheets. I found a picture of one (thanks oh mighty google) and it is here. As I remember it, only one or two of the terminals had a paper tape reader/punch like the one in the picture. However, given the source of the picture, it's quite possible I used that very terminal.
I can almost see everyone rolling their eyes and asking "who is this weirdo that gets excited by a teletype with no screen and just a long roll of paper?" In defense of paper - nothing scrolled off it, if I wanted to look back 50, 100, 200 lines, I could do that. In defense of the whole setup? It was interactive. I'd type something and get an immediate response. This was very exciting when you're young and used to batch processing. (Yeah, I know, there's nothing there... for now.)
Even better than the interaction, the HP 2000E has a small operating system focused on HP basic. This wasn't my first programming language, but the language and the interactive environment are surely what got me hooked. Oh, yes, and what I was doing on the computer.
Like every other kid I was playing games. There was a Star Trek game that was a lot of fun as well as a lunar lander game that was easy enough to land on the moon, ok to land on Mars, hard to land on Earth, and impossible to land on Jupiter (ok, it's hard to land on a planet made of gas, and you'd be crushed by gravity on the way down, but the lander's engines didn't produce enough thrust and didn't have enough fuel to get to the surface.
But I did more than just play games, I wrote them. Lots of them! I found it fun to do. I'd even go so far as to say it was addictive. I was part of a group of kids from school that had access to the HP 2000E. It's a long story how we got access and not relevant here. But it sure annoyed the computer science students because they only had batch access to the IBM System/370 and here we were playing games on a different computer.
The computer allowed you to store programs which were measured by the number of records that they consumed. Sociology students used the HP 2000E for running statistics programs; they were allocated 20 records. PhD students who needed to use that computer were allocated 100 records. By the time I stopped using it, my account (it may have been our group account, I don't remember) was at 400 records; I think the systems programmer was happy to encourage our enthusiasm. Oh, yes, when we ran short of space, we'd punch the programs to paper tape. Go look at the pictures of the terminal.
If I get a little self-reflective for a moment or two, I might ask what did I learn from it all. Two things come to mind:
- I learned to program in BASIC really well. I knew the language, I knew it well, and I could make it do whatever it was capable of doing. Of the various write-ups on BASIC, I chose the one by Jargon to link to. That's because of the famous Dijkstra quote. I respected Dijkstra enormously but that didn't mean he was always right! I've become a pretty good programmer in a variety of languages, taking the time and care to use the language the way it was designed to be used and not porting idioms from one language to another. So, once again I find a place where I disagree with him. As a side note, the entries on Dijkstra are rather sad given all that he did for computer science.
- I learned not to just throw a program together. It took a while, but I learned not to do it. I'd been somewhere else, playing games on an HP 2000F, and really enjoyed Hunt the Wumpus. I think I knew something about the structure of the cave system and spent a weekend programming the game. Every time I hit a problem I created a new subroutine and moved on. This is the attitude that Dijkstra had every reason to complain about. The game worked, all was good; until some months later I wanted to modify it. Oh dear, what a mess! To quote Scott "O, what a tangled web we weave when first we practice to deceive.". Never again did I do that.