I’m a Computer Engineer, or so my degree from +15 years ago says. I’ve been messing with computers all my life, since I was a little kid. When I was around 8 years old I owned my first personal computer, a Sinclair ZX-81. That little thing only had 1 KB of RAM though I had the 16 KB RAM extension module, and its CPU, the infamous Z80, worked at 3.25 MHz. That’s right, megahertz, not gigahertz like CPUs run at now.
Can you believe that little CPU, manufactured by Zilog, was the beginning of the personal computer revolution (along with the MOS6502 the Atari 2600 had)? The Z80 was based on the Intel 8080 but fixing all its flaws and hence creating a better CPU that domainated the market. All modern personal computers now have CPUs based in the Intel 8086 (thus the name x86), which were based on the Intel 8085, the Intel’s answer to the Z80 copying several things from it.
Being a kid I learned BASIC to code for the ZX-81 but it was hell slow. So I had no option but to learn the Z80’s instruction set and to code directly in it. No, there were no assemblers at the time, so you couldn’t assemble human readable code into machine code. You had to set the memory manually, byte per byte, and then execute it and wish for the best.
Eventually I moved on and got a TRS-80 Color Computer. It was popularly known as the CoCo, but I’m not sure where, because at the time I’d never heard the terminology. Maybe because I was only 12 years old and I was definitely not going to the CoCo conferences or whatever they had at that time.
Same thing happened to me with the CoCo: programs coded in BASIC were too slow. So I had to, once again, learn the instruction set of its CPU, a Motorola 6809E. This time my brother wrote an assembler for it. The most fun that I had with the CoCo was to set it in high resolution mode all the time. That means to remap all the interruptions handlers to new functions that draw in the screen. Eventually I came up with a modded OS that was in high resolution. I even code a font editor so you could create your own fonts to use with the CoCo.
Around this time one of my brothers got a Commodore C64. Now that was something real. The C64 had tons of games, and tons of applications. Was the most popular computer in the 80s, dominating the market for the entire decade. I never coded for the MOS6510 it had, but that computer was fun. A funny thing about it is that its disk drive, the Commodore 1541, also had a CPU: a MOS6502 that is pretty similar to the MOS6510 the main computer had. That much power just to read zeroes and ones on a magnetic surface.
A couple of years later my oldest brother got a Commodore Amiga. That was a computer that was way ahead of its time. The Workbench was a very decent graphic-based operating system and it was just great. My brothers and I learned how to code in C with that computer, since we had a C compiler called Aztec C. I was just 14 years old.
Fun times. Computers were only used by people who knew how to code in them. Now all the fun is gone and computers are used mostly by people that don’t even know how a computer works, but they just know that they work.
When I was 15 I got my first x86-based computer: a desktop computer that had an Intel 80286 in it. There was no Windows yet, that came like 2 years later. It had MS-DOS instead, coded by Bill Gates anyway.
Fast-forward something around 20 years: I don’t even remember how many CPUs I have coded in assembler to. Several Motorola ones (MC68000, MC68328, etc), ARM, x86 and x64 CPUs, to name a few. Also I don’t even remember how many programming languages I have coded at least a decent program in, both compiled (Pascal, Fortran, Modula-2, C, C++, C#, Java…) and interpreted languages (TCL, Perl, Python, PHP…). Funny thing: I’m still learning things. I guess it will never end, and I’m happy about it.