Despite the fact that there are plenty of free languages and development tools available online, there is still a much larger barrier to entry for someone who wants to get started as a programmer compared to nearly 30 years ago. I have fond memories of the computing of the 80s so I thought I’d take a quick trip down memory lane and write about my personal exerience of becoming a programmer. It may also be of interest to those familiar only with the Silicon Valley version of the history of computing since this covers events from the other side of the pond in the UK. When historians talk about the history of computing, they really only cover things like the TRS80, Altair and rise of the PC and Mac, yet there were many important and competitive developments in Europe that are often not included as part of this history.
Rise of The Home Computer
Way back in the 1980s – you could turn on your computer, wait 5 seconds, write two lines of code and you had a program you could execute by just typing
run and pressing enter. Back then computers were sold in stores like appliances and any time you would go to an in-store computer department you would more than likely see the following lines of code endlessly displaying their message:
10 Print "Hello World!" 20 Goto 10
The concept of the home computer involved an affordable computer that could be used to play games, use software or write programs on as compared to the big clunking hardware used professionally. Technically, they could be used for business related tasks but since it was all saved to audio cassettes, it wasn’t the most reliable storage mechanism and not one you want to risk the finances of the family business on. Floppy disks (yes, floppy, not hard disks) were just about available at the time for the home market, but wouldn’t become affordable for a few years yet.
It was these computers that first exposed the public to the world of computing and turned casual hobbyists into die hard programmers for decades to come.
My very first experience with a computer was at the house of one of my brothers friends when I was around 9. I remember going over there with my brother and in the back room, there was a black and white TV hooked up to a Sinclair ZX81. This little black box that was as warm as a toaster had 1 kilobyte or 1,024 bytes of memory and yet you were still able to cram complete games into it which you would take 5 minutes to load from a tape recorder if you were lucky. Getting the right volume on the tape recorder was tricky and sometimes varied by game, so you could wait 4 minutes and then it would crash and you’d have to start all over again.
I remember playing some 3d maze game where the goal was to find your way out of the maze without getting killed by whatever creature inhabited it. This was to be fairly typical in those days since the themes in many games involved either fantasy or alien elements. It seemed Middle earth and role playing in general went hand in hand with the infant computing culture. In 1982 Melbourne House would release The Hobbit as a text adventure video game. Years later, they would also release War In Middle Earth.
While the ZX81 lacked and real power, it had a definite allure and it was easy to imagine the things that could be done with it. My friend had only just started to learn to program but it was still impressive seeing this box beep and display images on the TV in response to typing in instructions. The manual for the ZX81 contained a lengthy tutorial on programming in BASIC written by Steve Vickers, and at the time, advertising for it played heavily on the concept of learning to program. For both buyers and sellers, programming was definitely one of the main selling points of the first computers.
I remember getting our first Commodore 64 for Christmas one year and playing Hovver Bovver and Cosmic Convoy on it. The game cases were always adorned with brilliantly drawn artwork which in the game was translated to a low resolution 4 color sprite.
Home computing made learning to program much, much easier since you just turn it on and there you are in the IDE of the time. You could use simple BASIC to get a feel for programming, learn basic concepts like variables, flow control, and structures. BASIC had plenty of limitations but from there, you could move on to Assembly Language which was really like progressing from the kiddy pool to swimming the English Channel. There wasn’t really any other high level language like C for the home market, only BASIC or Assembly.
Complete listings of programs appeared in many computing magazines and books that you could type in line by line. It seems crazy to imagine the notion of typing in a page and a half full of BASIC code from a book just so you can play a simple game or run some monophonic musical keyboard. Magazines often contained articles on programming in assembly and game magazines sometimes had interviews with game developers that contained some kind of discussion around programming or assembly. For a kid with an interest in games and programming, it was like getting insights into Josh Blochs brain on coding in Java today. To boot, these game programmers were almost like rock stars of the day when a kid in his bedroom can spend a few weeks writing some code for a game that would go on to sell hundreds of thousands of copies and receiving a couple of bucks in royalties off each one. There were stories of 17 year olds owning expensive cars before they could even drive. It really was the heyday for the independent game programmer compared to today where games are big budget affairs requiring the support of a large publisher to write it. Every time you turned the computer on, there was an excitement as you were about to walk in the same digital footsteps as these people and have the same potential to make something fantastic.
The Amstrad CPC6128
So I was a dabbler with assembly language on the Commodore 64 until I migrated to the Amstrad CPC 6128. Complete with a built in floppy disk drive I was able to really get into assembly. One year, again for Christmas, I got Maxam, a Z80 assembler/disassembler for the CPC6128. You can read several reviews of the product here.
With Maxam I really started to learn the joy and the pain of assembly language. One of the problems at the time was that the shortage of memory available. The 6128 has 128Kb of memory, that’s 128 kilobytes. That’s about 131,072 bytes, enough to only hold a third of the bible in memory. Todays 4 gig machines have 32,000 times as much memory, and yet back then, we had to hold both the assembler/debugger in memory as well as the program being executed. One typical solution at the time was to put the compiler/assembler/debugger on a ROM cartridge so it didn’t take up much internal memory. The CPC128 had a Z80 processor that could only access 64Kb of memory at the time and since the 6128 had 128K memory, it would only access the memory 64Kb blocks a time through a mechanism called bank switching.
Enter The Amiga
In the late 80s, the Commodore Amiga came out and my brother, then in the Navy and earning money, was gracious enough to buy one and leave it behind each week when he went back down South to Portsmouth where he was based. There were several languages available, most of which you had to pay for (AMOS for example). There were commercial (and possibly some shareware) versions of C / C++ compilers as well as AmigaBasic which was interpreted and written by Microsoft (who I believe also wrote the Basic for the C64). As I recall, there was an AmigaBasic compiler that was pretty limited, but if you were interested in games or demos then programming in Motorola 68000 assembly was king and the best choice of tool for that was Devpac by HiSoft Systems which was a full 68K assembler, disassembler and editor written in 68K. I still have my copy of Devpac 2 in pristine condition in a box, as well as my 4meg memory upgrade for my Amiga 1200 which cost about $500 at the time.
While the Amiga was a step up in terms of a gaming platform, it was also one of the first steps in taking programming out of the hands of the home computer user by not having any immediately available programming tools. For the time though, if you owned an Amiga, chances are that you were already interested in programming and would seek out programming resources. The 10 year olds programming on the Commodore 64 grew up to be the teenagers programming on the Amiga. While AmigaBasic was still available on the machine developers had already moved beyond that and were no longer interested in such weak programming environments. However, kids new to computing on the Amiga were less likely to take an interest in program now there was a small barrier despite the strong programmer community surrounding the Amiga.
Since this was before the internet, there was only two ways of accessing programming resources that would be considered free and open source by todays standards (called Public Domain back then) and that was either by BBS systems or mailing lists. As a teenager in the UK in the late 1980s and early 1990s, there was very little chance of me getting facilities to hook up my computer to the phone, so I have very little experience with BBS systems. Instead there were plenty of Disk Magazines and mailing lists that you could use to locate materials you were interested in. People could get demos or magazines on 68K, basic, AMOS , graphics programming, you name it. You just had to fill in the order form, sign a check, send it off and wait a couple of weeks. This was in the days before debit cards over the phone or internet and most of these came from small operations copying discs or putting the magazines together themselves. Now you know how we managed to live with those 14.4 baud rate modems when they came out compared to the current megabit pipes, because getting it online in minutes or hours was still preferable to waiting for weeks for the mail. I even wrote a couple of articles about Amiga copper lists for a Disk Magazine that got published after I submitted it by sending it to the magazine on a floppy disk with a note around it held by an elastic band. Very high tech.
The other revered source of information was The Amiga Hardware Reference Manual. The Amiga contained a set of custom chips, each with their own name, and the hardware reference manual contained all the info you needed to program those chips. This is going back before the days of DirectX and other kinds of multimedia APIs where programming graphics involved going directly to the hardware, also known as “hitting the hardware”.
Of course, once I upgraded to an Amiga 1200 with the extended ECS graphics chipset, I needed a new copy of the reference manual and had to deal with incompatibilities between the old 500 and the 1200. At this point, you start to appreciate the purpose of APIs which the Amiga did have, but at the time everyone used the hardware directly. Again, I also still have my original hardware reference manual in pristine condition.
While at University, I wrote one of my few more serious applications over the summer which was a logical circuit designer that you could step through and design logical circuits. Written in 68K assembler, it even had components so you could build logical blocks and re-use them and overall turned out to be a huge learning experience.
The Ascension of The PC
There was a clear division between the PC and the Amiga depending on whether you wanted a computer for gaming or business. This division was ruptured when the PC started using VGA graphics with 256 on-screen color options. All of a sudden, the PC became a viable gaming platform with classics like X-Wing, Doom and 7th Guest being released in the early 90’s. Meanwhile Commodore launched the Amiga CD32 cementing its role as a gaming platform. As a result, people were switching away from the Amiga and towards the PC as a platform for both games and business. The PC did come with Microsoft BASIC but it was merely installed as a standalone application and you were expected to already know how to use it if you actually ran it and there was no extensive BASIC manual as part of your purchase.
There were already a number of free and commercial alternatives available to you if you wanted to program in C, C++ or Pascal as well as a number of other languages, with Borland starting to make a name for itself. Hard drives were commonplace unlike the $300 investment I paid for my 20Meg hard drive for my Amiga 1200 (6Meg memory plus 20Meg hard drive meant my Amiga 1200 was a powerhouse).
Developers moved away from Assembly language now that high level languages were far more accessible to most and performed well enough that developers didn’t need to squeeze every ounce of performance out. Games were often written in C but as bottlenecks were discovered it was not uncommon for some sections of code to be re-implemented in assembly language for speed. I even ended up popping some 8086 assembly in one of my Delphi applications.
Once the PC was established and we were all suffering along with Windows 3.1 the rest is history. Computers were appearing on the desktop of every office desk and was no longer the play thing for geeks. People were looking for business applications that they could run on Windows. Visual Basic first came out in 1991, and Borland Delphi in 1995. These two commercial offerings were examples of the price one had to pay to get into commercial programming. Visual Basic made writing Windows applications really easy and Borland Delphi cranked this concept up to 11. This was really the front line of software development in the late 90s, so much so that Borland sued Microsoft for sending limos over to Borlands HQ to take employess to lunch while they discussed their futures working at Microsoft. In a possibly unrelated move, the Chief Architect of Delphi ended up being the lead architect for C#. Visual C++ for windows programming at the time seemed just one big convoluted process that people seemed to struggle through while hating every minute of it.
The Rise Of The Web
I’ll make this section short since you mostly have your own experiences of the rise of the web in the early 2000’s. When the web came, it was slow, and the existing players tried to squeeze it in to their existing development offerings, usually with little success. In many ways it was a huge step back since we went from developing rich applications for the desktop to coding simple stateless user interfaces online. Just when we figure out how to use a pop up or drop down menu, the web come along and now we have to start it all over again with each person having their own implementation. Thick client applications gave a functional richness that can’t really be matched as easily today when your application web page has the persistence of The Silence. (Aliens from Dr Who that you forget about as soon as they are out of sight).
So There We Have It
In the 80s programming was something you were either interested in or not and if you were any good and worked at it, you were delighted to find out you could make a great living at it. The ZX81, the Commodore 64 and then the Spectrum 48K all sparked off a culture of computing in the UK that somehow seemed to fit well with the geeky British hobbyist trapped in our houses fixated on mastering these toasty little boxes.
I’m a believer that good programmers are born and not made and having a programming language immediately available made it much easier for natural programmers to stumble their way into programming. Today it seems that many people choose to work in software and then go about learning how to program. Many programmers I encounter seem to lack the passion and curiosity for programming that was prevalent at the birth of the home computing market. Back then I didn’t personally know a programmer who didn’t eat, live, breath code, and read everything they could about it whereas now I haven’t worked with anyone who does (OK, maybe 1 person).
Computer ownership has changed from the once niche market of geeks and gamers who’s own participation in the industry would help expand and shape it, to the computer for the masses on every desk and desktop where the novices in the programming community are left to their own devices against the ever increasing complexities of software development.