We truly live in a wonderful world that would have been impossible to imagine only a few decades ago.
Allow me to wax eloquent for a moment.
“My” first computer
When I was a young child my family acquired their first computer: a Commodore VIC 20. My brother and I used to listen to the data tapes on a cassette player and pretend we understood what was going on. The computer was relatively small for its time, and needed to be hooked up to a TV to work. Its processing power is dwarfed by the phone in writing this on, but was sufficient to seduce and entertain my brother and myself. Suffice it to say I was hooked.
It didn’t take long for me to start programming the thing. That’s probably one of the reasons why it took me a while to develop social skills. I don’t remember much about what I did with that computer, but I do remember trying to get it to do stuff using BASIC. I was young, but I like to think I succeeded.
The first PC
A few years later, our first PC entered the house. It was an Intel XT clone sporting an 8088 CPU and came with a manual that must have been at least 500 pages going by the size of the thing. Other than what it looked like, I remember two things about the manual: it explained how letters were made up of pixels (I distinctly remember the images of pixelated letters) and it explained how to program in GW BASIC. Having already played around with BASIC on the VIC 20, this presented a new challenge for me: graphics programming! After a bit of toying around (which must have taken weeks) my first real project was to get a circle to bounce around on the screen, and then to have it “realistically” bounce on the lower edge.
The 386: assembly language
The third computer I remember having unfettered access to was a much more powerful 80386. This one has two things the previous computers didn’t have: while the XT had had 5.25” floppy single-density floppy disks, this new thing has 3.5” high density diskettes! 1.44 MB! No way you could fill one of those up! It also has a hard drive! This is the computer I learned to code on beyond BASIC: I bought three books that I still have to this day: a reference for assembly code instructions, a book about assembly language programming and another about advanced assembly language programming. That stuff was hard but, with my utter lack of social skills, I had plenty of time on my hands. Through my brother, I also got my hands on Quick Basic Extended Professional Development System which could compile programs into EXE files, and later, through my stepsister’s boyfriend, Turbo Pascal.
I don’t remember when exactly we got a modem, but we did, and my brother got the phone number of a BBS. From there, I downloaded stuff and, through that BBS, shared some of my creations. By the time the earily 1990s started, I was in high school and still had plenty of time. Through the BBS, I found something that blew by mind: DJGPP: DJ Delorie’s GNU Programming Platform. It had everything, and the source code for everything! And man pages! I learned to program C by emulating the code I downloaded from the BBS and, a while later, started making extensions to a game called VGA Planets, which I shared with some of the other geeks in school.
A while later, I went to university and got access to the then-budding “world-wide web”, got my first E-mail address and, before too long, set up my first website (“The Hazardous Area”, on which I hosted VGA Planets games with my extensions).
Fast-forward a few years: my computer was still a beige box with a prominent place in my one-room apartment in Paris, and was still connected to the young Internet by phone. My modem was a lot faster than it had been (going from 2400 through 14400, to a blazing 53200 bps!) and I no longer needed to choose between XMODEM, YMODEM and ZMODEM when I downloaded a file, but it still took quite a while to download the latest version of DJGPP and the RHIDE IDE. I coded almost exclusively in C by this time, and spent my nights experimenting with algorithms after spending my days experimenting with DNA (I was, after all, a biologist).
After meeting the woman who would become my wife, I left PCRs behind for PCs and started what would become my career. At this time, computers were still bulky beige boxes and the first Pentium IV processors were available with speeds of over a GHz. Compare that to the 10 MHz of the 8088, and the 2.39 GHz of my phone today, and you can start to gauge the progress we’ve made between when I first encountered a computer to when I started my software engineering career, and between then and now.
Today, I’m writing this on my phone, and can push it from there into the cloud using Git, still on my phone. My bulky beige box has been replaced by a much more powerful computer the size of a credit card, plugged into an HDMI monitor, and conneected to the Internet through a connection over 2000 times faster than the one I had in Paris, over a wireless network. Yesterday evening, I compiled a code generator I’ve written using another code generator, which was running in a VM inside a containerized environment running on a 3 GHz processor the size of a dime, on a computer the size of a credit card.
My children take these technologies for granted, but when I was their age, the iPhone wasn’t even a twinkle in Steve Jobs’ eye yet. The contant miniturization of technology had started and Moore’s Law was known, and predicted the computers we have today, but a quick look in the annals of the history of computing will tell you that computer scientists at the time either didn’t believe it, or didn’t understand what the predictions really meant.
Honestly, I think it’s wonderful: I have more computing power on my wrist and in my pocket that I ever thought I could possibly need only two decades ago. In the office, I work with four virtual machines and three computers running three operating systems (four Linux, one Windows 7, two Windows 10) and in my home office I do most of my coding either on a cloud-based VM or on my Raspberry Pi. I have a micro-SD card that holds more data than a thousand floppy disks could ever hold, and there doesn’t appear to be an end in sight for the continued miniturization of technology.
A decade from now, we’ll have commercially available quantum computers capable of implementing general algorithms, including Shor’s algorithm. We’ll have invented things that we cannot fathom today, throught the continued incremental steps and spurious leaps and bounds of continuous development and improvement. There are obsticles to overcome, but there have always been obsticles to overcome. Nobody ever said it would be easy, but by Golly we can make it fun!
A colleague of mine, whom I work with in cybersecurity, tells me every time I bring up the likelihood of quantum computers within a decade that he hopes he’ll be retired by then. He probably will be, but who would want to miss out on quantum computers? I want a real-world application that needs a Hadamard gate! I want to program it, test it, debug it, and put it in production! I want to combine a Hadamard gate with a square-root-of-NOT gate for some reason I cannot fathom at the moment! I have no idea why I want that, but the square root of NOT just sounds cool! Somebody give me a problem to solve, please!
We are going to have so much fun!