Back when I first learned to program we didn’t have fancy “IDEs” or “text editors” that let you scroll through “files”. Hell we didn’t even have files. We wrote our code directly into a terminal one line at a time and if we needed to edit that line we rewrote it entirely. We could only see about 20 lines of our programs at any given time and that was all we needed. We didn’t have a dozen other windows for “file explorers” or “unit test runners” or any of the other useless crap kids these days fit on their screens.
The reason we didn’t have any of that is because our computers could only do one thing and that was run a BASIC interpreter. We didn’t have “hard drives” and only the fancy pants kids had disk drives of any kind. On my block you turned on your computer, you programmed it to do something, and then you turned it off, and when you did your program went away. I used to program games and then keep my computer running for weeks so I could keep playing it. Eventually I did get a cassette tape recorder that could save data. It saved my games sometimes and would load the ones it did save…sometimes. I’d say it had about a 30% success rate at doing anything successfully. The rest of the time you just re-wrote the program again.
Back in those days we didn’t have the “internet”, so there was no “Stack Overflow” or “GitHub” where you could find out how to code. You had to subscribe to a magazine like Byte that had programs written into the back of it. You would copy the entire program by hand and then spend several hours trying to figure out where you copied it wrong. Then once you finally had something that worked you could experiment by changing lines. That’s how we learned.
If you did want to program anything more complicated than printing your name over and over you had to plan how many lines you thought a section would take beforehand. You see we didn’t have “classes” or “functions”. We just had blocks of code that took up a section of numbered lines. You thought “I think the code necessary to draw this sprite will take up 10 lines”. So you set aside lines 500-599 because you knew you were always wrong my at least a factor of 10. And if you needed more after that you had to keep the rest of the lines somewhere else because 600 was probably already taken. You couldn’t just lazily hit return 20 times and have everything move for you. It just didn’t work that way and besides, we couldn’t waste valuable bytes on luxuries like carriage returns!
You always kept a notebook next to you where you documented where the lines of various subroutines were because the computer sure as hell wasn’t going to help you. All you could do was list the program, or list a range of line numbers. “But why don’t you just pipe it through grep” you say? Because I ain’t some damn college professor that’s why! These are home computers dag-nabbit not some million dollar Unix server from Ma Bell. We didn’t have “grep” or “sed” or “pipes”. We had LIST…and we liked it!
My first computer was a TI 99/4a. It had a 16 bit 3 MHz processor and came with 256 bytes of RAM and 16kb of extended VRAM. That was more than enough for any of the programs I wrote at home. I made my own knock offs of games like Centipede, Pong and Bezerk. Just let that sink in for a moment. Centipede, written in BASIC, in under 16kb of RAM. When Bill Gates supposedly said that nobody would ever need more than 640kb of ram we all believed him because that was an INSANE amount of memory. At the time I couldn’t even fathom what I would possibly use that much memory for. You can only run one program at a time anyway.
We take for granted how luxurious software development is today. We have endless supplies of ram and disk. It’s easy to forget that not long ago we had almost nothing and yet we did amazing things, and made amazing messes of our code. Some things never change. Happy New Year and GET OFF MY LAWN!