Those who know Charles Noreaster know that Charles often complains about why Charles cannot get BASIC running on any computer in Charles’ house except for Charles’ ancient Commodore 64. Most people think it is mere craziness to want to run BASIC but there is a method to the madness. There are two big reasons why BASIC rocked:
It was on almost every single computer.
Programs in BASIC were so simple that one could see line by line what was going on.
This made it ideal not just for learning how to program but learning how programs themselves worked. And because it was essentially a lingua franca among personal computer owners, one could share one’s knowledge easily, which was why there were dozens of magazines and books dedicated to giving readers a chance to “Try It In Basic!” or program their own games.
In the absence of learning a low-level language like BASIC, learning how programs work is a much more difficult task. Given, too, that the social default now is copyright/patent/trademark shenanigans rather than open sharing of code, even programmers themselves rarely know more than a few programs and are even more rarely taught how other people’s programs work.
Charles is not the only person who laments the current state of things, by the way. Noted sci-fi author and computer nerd David Brin has said almost exactly the same things before in his 2006 article “Why Johnny Can’t Code.” Many others in the computer world understand the problem, too.
Building architecture and software architecture have a lot in common, but there is one crucial difference. While architects study thousands of buildings in their training and during their careers, most software developers only ever get to know a handful of large programs well. And more often than not, those are programs they wrote themselves. They never get to see the great programs of history, or read critiques of those programs’ designs written by experienced practitioners. As a result, they repeat one another’s mistakes rather than building on one another’s successes.
So begins your introduction to The Architecture of Open Source Applications. It’s not the same as programming in BASIC. It’s a little higher level, but it addresses a dire need in technology, where the wheel is reinvented every minute and not particularly well. For those who are not programmers, it offers a bit of insight into how much more smoothly the world could run if programming knowledge could be shared more freely, and how much nicer it would be for you to turn on your computer and avoid headache-inducing design decisions.