I don’t remember learning BASIC – I think the start of my programming career just happened. I mean, they’d herd us off in small groups to the grade school’s two Apple II’s and one of us would be the typist, and we’d enter 10 PRINT “HELLO” and someone would always type 10 PRINT HELLO and wonder why it would return 0. And we’d eventually learn GOTO and a little math and maybe an INPUT or GOSUB, and after we finished a chapter per week, we got to play some crappy text-based game that made you run a lemonade stand and allegedly teach you some math. And then I got my own computer, and got more time on those Apple computers, and pretty soon I knew most of the language, but only from a brute force perspective. I was only interested in writing my own Zork, and had no idea about run-time complexity or how to sort something efficiently, or any of the stuff you were supposed to learn to really program.
And then I learned Pascal. I think I may have dabbled in it a bit beforehand, but it all came out of a C201 class in my sophomore year, at IUSB, and we had to do all of the usual stuff, like fahrenheit to celsius or julian to gregorian converters. The one pisser about this class was that IUSB had one shared computer, a Prime 9955, a mainframe the size of a dishwasher that had the computing power of a middle-of-the-road 386 at the time. But the whole school was wired into it: payroll, registration, gradebooks, and this huge rube goldberg set of programs resided there, and did for years until they finally boat-anchored the thing and managed to get to some unix or NT system in place. The teacher handed out slips of paper on the first day of class with logins for the Prime, and we all got some cryptic username, like NS837489, and a certain amount of funny money cash balance, because any time you logged out of the system, it told you how much money you “spent”.
This was insane to me, after a year at IU. In Bloomington, they just started permanent student accounts, in which you paid a technology fee every semester, but in return you got accounts on any of the university machines operated by UCS. That meant you could spend all day plunking around on a VAX, learning how to program or VAXPhoning strangers or just reading dirty chain mails. But from a hacker ethics perspective, it meant you could stay up all night trying to hack the VAX C compiler, or learning obscure details about ULTRIX, or writing elisp crap for emacs. You didn’t get a balance due every time you used a clock cycle, and you didn’t have to worry about your entire world vanishing at the end of the semester when they shuttered your temporary account.
Logins to the Prime only worked well on these TeleVideo terminals straight out of a 1970s bank, and logging in on a PC using Procomm tended to freak things out; you’d hit a cursor key and a stream of garbage would come across your screen, like someone picked up the other phone when you were on a modem. Also, they used this thing called Sheffield Pascal, which wasn’t optimal, but was nowhere near as bad as the not-visual text editor you had to slog away with, which was roughly like using vi without an escape key. After suffering through the first assignment, I asked the teacher if I could do my projects on a different system, since we only handed in a printout of our program listing, and he said fine. I’d log into the VAX down in Bloomington, where I still had my accounts, and do my assignments there. Okay, the TPU editor wasn’t that much more thrilling compared to working in Eclipse or something, and VAX Pascal had its own issues, but I got through the assignments with no problems.
Here’s the thing that astounds me: I managed to go from not knowing the difference between a function and a procedure to pretty much knowing the full nine yards of how to get around Pascal in a pretty short time. I mean, a semester is only a few months, and by mid-fall, I was screwing around with my own stuff in Pascal, trying to write a game and messing with the starlet VAX libraries, which let you do cool stuff like ANSI graphics animations and . It’s so surreal to think this, because now it takes me a month to find my checkbook, and back then I learned this language in not much more than that, and this was when I also took a calculus class and a philosophy class, and Spanish, and worked part-time, and commuted every day, and everything else.
But I knew Pascal wasn’t the be-all, end-all of languages. Real men used C; I knew that already, and I knew I’d have to learn C to do really cool shit. And I messed with it, I bought a copy of K&R, and I looked at it, but I didn’t commit. For whatever reason, I took to Pascal faster, and I used it for whatever little stuff I needed to do. I started writing crap for Sowder’s utility program, and Pascal was my go-to language at the point. But I knew I had to learn C. Unfortunately, they weren’t teaching it at IUSB. When I took C202, the point where you usually learn C, they got this wise idea to teach us all about object-oriented programming in Modula-2, which was basically a rewarmed version of Pascal that glued enough crap on the side to make it look functionally as useful as C, but with none of the allure.
One of the good things was that the Prime did not have a Modula-2 compiler. The CS department just got a couple of HPUX servers and a couple of X Workstations, and we all got accounts to shell into the unix machines and whittle away at our code there. But the workstations were locked away in a different room, only available to people in some advanced class, and they all sat idle all of the time. And the administrator of the CS machines was this shitheel that would routinely snoop around your home directory and read your email and sometimes delete files if he thought you shouldn’t have them. He was some right-wing nutjob that got off on security and authority and probably later got a job in the Bush administration administering illegal wiretaps. Granted, I was being a huge pain in the ass, spending all of my free time downloading games off of usenet and trying to get them to compile, but it always ticked me off that they had these giant-screened workstations that my tuition paid for, and I even worked there, and I had to spend my time plunking away on a Leading Edge Model D, which was like the Yugo of personal computers.
I don’t know when I had time to learn C, but I know that the Modula-2 class was in the spring of 1991, and by the fall of 1991, I was back in Bloomington, taking a 400-level class in C++ and Objective C, and don’t remember a period of time where I seemed entirely overwhelmed by the premise of learning C, at least like I was when I needed to take C311 and had never taken C201 in Scheme, and the thought of taking a class taught by the guy who literally wrote the book on Scheme with almost no knowledge of how it worked gave me panic attacks. But Unix and C went together like alcohol and bravado, and I couldn’t imagine trying to write any stuff during the infancy of Linux with Pascal.
My last big hurrah for Pascal was this xinfo database I wrote for Sowder’s utils, which was basically a cheap relational database used to keep track of user address information. Somewhere, I have a piece of lime and cream colored tractor-feed paper with a bunch of handwritten Pascal code, probably from the summer of 1991, from when I was working on that project. I didn’t have a home computer, and then when a girlfriend loaned me her Mac so we could keep in touch without insane phone bills, I still didn’t have reliable access to the VAX machines because IUSB’s dialups were crap. So I did a lot of coding on paper, by hand. I remember a whole Christmas break in 90/91, stuck in Toledo with a different girlfriend at her parents’ place, bored out of my mind, trying to write a chess game on paper, then trying to write a tic-tac-toe game in the primitive BASIC included on my Casio-9000 graphic calculator, which I think had less RAM than a twitter message. And that’s why I probably learned this stuff so fast – I spent every waking moment thinking of programming, and how I’d build a computer, and how I’d save up money to buy the cheapest Amiga possible, and how I’d get some shareware C compiler and write a ripoff Star Wars video game.
Now, all of this seems alien to me. I can barely remember any Pascal, and if I had to learn a new language now, I’d hop onto Amazon, buy a couple of the hundreds of books published on the topic, and read a bunch of tutorials or watch screencasts online. But it would be nowhere near as fun, and the entire sport of it would be gone, which is probably why I don’t spent much spare time programming anymore.