Channels ▼
RSS

Design

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
alb@drdobbs.com
Twitter: platypusguy
Google+


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.
 

Comments:

ubm_techweb_disqus_sso_-a3846323831671122a3bd6320325f582
2014-05-08T12:18:32

...and it's got most of the flaws to: lack of correct scoping and global variables being implicitly declared being chief amongst them. It truly is an awful language, only popular through its place in the browser.


Permalink
ubm_techweb_disqus_sso_-a3846323831671122a3bd6320325f582
2014-05-08T12:15:34

You're entirely wrong. A procedure call is typically implemented as a CALL/RET pair in assembly, where any arguments and the return address are pushed onto the stack and popped at exit.

There are plenty of places where high-level constructs yield GOTO in assembly, if statements, switches, loops, congratulations on choosing the perfect counter-example.


Permalink
ubm_techweb_disqus_sso_-4406b18a60ccc00076f7a3b16c881a45
2014-05-03T11:18:42

All I know about programming, and even computing for that matter, I owe to my sweet beginnings with BASIC.


Permalink
ubm_techweb_disqus_sso_-2a1123dcf031d754f2df5a218540695d
2014-05-02T05:56:21

"Now, it’s possible that Dijkstra was exaggerating for dramatic effect. BASIC wasn’t his only bête noire among programming languages: He also spewed bile in the direction of FORTRAN (an “infantile disorder”), PL/1 (“fatal disease”) and COBOL (“criminal offense”)."

Fifty Years of BASIC, the Programming Language That Made Computers Personal http://time.com/69316/basic/

Any way OOP stand for GOTO Oriented Programming. Calling functions in all "modern" languages is not other thing than GOTO :Someplace and comeback to next line. OOP is the Realm of Spaghetti Code


Permalink
ubm_techweb_disqus_sso_-2a1123dcf031d754f2df5a218540695d
2014-05-01T21:02:13

Can you mention any document from MS where they state this disfavor of VB.NET?

You also forgot VBscript and Clasic ASP and the detail that VB have been the default language in IIS. If you want use C# you have to explicitly configure it.

And C# and VB are still under a common header in MSDN and nothing indicate it wont be so in the future

Nope, VB isn't a minor or disfavored language in .NET Framework

Clasic VB and VB.NET are among the top ten popular languages in the famous TIOBE index http://www.tiobe.com/index.php...

VB.NET grow up faster last year to get in the top ten while C# is stagnated

The fact you forget Clasic VB change every thing because VB was one of more important languages in the ninety and early 2000's more or less 15 of 50 years of the story.


Permalink
ubm_techweb_disqus_sso_-92d9a0020a9a018d96cc59edb6a768da
2014-04-30T19:18:12

JavaScript is the new BASIC, because you can just type and *poof* out pops (or maybe plops) a program. :) Seriously, JavaScript is the new BASIC because you don't have to compile, you just type and run and learn. So, I'm glad we've all had this discussion and agree that JavaScript is Beginner's All-Purpose Symbolic Instructional Code. :)


Permalink
AndrewBinstock
2014-04-30T17:03:50

Yeah, given the constraints they faced in 1964, they did a great job. The later campaign about "True Basic," detracted a lot from their stature, IMHO. But it does not detract from their achievement. Thanks for the note.


Permalink
ubm_techweb_disqus_sso_-9886dede3e857278436ab9d95b774f5c
2014-04-30T16:52:06

Kemeny and Kurtz did a marvelous job with BASIC. They deserve praise for introducing millons of people to a common sense language.


Permalink
ubm_techweb_disqus_sso_-d61ca45a8c7fed1a423c3901aeec682d
2014-04-30T16:27:27

" We should be all running real operating systems UNIX & VMS etc with real display managers like X "
OMG, X is widely and deservedly considered to be one of the worst pieces of sh, I mean code ever. It is only used because it is free.


Permalink
AndrewBinstock
2014-04-30T16:07:29

"Author lost a lot of the story: There are a lot of Basic dialects out there and mainly he forgot to mention Clasic Visual Basic." Yeah, there are dozens of versions of BASIC in use by tiny communities. What exactly does that change in what I said?
While the article is an editorial, so a specifically dedicated area for opinion on current events, it carefully builds on facts. If you think Microsoft does not disfavor VB.NET in its presentation of new features and new tools, you're simply not aware of what's been going on in this regard for years.


Permalink
ubm_techweb_disqus_sso_-c17a9f4b0ae4fe86d8a119c8293f8809
2014-04-30T13:31:57

I also owe my career to the BASIC languages. As a 12 year old at the time, I learned on the dialect of AmigaBASIC - using books from probably the '80s which were certainly for some other dialect of BASIC, but the great thing was, it translated sometimes perfectly to the AmigaBASIC dialect. The same held true for QBasic a few years later. My point being, this was/is a great "gateway" language that inspired me to do what I do. Interestingly, I learned almost right away that "goto" is a no-no, and used subroutines instead (granted, subroutines probably were a later addition to BASIC).


Permalink
ubm_techweb_disqus_sso_-2a1123dcf031d754f2df5a218540695d
2014-04-30T06:51:28

Author lost a lot of the story: There are a lot of Basic dialects out there and mainly he forgot to mention Clasic Visual Basic.
The GOTO issue is common in many language even in C and Dijkstra made a non sense commentary. (Although at the pre-ALGOL meeting held in 1959, Heinz Zemanek explicitly threw doubts on the necessity of GOTO statements, at the time no one paid attention to his remark, including Edsger Dijkstra, who would later become the iconic opponent of GOTO.[2] http://en.wikipedia.org/wiki/G...
The assertion of "The most important is the gradual, but seemingly inexorable, preference that Microsoft is giving to C#" is completely wrong.
The article is based in personal opinions, not facts.


Permalink
ubm_techweb_disqus_sso_-ab000a10ae4516fe6264744adc478da1
2014-04-30T06:06:33

Hey Andrew. Your post brings back many memories of BASIC. I first experienced this language on the Commodore PET microcomputer in 1980. I then had an opportunity to work with BASIC on the Radio Shack TRS-80 Model iII and Color Computer 2/3 microcomputers. I'll never forget obtaining sound from the Model III by twiddling bits via a machine language subroutine callable from BASIC via the usr() function and obtaining an external sound amplifier to hear the resulting sounds. I'll also not forget the frustration after typing a long listing into the computer and saving multiple copies onto a cassette tape only to find that the tape was bad and all that typing was for nothing.

I've often wondered if BASIC might have some kind of future as a JavaScript program embedded in a Web page. A couple of years ago, as a proof of concept, I embarked on a project to accomplish this task. The resulting Browser BASIC (BBASIC) is available (for a limited time) on my website at http://tutortutor.ca/software/.... The interpreter is slow and crude -- I hope to complete a virtual machine and make use of web workers once time permits.


Permalink
ubm_techweb_disqus_sso_-c802d7303e9b34fe631dfb02f0d8d993
2014-04-30T03:37:04

BASIC wasn't just the de-factor language for PC programming. I started working in 1981 on an accounting suite that was delivered on a networked workstation system. I was hired in 1983 into a programming department at a mining company using Nixdorf mini-computers (PDP-11 based, I think) which had a full suite of purchasing, accounting and share-registry code all written in BASIC. It was a far more ubiquitous business language than you are giving it credit. This is all before the "PC" was invented - back in the days of 8 bit desktop computers for small business and 16 bit minis for bigger businesses. Yes the Nixdorf BASIC was horrible - 1 character and optional digit for variable names and anything useful was accomplished with a CALL statement with a long list of numeric codes. We programmed by drawing flowcharts then translating them into BASIC. But, with data storage including both ISAM and linked variable-length records and screen controls allowing us to create forms, the business systems we built were as functional as most stuff in use 30 years later and, ironically, often faster to navigate and enter data. How long has it taken web-based business systems to deliver quarter-second response times?

What was really ironic about the "PC revolution" was how many great networked systems existed before then which took PCs a decade to replicate.


Permalink
ubm_techweb_disqus_sso_-d4ed77901b939bb2584841e40a4603f9
2014-04-30T02:54:29

Your comment: ("Even to day Windows is only barely multi-tasking with the display freezing anytime there is a network or i/o glitch.") tells me far more about you than you know. Really? Only barely multi-tasking? display freezing? No apologies for MS-DOS/16bit Windows and the hybrid monstrosities that were the Win 9x code base, but NT based OSes have matured to where they now can be pitted against some of the best operating environments. No, It isn't UNIX or even Linux. But it sure can run huge datasets and heavy transactional databases, yes via 16-32-64 CPUs, addressing a terabyte of RAM or more, without glitches and hangs. Of course, and this may be the heart of the matter, you have to know what you are doing. It's a poor workman that blames his tools. I'd take a closer you look at how you have your stuff configured. Maybe you can take some classes or get a book on configuring computers. My Windows 2008 servers run and run (just like their Linux brethren next to them) with the only time they go down is for security patches-yes and that is generally every month but you know what? So is Linux and most other OSes.

Back to the point of the article though, BASIC was the entry to programming for a lot of us. My first IBM had it on ROM and that was wonderful. I did some fun stuff when I got a hold of an EPROM burner...fun times.


Permalink
ubm_techweb_disqus_sso_-37bfc98d44665cff510f1c4ff61b6fed
2014-04-30T00:59:06

I will respectfully add my perspective to this discussion. My first (quasi-desktop) computer was a Varian 620i minicomputer handed to me in 1975 as a fledgling graduate student (physical chemistry) with instructions to "make it work and interface it to our instrument for data acquisition." I managed to do this successfully, and as they say, thank Heavens for the gift of BASIC-- a marvelous language with an interpreter that "fit" into the measly 4 K RAM that I had, yet with DIRECT access to machine language and I/O via PEEK and POKE instructions. Add to that the power of the original Kurtz and Kemeny BASIC instructions for manipulating matrices, and you have a language that for simplicity and ease of "getting the job done" was unparalleled and still is. Try doing this in any other language:
MAT(A) = INV(B) where A and B are matrices....
I have my original KK BASIC program for matrix diagonalization (eigenvalues and eigenvectors) that I had written for the Varian620 and it has been running happily on all kinds of machines and OSes for the past 40 odd years. I just ported it as an Excel "app" for the latest Excel (2013) using the Visual Basic for Applications (VBA) IDE that is built into all Office products. All I had to do was to write functions to implement the matrix algebra since the microcomputer versions (Gates, et al.) do not have the MAT statements!
BASIC is dead. Long live BASIC...


Permalink
ubm_techweb_disqus_sso_-d809a07c3f6e247274c79db2c2ed70d5
2014-04-29T23:33:40

I still occasionally get questions about my 68000 version of Tiny BASIC that was published in Dr. Dobb's 100th issue. I'm surprised but pleased whenever that happens, even though most of the world has moved on from BASIC now.


Permalink
ubm_techweb_disqus_sso_-5b452e1beec075737c898468d87f3dab
2014-04-29T23:26:26

I cut my programming teeth on BASIC, in 10th grade in 1974, on a PDP of some
sort with a teletype and paper tape storage. Self-taught as there were no
classes. It's what motivated me to do a foolish thing in 1977 (God looks out
for drunks and fools and I wasn't drunk at the time) that's worked out rather
well, which was to make it my profession. And as a professional computer geek coming up on 37 years, experienced in COBOL, FORTRAN, RatFor, C, C++, and various assemblers and scripting languages, I think I can
successfully disagree with Mr. Dijkstra's quote below. I would hope that my
former colleagues would agree, but I must leave that up to them. YYY


Permalink
ubm_techweb_disqus_sso_-3ec575291d7d1a1c3a41e0eb255a970d
2014-04-29T23:22:08

just to note here: I am using VB.NET happily for years, as a better-than-C# language, for me... I also did GW-BASIC (and others) back then and later i did C heavily and then started with C# when .NET era started, but I realized that VB.NET works 'better' in the IDE, and is more readable than C# for me (not because I used BASICs previously, but because C/C++/C# really have do have problems with their syntax, as I realized as a heavy-duty C programmer)... today, VB.NET is almost identical to C#, only the syntax is shallowly different (and better, I would say :-))... and I would say that situation with VB.NET is better now than in previous years, for there are less and less scenarios where one MUST use C# as the only offered solution, because VB.NET is not available (and as languages become closer and closer, it becomes less and less the problem)... so, long live VB.NET :-)


Permalink
ubm_techweb_disqus_sso_-b4b0ace049a61d0f4b864c5ee6b6cb69
2014-04-29T22:30:47

I think you underestimate the value of "tons of maybe useful but very buggy software" It was this type of software, rapidly put together, and demonstrating useful concepts that inspired those holding the purse strings to commission "real" software. In fact the whole concept of rapid prototyping is now something that even "real" programmers have embraced (After lots of dead ends in "real" programming)


Permalink
lawrenceharris
2014-04-29T21:59:49

I remember typing Tiny Basic in from the newsprint version of Dr. Dobb's. Was a lot of fun, however it should have died there. BASIC and DOS etc were the bane of the PC world. BASIC encouraged because it was so simple people who had no idea how to program that they could, which generated tons of maybe useful but very bad software which like everything was extended and expanded and ported and is now the supper buggy highly insecure stuff we have today. I was using multiuser mutitasking systems on PDP-8 (OS8) and PDP-9's (MUMPS 9) and IBM Xenix (SCO UNIX) on my PC/AT at that same time. The damage that DOS and BASIC did to the progress of the computing industry has been atrocious. Even to day Windows is only barely multi-tasking with the display freezing anytime there is a network or i/o glitch. I for one am glad BASIC and VB are 'basically' dead. We should be all running real operating systems UNIX & VMS etc with real display managers like X and any of the plethora of decent programming languages. However we are where we are and it's all water under the bridge now...


Permalink
ubm_techweb_disqus_sso_-72773352ebac26853f6ba1a60a246c99
2014-04-29T21:54:39

I owe BASIC my career in computing. My first computing job (in the 1980s) was teaching BBC BASIC, a great version of the language, with some really interesting sound and graphics capabilities. In my second job I taught VAX BASIC, a powerful language with lots of interesting features, virtual (persistent) arrays being one I remember. BASIC may be a language of the past but it should be celebrated rather than denigrated.


Permalink

Video