The best programming language is the one you have with you

I still get a surprising amount of resistance from programmers (and others) when I talk about using Javascript.

My first computer was a Commodore VIC=20.  I’d used one or two computers before that (my father’s Gimix Ghost and my grandfather’s hand-made SWTP) but the VIC=20 was mine.  When you turned this machine on you were placed into the BASIC programming language, just like almost every other personal computer made at the time.  This meant that in order to do anything with these computers, you had to write code, and if you used it for any amount of time, you learned how to program.

Some people simply wrote down a “cheat-sheet” of the BASIC commands they needed to load a program off tape (or less often, disk) but if you had an ounce of curiosity or you were on a budget you learned how to write programs because it was a way to make the machine do more than it could do out-of-the box, and the only cost was your time.  It was also relatively easy.  Most periodicals and books that discussed these machines included program listings (source code) for all kinds of games and applications, written right in the text of the pages that you’d simply type in to your BASIC prompt, use and modify them to suit your own needs and save on tape for later use.  It never occurred to me at the time (I didn’t think about software licensing much before age 10) but this was not unlike how open-source software development works today, largely because the only way to transfer software this way was in source-code form.

But what does this have to do with Javascript?  Compared to other programming languages of the time (C, Pascal, etc.) BASIC, in a number of ways, sucked. It was interpreted which made it slow, it was weakly-typed, the flow-control structures almost encouraged the use of GOTO and most implementations required using short, unintelligible variable names.  Compared to something like C, BASIC was not the best programming language, but it was what we had.  On some machines there were compilers for other languages available, but most of them were expensive and only worked on the higher-end machines, and the code they produced was binary, so it only ran on the type of computer it that they were compiled on.  Bear in mind that 80’s microcomputers used an assortment of processors and some varied wildly in their hardware architecture, making binary-distributed programs incompatible between machines (even sometimes machines of the same product line).  However programs written in BASIC and distributed in source-code form often ran unmodified on machines from different companies, or if not they required small modifications that most owners were capable of.

Regardless of its limitations when compared to other languages, some very cool things were built with BASIC, but probably the most important thing created this was was a generation who saw the personal computer not as a thing to run applications or a game console but as a blank slate, capable of becoming anything you wanted, without having to buy anything else, limited only by your imagination, time and gumption.  The pervasive access to the BASIC language provided a way for these programmers to write software with confidence that it could be shared, unencumbered by technical limitations, and work on the inexpensive computers of their friends and neighbors.

As microcomputers evolved there were efforts to address the limits of BASIC or to replace it altogether, and the result of those efforts reduced the number of computer owners who learned to program, and made the programs writing by the remaining programmers harder to write and share-able and compatible. Eventually personal computers began shipping with no programming languages at all, and the era of the computer “user” began.

Today we live in a world where computers are everywhere but programmers are rare.  Many people could benefit from the ability to make their computers do more than they were designed to do, but there is an impression that this is hard, and should be left to professionals (I’m not going to say the software development industry is completely responsible for this impression, but it’s advantageous for them to maintain it).  Given the knowledge that the tools are available to them, and the encouragement I think that most “users” have the potential to become programmers and not only do I think it would help them solve specific problems, it would change the way they look at the relationship between their computers, the companies that make them and themselves.  The personal computer is a magical thing that can create enormously valuable stuff out of almost nothing, but we’ve constructed a world where most people who use them are oblivious to this potential and this is exploited in ever increasing ways.

Javascript has flaws, and is not perfect for every application, but it is available on almost every personal computer made today, and I’ve seen some very amazing things built with it.  The computers we have don’t make it as obvious as the microcomputers of yore, and the culture that separates “users” from “programmers” is strong, but with the right tools, culture and attitude I think we could turn the tide.  In a world that is increasingly built out of software this is as important as it ever has been.

- Jason