Nowadays, "basic" has a very different and derogatory Urban Dictionary-style meaning. Fifty years ago on this very day, however, it was the name given to a new computer-programming language born in a Dartmouth College basement. Devised initially by a group of the school's undergraduates and professors, BASIC's initial academic purpose was simple: to enable time-sharing on Dartmouth computers with an easy-to-learn, English-based language. Programming itself has greatly evolved since, but our early memories of coding in BASIC are no less fond.
I was about 10 years old when my aunt decided she didn't know what to do with her Commodore 64 and gave it to me. I was thrilled. I'd played games on an Atari 2600 before, but this was different. This was a real computer.
After playing more advanced games on the C64 for a few months, I realized I could do something called "programming." Somewhere, I found a manual for BASIC and tried out my first commands:
10 PRINT "JOSE"
20 GOTO 10
Suddenly, my name was scrolling on the screen. The computer was calling me! This may sound simple and probably even dumb today, but it changed my life. I'd made something. I'd made a computer execute a program, and it had my name all over it.
BASIC on a Commodore 64 was very limited; well, it was extremely "basic," of course. I never did much with it, though I did create a few question-and-answer games that I played with my cousin. No matter what, looking back, I appreciate that BASIC opened the doors to something bigger. It made me realize that I could actually create things thanks to technology. It made me fall in love with technology and programming.
When I was a teenager, I thought I'd grow up to become an attorney or diplomat and use technology in my spare time. In fact, I went to law school for a couple of years as an undergrad in Ecuador, but then dropped out. I didn't want to spend my life surrounded by suits and bureaucrats. So I went back to college, but this time to pursue a computer science degree.
While I couldn't say that BASIC alone was the reason why I now live and breathe technology, that first GOTO statement certainly helped me become the person I am now.
During the summer of 1994, I vaguely remember my parents strongly hinting that I should go outside more. Being a really nerdy kid, I had an aversion to things like sunlight, sports and socializing with others. But my parents kept insisting that I needed to do something to "get out of the house." One of their ideas was that I look into some "fun" summer classes run by my middle school. "I'll show them," I thought, and immediately looked for anything that'd give off a comforting glow from a cathode-ray tube. I found two options:
1. An introduction to HyperCard 2. Learning to program with BASIC
Since I was about 12 years old at the time, I remember thinking, "Who would use HyperCard? And who would use a Mac?" (We were a die-hard PC house at the time.) I don't think I had a strong preference toward either, but I remember ultimately choosing the BASIC course because of that QBASIC Gorillas game. I always wanted to make my own games, and thought that maybe taking this BASIC course would help me understand the source code of that game.
Summer came and went and about the only things I mastered were GOTO commands and how to display someone's name when they typed it in. "Hello, David!" ended up being an output screen that I saw fairly often and basically represented the extent of my coding abilities at the time.
The next semester, we were given an assignment to "invent the future." It required teams of students to come up with some idea from the future that would change our lives and demo it in front of the class. Then we'd discuss the pros and cons of each invention. A lot of groups made cardboard or papier-mâché models of things like toasters and food processors that would predict what we wanted for breakfast and make it. I partnered up with a fellow nerdy friend and we created the World Wide Web in BASIC!
Or at least a very simple, text-based version of it that we modeled on CompuServe and Prodigy welcome screens. It was a ridiculously simple program that had four options and made copious use of GOTO commands:
1. Check email 2. Chat with friends 3. Check weather 4. Visit a website
Thanks to that summer of learning BASIC, I continued to tinker with various programming languages as I got older. It's never developed into anything more than a serious hobby, but it's been fun and even useful to be able to make some simple programs that help automate various tasks. That said, 20 years later, I'm still trying to create a game that does more than say, "Hello, David!"
Reading the word "BASIC" instantly transports me back to my senior year of high school, when I'd gotten my first real exposure to programming. I'd done some dabbling in MS-DOS, but this course was going to be my real intro to programming. I assumed we were going to start off learning Visual Basic or go right into C++. But no, instead, we had to start from square one with BASIC. Or rather, QuickBASIC, which was Microsoft's IDE and compiler for BASIC. What the 17-year-old me didn't realize then was QuickBASIC would set up a nice foundation for understanding programming syntax.
The programs we made at the time were simple; nothing more than basic (no pun intended) programs to get comfortable with the language. I recall a lot of simple counting programs that scrolled from zero to 50, or only printed numbers if they met specific criteria, like being a multiple of five. I wrote a few programs that relied heavily on conditional if/then/else statements and loops.
One day, I figured out how to create sounds inside of a program with the simple syntax of SOUND. The wiseass in me thought it'd be funny to create programs that did nothing more than produce nonsensical sounds. So I did just that and filled the classroom with beeps and boops. My teacher decided it was best I keep my musical aspirations to band class and out of the computer. Still, for as simple as QuickBASIC was, I still had those moments of frustration when my program would error out. This lead to my first "a-ha!" moment; a moment many programmers experience while debugging. And that is something I will always be thankful to BASIC for.
When it comes to coding, my list of accomplishments is quite short: I've made the light blink on my Arduino and created a crude text adventure game on an old Psion Organiser II. My crowning achievement, however, was a virus hoax I built in BASIC.
It started one afternoon as a practical joke I played on a friend's father. The program was a rather primitive reproduction of a DOS prompt that just ignored everything he typed and, instead, pretended to execute its own commands -- namely, formatting the hard drive. He'd press "w" and it would display "f"; instead of "i," it would display "o." This would continue until "format c:" was completed. To call the program crude would have been generous. It couldn't even fool my Luddite target, largely thanks to the fact that I hadn't quite figured out how to dispose of the question mark BASIC inserted at the end of every line when waiting for an input.
Over the following months, I fine-tuned it and eventually built something that convincingly recreated MS-DOS. It still basically just ignored anything a user typed, but at least now it spit out convincing error codes rather than jumping straight to the "format c:" gag. Plus, I'd finally managed to banish that pesky question mark for good while also adding in devious new features. If, for example, someone tried to run a few commands, the program would begin to taunt whoever was using it before ultimately trapping them into agreeing to run "format c:" -- Proceed with format (Y/Y)?
When it was finally perfected, I deployed my virus hoax on its ultimate mission: My father's place of work. (Now would be a good time to clarify that my father worked at a major international bank.) I walked around his office with a loaded floppy disk and set it running on a handful of computers. Although everyone quickly figured out it was a joke, there were a few moments of panic as people tried, in vain, to get their PCs to respond to their commands.