Channels ▼


Basic Turns 50

This month, BASIC celebrates an anniversary reached by very few languages: 50 years of continuous use. During that long career, whose highlights mostly occurred before the age of 25, it has beckoned millions to the world of programming, most of whom immediately forsook the language for more robust alternatives.

It's difficult to imagine the computing world in 1964. There were no PCs, nor even minicomputers, and networking was for all practical purposes nonexistent. Programming was done on mainframes that could support remote teletype machines over telephone lines. Programs were stored on decks of punched cards, or loops of very carefully handled paper tape. In this rather challenging environment, two Dartmouth professors, John Kemeny and Thomas Kurtz, came up with the idea to create a simple, high-level language to teach programming.

They called the toy language BASIC, which seems fitting — although the term was an acronym for Beginner's All-Purpose Symbolic Instruction Code. Today, I believe most people would be comfortable only with the B in the acronym. BASIC was certainly not all-purpose. I expect that Kemeny and Kurtz might have been tempted to use the modern term "language," rather than "symbolic instruction code," but  BAL was already an acronym in use on mainframes (Basic Assembly Language — where 'basic' retains its natural meaning).

BASIC took off and hit its stride in the '70s and especially the '80s, when it became the de facto language for PC programming. It was the language that Microsoft rode to fame and fortune. (It's hard to recall, but before they focused on MS-DOS, Bill Gates and cohorts developed programming tools, most notably a BASIC interpreter for the Altair 8800.) It was also the language that launched Dr. Dobb's, whose first three issues were dedicated to writing a "Tiny BASIC" interpreter.

Due to the influence of Microsoft and IBM, BASIC came to be embedded in the hardware of all PCs that shipped in the early- and mid-1980s. This ubiquity provided the language a tremendous boost and invited many new people to the programming table. The gleeful aspect of "we can all be programmers" was clearly evident: Microsoft's standalone of the language (that is, non-ROM version) was called GW-BASIC — the GW standing for "Gee-whiz!"

But folks drawn to the language because of its promise of enabling them to write their own software soon discovered that the language was rather difficult to use on anything except trivial projects. With "GOTO line-number" being one of the principal ways of flowing logic, BASIC combined supposedly high-level commands with assembly language's control flow.  To make matters worse, variable names were limited to a single letter, optionally followed by a single digit. The result was dreadful spaghetti code and, for many novices, a completely invalid idea of how programming was done. This aspect was succinctly captured, not without some hyperbole, by Edgar Dijkstra's famous observation:

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

As the limitations of BASIC became clear, two things happened: Developers adopted better languages, which were starting to appear steadily on PCs, especially Pascal and C; and Microsoft QuickBasic and Turbo Basic came out with more robust features to serve the language's die-hards. Simultaneously, Kemeny and Kurtz suddenly became engaged in an odd propaganda war, in particular with Microsoft. They accused the Redmond giant of having corrupted the language and, to remedy this, created their own company selling the "real" version of BASIC, which they called True BASIC. The problem was that they were closing the barn door long too late. At that point, no one cared about what pure, original BASIC was or might have been. They were either using Microsoft QuickBASIC or had migrated to other languages.

It would be tempting to draw a straight genealogical line from the BASIC of that era to VB.NET today. But I'm not entirely comfortable with this take on history. VB.NET is a substantially different language than its forebears. There are hints of the ancestors, but that's a far cry from saying it's a directly derived language. For example, you cannot compile 1970s BASIC with VB.NET today, unless you completely rewrite the code. Whereas if you were to take, say, COBOL from the same point in its evolution, you could compile it today with only minor syntactical tweaks.

If you agree with this perspective, then it's fair to say BASIC hits its semicentennial at a time when it has little visibility anymore. It is confined to the products of several small companies that keep the tradition alive but who are unlikely to do more than ride the language until it dies out entirely.

If you disagree and see VB.NET as a true progeny, then the language is still living well, although there are signs of trouble ahead. The most important is the gradual, but seemingly inexorable, preference that Microsoft is giving to C#. Until a few years ago, the languages were presented as equals (or close to equals) at Microsoft product roll-outs. These days, though, C#, C++, and JavaScript get all the glory. VB.NET is mentioned now and then, but it has the feeling of an after-thought included more for completion's sake than as a language endorsement.

If this trend continues, especially as Microsoft moves ever more quickly towards non-PC development, then BASIC might well be seeing its last few years of relevance. Time will tell.

— Andrew Binstock
Editor in Chief
Twitter: platypusguy

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.