50 Years of BASIC Programming

Where is BASIC today? Well, it is still around but not as popular as it once was.

Can you believe it? The BASIC programming language is 50 years old this month.  As you may know, BASIC was created in 1964 by Dartmouth College professors John Kemeny and Tom Kurtz as a system to simplify the teaching of programming.  BASIC means Beginner’s All-Purpose Symbolic Instruction Code.  The language was implemented as an interpreter on Dartmouth’s GE time sharing mainframe where students used ASR-33 Teletype machines as terminals.  It was popular from the start as students could learn the language in record time and create useful programs quickly.

Back in the 1960’s there were few programming languages.  Most machines were programmed in assembler but the higher level languages FORTRAN, Algol even LISP were available yet fairly complex and difficult to master.  BASIC really opened the door to computing for many because it was easy to learn.

Where is BASIC today?  Well, it is still around but not as popular as it once was.  Today, the C language and its derivatives seem to dominate programming.  However, web development has made other languages like Java very widespread.  And today, young millennials anxious to get a job in programming are spending $10,000 to $17,000 for 8 to 12 weeks of coding school where the languages taught are Python and Ruby on Rails.

I learned FORTRAN in college.  Later, I learned machine code and assembler to program minicomputers like the DEC PDP-8 and PDP-11.  Then when the first personal computer kits became available in the mid-1970’s, BASIC became the main language.  Microsoft was formed around BASIC and was quickly successful.  I ran an early paper tape version of Microsoft BASIC on an ASR-33 Teletype connected to an 8080-based IMSAI computer.  It worked well.  The process was to load BASIC using the 10 cps paper tape reader then do your coding.  Then you stored your program on paper tape again at 10 cps.  Back then there was no OS so BASIC was  your way to use the computer, unless you wanted to machine code it with the front panel switches.

BASIC was the software of early personal computing.  Every computer had a BASIC interpreter.  Apple II, Commodore Pet, Radio Shack TRS-80, Sinclair and most others.  I was at Heathkit in the 1970’s where we built the H8 and H11 computer kits.  We tried to get Microsoft BASIC but they would not sell to us at a reasonable price so we developed our own called HBASIC.  We also had BASIC and Focal on the DEC LSI-11 used in the H11. 

There were many other versions of BASIC like CBASIC and Tiny BASIC.  I can remember programming in QBASIC on an early IBM PC and using the BASIC interpreter embedded in an Intel 8052 microcontroller.  More recently I used the Parallax BASIC Stamp computer for some hobby projects.  It uses a very simple interpreted BASIC on a PIC microcontroller.  And I taught an entry level Visual BASIC course while I was still a professor.  I even learned the crazy LISP language during the artificial intelligence craze during the 1980’s.

So far I have successfully avoided using C.  I tried to learn it but it is just not intuitive.  It takes time and experience to get good at it.  I also recently tried the derivative language of the popular Arduino computers but quickly abandoned it in favor of the BASIC Stamp for programming projects.  If I have to program a microcontroller I will use BASIC if available otherwise I try to use assembler.  I think best at the bit level.

Anyway, I still like BASIC and I believe it was one of the main drivers of the PC business.  You don’t see it much today but it is available in many forms and still a great starting point for those interested in computers.

We should all silently thank Kemeny and Kurtz for BASIC and the computer revolution it supported.

Discuss this Blog Entry 14

on Jun 5, 2014

Dont forget HP Basic for their (for example) 9000 series workstation. It was a version of BASIC that allowed you to write very nice structured code, instead of traditional spaghetti bowl code. Wish it was readily available today for use on PC or embedded applications. I could make it stand up and dance, but modern C++ and the tools are not intuitive to me. Call me old fashioned. I think having a background in 360 assembly, FORTRAN and HP BASIC makes all of today's tools counter-intuitive for us old farts.

on May 28, 2014

I really love BASIC, because it makes more easy my job, I'm using VBA for Excel and is very good, I learned ASSEMBLER too for electronics projects, however I'm still using BASIC, sometimes I made a few programs in PASCAL and I tried C too but I leave it because in my job is better the Visual Basic for Applications version. Thanks to Kemeny and Kurtz for that revolution.

on May 28, 2014

I once wrote a PC hosted BASIC cross-compiler for the Motorola 6805. I used QBasic, and thought it would be a weekend project. A couple of years later I had a pretty nice compiler ;-)

on May 28, 2014

My frst attempt at programming was with Basic from my company's location in Crawley, Sussex, UK to a time sharing service out of London in 1968 - not many years after the language was launched. This connection was a lghtning 110 baud! I progressed (or regressed) to assembly language on a mainframe and thence, similar to Bill W, to Fortran and c. I revisited Basic in the early 1980's but this time it was on a PC.
It's was great language introducing me to the elements of programming.
Anybody else out there programming with Basic in the '60s?

on May 28, 2014

I use Visual Basic in Excel all the time.
Great for any simulations and quick development.
Using the BASIC and Excel functions, graphs, tables
etc. provides a very powerful tool.
This is still the basic "BASIC" at the core.

on May 28, 2014

I use Visual Basic in Excel all the time.
Great for any simulations and quick development.
Using the BASIC and Excel functions, graphs, tables
etc. provides a very powerful tool.
This is still the basic "BASIC" at the core.

on May 28, 2014

I remember programming in BASIC on an Apple II at school somewhere around 1980. In the early to mid-80's I learned FORTRAN and assembly on a time share PDP-11. My microprocessor labs used the 8085 with assembly at that time and by the mid-90's I had picked up some C and C++ from a class taught at my company. My experience is mainly in HW design of boards and FPGAs, so my SW skills are limited, although we are using a lot of Python now for FPGA scripting and test automation.

on May 28, 2014

Ah BASIC!! I (Steve Grout) and Slim Petrie at GE Audio Products (Decatur, IL) got GE Time Sharing in 1965. We used BASIC to write a DC, AC, and a modest transient circuit simulator. Slim added part tolerances and I went on to add a full Sensitivity and Worst Case capabilities to all 3. About that time (1966-67), we worked up a circuit description input similar to ECAP, BELAC, and others.
All the circuit equations setup and solving used BASIC matrixes directly (without having to always write detailed code.) We always tried coding both with and without the direct matrices ...and the BASIC matrix approach was always faster and more compact.
By the time I got transferred to GE/Honeywell Large Systems to handle their EDA "MUSER" frontend, hierarchy, and all simulation, GE Time Sharing had picked our AC, DC, and Transient sensitivity and Worst Case codes as part of their available tools, so those were the first available circuit design tools on Time Sharing, thanks to BASIC.
And thanks to BASIC, all of our circuit designers were designing circuits using Sensitivities, Worst Case, and Monte Carlo methods, so we all easily did very producible and manufacturable products.
One funny historical note about GE/Honeywell BASIC on later early 70's machines - We in EDA thought the guy supporting BASIC was one of more sophisticated software guys...until we discovered he was doing his BASIC compiler/interpreter code editing using CARD Decks!! LOL.

on May 29, 2014

I agree with Lou that those days you learned Fortran, a non-structured language with GOTO statements. When BASIC became available it was wonderful. It also had GOTO and statement numbers. Consequently Fortran programmers became BASIC programmers and GOTO and Statement Numbers were very much a part of our lives.

I think the resistance to C was the structured regime where GOTOs were a no-no, not that it was not implemented; not so much that While and Wend were new things that had to be learned. C, like Lou says, was certainly to us then, less intuitive. The regret that both Fortran and BASIC programs then were basically not re-entrant were things we lamented only later on in life.

The fact that BASIC was interpretative was the reason why it was popular in small systems. If one remembers the compile and link process one would remember that using an ASR-33's paper tape reader and punch was a drag; imagine going through huge libraries just to pick out small subroutines to create a SAVE file. With BASIC we simply typed the program and RUN. If we wanted to run the program again later, we could punch the source program on tape quite quickly. For compile-link languages even a short source program could produce a very long paper tape with the SAVEd file.

But non-Kemeny&Kurtz flavors of BASIC caused huge pains. K&K BASIC, in particular for me, had string variables as arrays where each element was a variable-length string. Most variations, even on rather well-known minicomputers tended to implement each string as only one string rather than each array element as a string. There was hardly any way to convert K&K programs to variants. In this sense K&K's specs were superior and but it assumed that implementors could easily program garbage-collection into their BASIC interpreters; I fugure that most variants failed to do this because when you have very little memory, please, do not let us do garbage collection from a small bin.

Anyway there is no reason why any language can only be an interpreter and indeed many BASICs had an option to compile, usually into a pseudo-code; some compiled into assembler. Ken Bowle's UCSD Pascal was designed to compile into p-code, so that compatibility could be achieved on other machine by just implementing the p-code there, without having to write a whole interpreter for a different machine. In fact, you can see p-code type methodologies in most modern software development systems.

I chose to sell computers rather than program them, but being able to program means being able to sell more systems. I answered an RFP with a proposal and a working BASIC program to solve the problem. The user selected my proposal and wrote to the UNDP in Bangkok to purchase my system. However some God in the UNDP bought and sent them a different system which my program would not run on, thanks to incompatibility of BASIC. So today, 50 years later there is still a PDP-8 in some government office here which never did anything. BASIC lets you learn that the United Nations is not the caring mother to developing nations, a lesson I learned well in other encounters with UN agencies.

One language Lou did not mention was FORTH. I got a version on the TRS-80 and learned its internal structures until I manually made my subroutine re-entrant. Then I lost interest in it. Programs in some languages just defy debugging.

I still program on the phone and on tablets in BASIC. One has to try and make casino operators slightly less rich and BASIC is useful for such a purpose.

on Jun 4, 2014

My path in BASIC was a little later, and shorter, than yours, Lou. I learned FORTRAN in college, or at least enough to pass what I think was the only programming course there in 1969, and being an analog hardware guy, didn't use computers for the next several years. Then I learned machine language for the RCA 1802 (I think I still have one). I bought a Sinclair ZX80 with its really tiny BASIC and had a ball learning with it (so few keystrokes to do anything!), then used the knowledge to write a User Interface program for a control panel using a National tiny BASIC micro. BASIC was my only computer language (other than a little Assembly for a 6808) after that. I still have an old BASIC Stamp which will doubtless be pressed into service again for some home project.

The ubiquity of Arduinos tempts me from the hardware point of view, but I haven't looked into how to get them programmed to do what I want/need.

on Jul 25, 2014

Aaaaah, YES! BASIC! But before BASIC there was the 1401 AUTOCODER, SPS & the original RPG, with all the switches that had to be set. And, the 1130, running decks & decks of FORTRAN runs. BASIC was a shining light at the end of a laborious long dark tunnel. It has not been mentioned in these comments, but in the I-B-M world there was a VERY serious form of BASIC ..... on the SYSTEM 3x platform. Serious because it followed other I-B-M business languages w/ indexed files, allowing for quick retrieval of a data record. And, then we had GWBASIC! What a comedown from the I-B-M version. It was awkward, unscreen friendly, and slow! But, with the advent of the I-B-M PC, and the move away from large "iron", applications written in (SYS 3x) BASIC were easily ported to the PC environment w/ the introduction of ABC DEVELOPMENT SYSTEMS version of WORKSTATION BASIC. With a little bit of practice, some hardware options, an application could be directly ported from the EBCDIC world into the ASCII world easily....... program files AND data files. And, with the inclusion of NOVELL NETWORKS, one could build an entire multi-user PC-based data processing system!!!

I still maintain that IF someone had produced a clean BASIC compiler of the SYS 3X BASIC that ran on PC-based computers, they would have had a very rich, powerful & popular general-purpose language. Of course this compiler had to support indexed files, a strong companion SORT utility & some other add-ons for convenience.

And, then we have PASCAL..... a VERY high level language that was an academic favorite since it forced students to think in a structured way. Even though it had a GOTO statement, woe to that student that actually used it in a program!!!!

Fast forward to the modern era..... the ubiquitous PARALLAX STAMP. I have built several production line machines which run 8 hrs/day, 5 days/wk, all based on the 40-pin STAMP w/ 32 I/O ports. These machines have been on line for the better part of 10 years, NEVER requring any electrical maintenance, and all programmed in PBASIC! The ONLY negative for using the STAMP vs. another controller (PLC) was that it required an interface ckt to shift & isolate the TTL I/O to the 24v. level. In one application, there are "expansion" boards to fool the STAMP into thinking it has MORE than the 32 I/O ports.

And, now we have $69 PLC controllers that can run a tremendous diversion of production machinery, all in the size of a couple of packs of cigaretts taped together.

Next up will be DICK TRACY'S wristwatch radio controller the main production line @ GLOBAL MOTORS INC.

on Feb 2, 2015

One of my complaints over the years in transporting programs across systems using 'basic' implementations is their numerical accuracy...something to verify on any system.

on Mar 12, 2015

BASIC was the first language I encountered. I had read a book on computer hardware design, prior to an opportunity to use BASIC on an HP 2115 mini. My experiences since then have bee similar to Lou's The lack of strong typing makes it easy to learn and use. The fact that it is (usually) interpreted made it very responsive and easy to use, particularly on small systems. It also leveraged limited memory because it could be stored more compactly than assembly.

Of course, its strengths also proved to be its weaknesses. It typically executed at least 10 times slower than a compiled language, because it had to do some of the "compilation" tasks each time a line executed, rather than once. While things have gotten better with current interpreters, that still is a liability. Also the lack of strict typing and structure made it more susceptible to programmer errors. Both of these caused it to be looked down upon for production code. Both have been addressed in more recent versions, but then it really isn't BASIC any more.

I think it was Dijkstra (or possibly Wirth) who brazenly claimed that anyone who had ever programmed in BASIC had been permanently brain damaged and could never write a proper program. While the idea behind the comment is understandable, the reality hasn't proven to be true.

I am surprised at Lou's difficulty with C. Since you are familiar with several assembly languages, it might help to view it from that perspective, as C definitely is a high level language that is based on the actual capability of typical computer hardware, but in much simpler syntax that can combine several instructions into one. For example a fairly basic assembly language instruction is increment. The corresponding C construct is i++. The biggest difference is that the compiler (linker actually) gets to pick the memory location for you. Likewise most assembly languages have the concept of indexed addressing, who's C equivalent is pointers or arrays.

Many of the non-K&K versions of BASIC omitted the matrix operators. In fact the HP implementation I learned on could be configured to dump that portion of the interpreter in favor of more program memory space. It was an obvious area to trim, because they were the least used capabilities, and memory was scarce and expensive. However, it was unfortunate, because they were powerful operators that could do fairly complicated tasks at machine speed because it was a single BASIC instruction. That technique is one of the best ways of leveraging any interpreted language. The less details the user code has to provide, the less time is spent interpreting.

on Jun 4, 2016

While things have gotten better with current interpreters, that still is a liability. Also the lack of strict typing and structure made it more susceptible to programmer errors. Both of these caused it to be looked down upon for production code. Both have been addressed in more recent versions, but then it really isn't BASIC any more.

Please or Register to post comments.

What's Communiqué?

Blogs on topics such as wired and wireless networking.


Lou Frenzel

Lou Frenzel writes articles and blogs on the wireless, communications and networking sectors for Electronic Design. Formerly, Lou was professor and department head at Austin Community College...
Commentaries and Blogs
Guest Blogs
Jan 26, 2017

An Amateur’s View on the P2 (Part 2): Slew Rate and the Oscillator 3

Justin Mamaradlo takes a further look into the P2 op amp and how it functions, analyzing the oscillation and slew-rate characteristics of the venerable component....More
Jul 15, 2016

Simple Yet Effective ESD Testing Methods for Higher Reliability 11

There are multiple ways to test for electrostatic discharge, ranging from implementing a human-body or machine model to....using a balloon and a comb?...More
Apr 8, 2016

Confabbing on the Fabless Fad 5

High capital and maintenance costs, and EDA advances along with abstractions to deal with chip complexity, have been leading contributors to the fabless migration....More

Sponsored Introduction Continue on to (or wait seconds) ×