I was 9 when I got my very first computer and although solid 3 decades have passed since then – I still remember the overwhelming excitement it brought about. I can even recall the distinct smell. Commodore 64C (C64), as it happened to
be the unit I got, had a beautiful scent of warm plastic mixed with metallic fragrance of overheated components. Its external power supply was famous for warming up beyond any measure of reason (there were even jokes about users of C64 who didn’t have to pay fees for heating their apartments in winter.)
By the time I got my computer, having a dedicated screen was financially challenging so I had to use the good old television set. At least it was a color TV, for some limited time, as later I was given an old, black & white, 12-inch Unimor Neptun 150.
I never got a floppy drive for my unit, so I had to rely on a dedicated cassette player/recorder, called poetically the “Datasette”. Loading and saving anything was a humility teaching experience. It’s not only the read/write bitrate, which was less than a 0.5 kb/s, but also the joy of setting up the right position of a magnetic header with a screwdriver… Yes, a regular screwdriver.
It was one of the 2 most popular personal computers of its age, so no surprise that a lot of my friends got a similar machine. But I did something different than most of them. Games were fun, sure, but I’ve badly wanted to understand how to make my computer do the exact things I wanted. “How to program a computer?” – I asked my father once. “You need to type in some commands for the machine to understand what you want.” – he replied. The inquiry continued with me asking about the specifics of this mysterious communication. My father explained that this specific machine uses a programming language called Basic, which has a syntax close to English. I was ready to write my very first computer program.
As the first poem I wrote (I’d be too embarrassed to paste it here for all to see, but if you’re interested – I’ll send it over via private message), I remember it up to a letter. I typed “PRINT CROCODILE” and hit “RETURN” (which was the equivalent of PC’s “Enter” and in the context of C64 was executing a line. The computer returned the requested result. Surprisingly, instead of a known reptile – I received “0” on the display.
I shortly learned that “CROCODILE” was a numeric variable, not defined before it had been used, therefore assigned with a default “0” value when I attempted to consume it. I got exactly what I ordered. That realization was a captivating and shaping experience. It allowed me to learn, at quite early age, what are the principles of communication between a machine and a human. It helped me to grasp the importance of being precise. It familiarized me with the concept of ambiguity and measures of avoiding it. It accustomed me with the way of thoughts formalization so a machine can comprehend them.
C64 by default had a very crude version of programming language, even for its time. Commodore Basic V2 didn’t have direct commands to operate graphics and sound. I remember defining a sprite, which was a movable graphic object, with a resolution of just 24 by 21 pixels, in monochrome. Pixels had to be aggregated by 8 and a control sum had to be provided for the compiler to digest each byte long block. For some reason, no one had to force me to do the calculation. I was just captivated by the idea that an image from my imagination will do a funny walk on a screen if I do the right job.
Understanding the principles of programming gave me an upper hand in many, many challenges throughout my university days and later in my career. Being able to program a computer extends far beyond the code one writes – it’s learning one to think in an ordered, structured, unambiguous and elegant manner.