Yesterday, May 1, 2014 was the fiftieth anniversary of the BASIC programming language. Articles about this are abundant on the Internet and rightly so. I link to a couple of them at the bottom of this post for people who don’t want to Bing (or Google) for them. BASIC which is short for Beginner's All-purpose Symbolic Instruction Code was how many people learned to code “in the old days.” Many will tell you that its time is long past but even if you agree with that (and I don’t) it is good to look back on its importance.
In the early days of the personal computer, before Ken Olsen made his oft maligned comment that "There is no reason anyone would want a computer in their home." there was in fact no reason to have a computer in the home. If you wanted to use a computer at home you really had to create your own programs for it. The Internet was in its infancy and very few had access to it outside of work or school. And even at work or school you were limited in who had access. Tools like word processing or spreadsheets were still to come. Why would you have a computer at home without software?
The first personal computers, which came before the IBM PC we now think of when we say PC, did come with one important piece of software – BASIC. The Commodore PET, the TRS-80, the early Apple computers and many more which have faded into history came with BASIC. The people who bought computers were forced to learn to program.
I learned BASIC in college on a mini-computer (built by Ken Olsen’s Digital Equipment Corporation). I had learned FORTRAN IV on an IBM mini using punch cards in a course the previous school year. The DEC computer was new and it didn’t have FORTRAN but it did have this BASIC stuff. And there was documentation laying around. The transition from FORTRAN to BASIC (in this case a version called BASIC-PLUS) was pretty easy. having access to a time shared computer which several of us could use at once was hugely empowering. It was in a sense of taste of personal computing as it was to develop.
At there time there were all sorts of books and magazines that provided listings of simple BASIC programs. Remember no Internet! Moving code from one computer to another meant transporting physical media usually magnetic tapes from one location to another. So we typed in these sample programs. We learned from them. We added to them. We made them our own. It was heady times.
Those of us who could program got attention. We did “cool things” like make the computer print out large banners or ASCII art. Some of us thrived on it.
As the personal computers became less expensive – I paid $600 for my first personally owned computer – a TRS-80 – more hobbyists bought them and learned to program. Almost always with BASIC in some form or another. Most were self taught because there were few if any classes available.
Today computers are ubiquitous and we have come quite dependent on them. While 50 or even 30 years ago we could get by with a relatively few number of programmers today we need more than we have. Few computers come with development software anymore though. And we don’t have enough people learning on their own. Oh we have some and they are doing some cool stuff. I read this morning about a student who is helping pay his families mortgage with income from some iPhone apps he wrote. He’s self-taught. Search engines and the Internet are here now. (See How a Florida kid's "stupid app” saved his family’s home and landed him on the main stage at Facebook for more on that story.)
So if computers don’t come with BASIC anymore (or any other development tool) how do the do it yourself learners get started? Fortunately there are a lot of tools free for the download. Microsoft has Small Basic which is a lot more like the early version of BASIC in terms of simplicity and ease of use/learning than most others. And they also make an express edition of Visual Basic (and other languages) available for free. Their DreamSpark program (which I used to get paid to promote but haven’t for a while) is a great opportunity for students to get professional grade software for free.
And of course Java and multiple development environments for that are also free. I confess to not being a fan of Java as a first language though and that is why I think various version of BASIC still have a place today. The syntax of Java and other C-family of languages really seems to get in the way of learning the more important concepts of programming in my experience.
Python has a lot of the good qualities of BASIC being a dynamic language and you can find it for free as well. But I don’t see an edge that it has over Visual Basic for example. (Your mileage may vary of course) Either does let you “play around” a lot though and that is important. BTW for very young students, pre-teens for example, you may also want to start Programming With Blocks of which there are many free and low cost options. But eventually you want to learn a real language.
What about the future? The future of computing and of BASIC? BASIC has come a long way in 50 years. Arguably it has grown with the times better than its early contemporaries FORTRAN and COBOL. While neither of them were designed with beginners in mind today’s versions of BASIC still have many of the attributes that made BASIC such a powerful learning tool in the beginning. A language like Visual Basic lets one do pretty much anything a language like Java lets you do. In fact it lets you do many things easier, with less frustration and with more ease of making programs that look and feel real.
I teach my student in our school’s first computer science course how to program using Visual Basic. It works well. And while, largely in a bow to the need for them to learn Java in APCS, we use C# in the first full semester programming courses I’d be quite comfortable teaching them a lot more VB. In fact some of my advanced students continue to use Visual Basic for their own personal projects.
BASIC was designed to be friendly and forgiving and those are still strengths we need in programming today. So here's to you BASIC and I hope to be programming with you as look as I write code.