From Wikipedia, the free encyclopedia - View original article

ParadigmUnstructured, later procedural, later object-oriented
Designed byJohn George Kemeny and Thomas Eugene Kurtz
Appeared in1964 (1964)
Jump to: navigation, search
This article is about the programming language. For other uses, see Basic (disambiguation).
ParadigmUnstructured, later procedural, later object-oriented
Designed byJohn George Kemeny and Thomas Eugene Kurtz
Appeared in1964 (1964)

BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use.

In 1964, John G. Kemeny and Thomas E. Kurtz designed the original BASIC language at Dartmouth College in New Hampshire. They wanted to enable students in fields other than science and mathematics to use computers. At the time, nearly all use of computers required writing custom software, which was something only scientists and mathematicians tended to learn.

Versions of BASIC became widespread on microcomputers in the mid-1970s and 1980s. Microcomputers usually shipped with BASIC, often in the machine's firmware. Having an easy-to-learn language on these early personal computers allowed small business owners, professionals, hobbyists, and consultants to develop custom software on computers they could afford.

BASIC remains popular in many dialects and in new languages influenced by BASIC, such as Microsoft's Visual Basic. In 2006, 59% of developers for the .NET Framework used Visual Basic .NET as their only programming language.[1]


Before the mid-1960s, computers were extremely expensive mainframe machines, usually requiring a dedicated computer room and air-conditioning, used by large organizations for scientific and commercial tasks. Users submitted jobs, on punched cards or similar media, to computer operators, and usually collected the output later. A simple batch processing arrangement ran only a single "job" at a time, one after another. During the 1960s faster and more affordable computers, still mainframes, became available, and time-sharing—a technique which allows multiple users or processes to share use of the CPU and memory—was developed. In such a system the operating system gives each of several processes time on the CPU, then pauses it and switches to another; each process behaves as if it had full use of the computer, although the time to complete its operation increases. Time-sharing was initially used to allow several batched processes to execute simultaneously.

Time-sharing also allowed several independent users to interact with a computer, working on terminals with keyboards and teletype printers, and later display screens. Computers were fast enough to respond quickly to each user.

The need to optimize interactive time-sharing, using command line interpreters and programming languages, was an area of intense research during the 1960s and 1970s.


Main article: Dartmouth BASIC

The original BASIC language was designed on May 1, 1964 by John Kemeny and Thomas Kurtz[2] and implemented by a team of Dartmouth students under their direction. The acronym BASIC comes from the name of an unpublished paper by Thomas Kurtz.[3] BASIC was designed to allow students to write mainframe computer programs for the Dartmouth Time-Sharing System. It was intended specifically for less technical users who did not have or want the mathematical background previously expected. Being able to use a computer to support teaching and research was quite novel at the time.

The language was based on FORTRAN II, with some influences from ALGOL 60 and with additions to make it suitable for timesharing. Initially, BASIC concentrated on supporting straightforward mathematical work, with matrix arithmetic support from its initial implementation as a batch language, and character string functionality being added by 1965.

The designers of the language decided to make the compiler available free of charge so that the language would become widespread. (In the 1960s software became a chargeable commodity; until then it was provided without charge as a service with the very expensive computers, usually available only to lease.) They also made it available to high schools in the Hanover area, and put a considerable amount of effort into promoting the language. In the following years, as other dialects of BASIC appeared, Kemeny and Kurtz's original BASIC dialect became known as Dartmouth BASIC.

Spread on minicomputers[edit]

"Train Basic every day!" — reads a poster in Russian school. (ca. 1985-1986)

Knowledge of the relatively simple BASIC became widespread for a computer language, and it was implemented by a number of manufacturers, becoming fairly popular on newer minicomputers such as the DEC PDP series and the Data General Nova. The BASIC language was also central to the HP Time-Shared BASIC system in the late 1960s and early 1970s, where the language was implemented as an interpreter. Also at this time it was ported into the Pick operating system where a compiler renders it into bytecode, able to be interpreted by a virtual machine.

During this period a number of simple computer games were written in BASIC, most notably Mike Mayfield's Star Trek. A number of these were collected by DEC employee David H. Ahl and published in a newsletter he compiled. He later collected a number of these into book form, "101 BASIC Computer Games", which was first published in 1973.[4][5] During the same period, Ahl was involved in the creation of a small computer for education use, an early personal computer. When management refused to support the concept, Ahl left DEC in 1974 to found the seminal computer magazine, Creative Computing. The book remained popular, and was re-published on several occasions.[6]

Explosive growth: the home computer era[edit]

MSX BASIC version 3.0

The introduction of the first microcomputers in the mid-1970s was the start of explosive growth for BASIC. It had the advantage that it was fairly well known to the young designers and computer hobbyists who took an interest in microcomputers.

One of the first to appear was Tiny BASIC, a simple BASIC variant designed by Dennis Allison at the urging of Bob Albrecht of the Homebrew Computer Club. He had seen BASIC on minicomputers and felt it would be the perfect match for new machines like the MITS Altair 8800. How to design and implement a stripped-down version of an interpreter for the BASIC language was covered in articles by Allison in the first three quarterly issues of the People's Computer Company newsletter published in 1975 and implementations with source code published in Dr. Dobb's Journal of Tiny BASIC Calisthenics & Orthodontia: Running Light Without Overbyte. Versions were written by Li-Chen Wang and Tom Pittman.[7]

In 1975 MITS released Altair BASIC, developed by Bill Gates and Paul Allen as the company Micro-Soft,[8] which eventually grew into corporate giant Microsoft. The first Altair version was co-written by Gates, Allen, and Monte Davidoff.

Almost universally, home computers of the 1980s had a ROM-resident BASIC interpreter, which the machines booted directly into.[notes 1] When the Apple II, PET 2001 and TRS-80 were all released in 1977, all three had BASIC as their primary programming language and operating environment. Upon boot, a BASIC interpreter in immediate mode was presented, not the command line interface used later. Commodore Business Machines included a version of Micro-Soft BASIC. The Apple II and TRS-80 each had two versions of BASIC, a smaller introductory version introduced with the initial releases of the machines and a more advanced version developed as interest in the platforms increased. As new companies entered the field, additional versions were added that subtly changed the BASIC family. The Atari 8-bit family had their own Atari BASIC that was modified in order to fit on an 8 kB ROM cartridge. The BBC published BBC BASIC, developed for them by Acorn Computers Ltd, incorporating many extra structuring keywords and advanced floating-point operation features.

As the popularity of BASIC grew in this period, magazines (such as Creative Computing in the U.S.) published complete source code in BASIC for games, utilities, and other programs. Given BASIC's straightforward nature, it was a simple matter to type in the code from the magazine and execute the program. Different magazines were published featuring programs for specific computers, though some BASIC programs were considered universal and could be used in machines running any variant of BASIC (sometimes with minor adaptations). Many books of type-in programs were also available, and in particular, Ahl published versions of the original 101 BASIC games converted into the Microsoft dialect and published it from Creative Computing as "BASIC Computer Games". This book, and its sequels, provided hundreds of ready-to-go programs that could be easily converted to practically any BASIC-running platform.[9][10][11] The book reached the stores in 1978, just as the home computer market was starting off, and it became the first million-selling computer book. Later packages, such as Learn to Program BASIC would also have gaming as an introductory focus.

On the business-focused CP/M computers which soon became widespread in small business environments, Microsoft BASIC (MBASIC) was one of the leading applications.[12]

IBM PC, and compatibles[edit]

When IBM was designing the IBM PC they followed the paradigm of existing home-computers in wanting to have a built-in BASIC. They sourced this from Microsoft - IBM Cassette BASIC - but Microsoft also produced several other versions of BASIC for MS-DOS/PC DOS including IBM Disk BASIC (BASIC D), IBM BASICA (BASIC A), GW-BASIC (a BASICA-compatible version that did not need IBM's ROM) and QuickBASIC, all typically bundled with the machine. In addition they produced the Microsoft BASIC Compiler aimed at professional programmers.

Turbo Pascal-publisher Borland published Turbo Basic 1.0 in 1985 (successor versions are still being marketed by the original author under the name PowerBASIC). Microsoft wrote the windowing-based AmigaBASIC that was supplied with version 1.1 of the pre-emptive multitasking GUI Amiga computers (late 1985 / early 1986), although the product unusually did not bear any Microsoft marks.

These languages introduced many extensions to the original home-computer BASIC, such as improved string manipulation and graphics support, access to the file system and additional data types. More important were the facilities for structured programming, including additional control structures and proper subroutines supporting local variables.

However, by the latter half of the 1980s users were increasingly using applications written by others, rather than learning programming themselves, while professional programmers now had a wide range of more advanced languages available and BASIC tended to become the butt of derogatory comments such as Dijkstra's famous comment: "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."[13]

Visual Basic[edit]

BASIC's fortunes reversed once again with the introduction in 1991 of Visual Basic ("VB"), by Microsoft. This was an evolutionary development of QuickBasic, and included constructs from other languages such as block structured control statements including With and For Each, parameterized subroutines, optional static typing, and more recentlyTemplate:2001 a full object oriented language. But the language retains considerable links to its past, such as the Dim statement for declarations, Gosub/Return statements, and even line numbers which are still needed to report errors properly.

An important driver for the development of Visual Basic was as the new macro language for Excel.

Ironically, given the origin of BASIC as a "beginner's" language, and apparently even to the surprise of many at Microsoft who still initially marketed it as a language for hobbyists, the language had come into widespread use for small custom business applications shortly after the release of VB version 3.0, which is widely considered the first relatively stable version. While many advanced programmers still scoffed at its use, VB met the needs of small businesses efficiently wherever processing speed was less of a concern than ease of development. By that time, computers running Windows 3.1 had become fast enough that many business-related processes could be completed "in the blink of an eye" even using a "slow" language, as long as large amounts of data were not involved. Many small business owners found they could create their own small, yet useful applications in a few evenings to meet their own specialized needs. Eventually, during the lengthy lifetime of VB3, knowledge of Visual Basic had become a marketable job skill.

Microsoft also produced VBScript in 1996 and Visual Basic .NET in 2001. The latter has essentially the same power as C# and Java but with syntax that reflects the original Basic language.

Three modern Basic variants: Mono Basic, Basic and Gambas

Recent versions[edit]

Many other BASIC dialects have also sprung up since 1990, including the open source QB64, Bywater BASIC, Gambas and FreeBASIC - and the commercial PureBasic, PowerBASIC, RealBasic, and True BASIC (the direct successor to Dartmouth BASIC from a company controlled by Kurtz).

Several web-based simple BASIC interpreters also now exist, including Quite BASIC and Microsoft's Small Basic (educational software).

Versions of BASIC have been showing up for use on smart phones and tablets. Apple App Store contains such implementations of BASIC programming language as smart BASIC, Basic!, HotPaw Basic, BASIC-II, techBASIC and others. Android devices feature such implementations of BASIC as RFO BASIC and Mintoris Basic.

Applications for some mobile computers with proprietary OS (CipherLab) can be built with programming environment based on BASIC.

An application for the Nintendo 3DS and Nintendo DSi called Petit Computer allows for programming in a slightly modified version of BASIC with DS button support. A 3DS sequel was released in Japan in November 2014.


Variants of Basic are available on graphing and otherwise programmable calculators made by Texas Instruments, HP, Casio, and others.[14]

Windows Command Line[edit]

QBasic, a version of Microsoft QuickBasic without the linker to make EXE files, is present in the Windows NT and Dos-Windows 95 streams of operating systems and can be obtained for more recent releases like Windows 7 which do not have them. Prior to Dos 5, the Basic interpreter was GW-Basic. QuickBasic is part of a series of three languages issued by Microsoft for the home and office power user and small scale professional development; QuickC and QuickPascal are the other two.

For Windows 95 and 98, which do not have QBasic installed by default, they can be copied from the installation disc which will have a set of directories for old and optional software; other missing commands like Exe2Bin and others are in these same directories.

Many Linux distributions include Chipmunk Basic.


The various Microsoft, Lotus, and Corel office suites and related products are programmable with Visual Basic in one form or another, including LotusScript, which is very similar to VBA 6. The Host Explorer terminal emulator uses WWB as a macro language; or more recently the programme and the suite in which it is contained is programmable in an in-house Basic variant known as Hummingbird Basic.[15]

The VBScript variant is used for programming web content, Outlook 97, Internet Explorer, and the Windows Script Host. WSH also has a Visual Basic for Applications(VBA) engine installed as the third of the default engines along with VBScript, JScript, and the numerous proprietary or open source engines which can be installed like PerlScript, a couple of Rexx-baed engines, Python, Ruby, Tcl, Delphi, XLNT, PHP, and others;[16] meaning that the two versions of Basic can be used along with the other mentioned languages, as well as LotusScript, in a WSF file, through the component object model, and other WSH and VBA constructions. VBScript is one of the languages that can be accessed by the 4Dos, 4NT, and Take Command enhanced shells[17] SaxBasic and WWB are also very similar to the Visual Basic line of Basic implementations.

The pre-Office 97 macro language for Microsoft Word is known as WordBasic. Excel 4 and 5 use Visual Basic itself as a macro language.


The ubiquity of BASIC interpreters on personal computers was such that textbooks once included simple "Try It In BASIC" exercises that encouraged students to experiment with mathematical and computational concepts on classroom or home computers. Popular computer magazines of the day typically included type-in programs. Futurist and sci-fi writer David Brin mourned the loss of ubiquitous BASIC in a 2006 Salon article[18] as have others who first used computers during this era. In turn, the article prompted Microsoft to develop and release Small Basic.[19]


Typical BASIC keywords[edit]

Data manipulation
Program flow control
Input and output

Data types and variables[edit]

Minimal versions of BASIC had only integer variables and one- or two-letter variable names, which minimised requirements of limited and expensive memory (RAM). More powerful versions had floating-point arithmetic, and variables could be labelled with names six or more characters long. There were some problems and restrictions in early implementations; for example, Applesoft allowed variable names to be several characters long, but only the first two were significant, thus it was possible to inadvertently write a program with variables "LOSS" and "LOAN", which would be treated as being the same; assigning a value to "LOAN" would silently overwrite the value intended as "LOSS". Keywords could not be used in variables in many early BASICs; "SCORE" would be interpreted as "SC" OR "E", where OR was a keyword.

String variables are usually distinguished in many microcomputer dialects by having $ suffixed to their name, and values are often identified as strings by being delimited by "double quotation marks".

Arrays in BASIC could contain integers, floating point or string variables.

Some dialects of BASIC supported matrices and matrix operations, useful for the solution of sets of simultaneous linear algebraic equations. These dialects would directly support matrix operations such as assignment, addition, multiplication (of compatible matrix types), and evaluation of a determinant. Many microcomputer BASICs did not support this data type; matrix operations were still possible, but had to be programmed explicitly on array elements.


Unstructured BASIC[edit]

The original Dartmouth Basic was unusual in having a matrix keyword, MAT.[notes 2] Although dropped by most later microprocessor derivatives it is used in this example from the 1968 manual[20] which averages the numbers that are input:

 5 LET S = 0  10 MAT INPUT V  20 LET N = NUM  30 IF N = 0 THEN 99  40 FOR I = 1 TO N  45 LET S = S + V(I)  50 NEXT I  60 PRINT S/N  70 GO TO 5  99 END 

New BASIC programmers on a home computer might start with a simple program, perhaps using the language's PRINT statement to display a message on the screen; a well-known and often-replicated example is Kernighan and Ritchie's Hello world program:

 10 PRINT "Hello, World!" 140 END 

An infinite loop could be used to fill the display with the message.

Most first-generation BASIC versions such as MSX BASIC and GW-BASIC supported simple data types, loop cycles and arrays. The following example is written for GW-BASIC, but will work in most versions of BASIC with minimal changes:

 10 INPUT "What is your name: ", U$ 20 PRINT "Hello "; U$ 30 INPUT "How many stars do you want: ", N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NEXT I 80 PRINT S$ 90 INPUT "Do you want more stars? ", A$ 100 IF LEN(A$) = 0 THEN GOTO 90 110 A$ = LEFT$(A$, 1) 120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30 130 PRINT "Goodbye "; U$ 140 END 

The resulting dialog might resemble:

 What is your name: Mike Hello Mike How many stars do you want: 7 ******* Do you want more stars? yes How many stars do you want: 3 *** Do you want more stars? no Goodbye Mike 

Structured BASIC[edit]

Second-generation BASICs (for example, True BASIC, QuickBASIC and PowerBASIC) introduced a number of features into the language, primarily related to structured and procedure-oriented programming. Usually, line numbering is omitted from the language and replaced with labels (for GOTO) and procedures to encourage easier and more flexible design.[21]

 DECLARE SUB PrintSomeStars (StarCount!) REM QuickBASIC example INPUT "What is your name: ", UserName$ PRINT "Hello "; UserName$ DO    INPUT "How many stars do you want: ", NumStars    CALL PrintSomeStars(NumStars)    DO       INPUT "Do you want more stars? ", Answer$    LOOP UNTIL Answer$ <> ""    Answer$ = LEFT$(Answer$, 1) LOOP WHILE UCASE$(Answer$) = "Y" PRINT "Goodbye "; UserName$   SUB PrintSomeStars (StarCount)    REM This procedure uses a LOCAL variable called Stars$    Stars$ = STRING$(StarCount, "*")    PRINT Stars$ END SUB 

BASIC with object-oriented features[edit]

Third-generation BASIC dialects such as Visual Basic, REALbasic, StarOffice Basic and BlitzMax introduced features to support object-oriented and event-driven programming paradigm. Most built-in procedures and functions are now represented as methods of standard objects rather than operators.

The following example is in Visual Basic .NET:

 Public Class StarsProgram    Public Shared Sub Main()       Dim UserName, Answer, stars As String, NumStars As Integer       Console.Write("What is your name: ")       UserName = Console.ReadLine()       Console.WriteLine("Hello {0}", UserName)       Do          Console.Write("How many stars do you want: ")          NumStars = CInt(Console.ReadLine())          stars = New String("*", NumStars)          Console.WriteLine(stars)          Do             Console.Write("Do you want more stars? ")             Answer = Console.ReadLine()          Loop Until Answer <> ""          Answer = Answer.Substring(0, 1)       Loop While Answer.ToUpper() = "Y"       Console.WriteLine("Goodbye {0}", UserName)    End Sub End Class 


See also[edit]


  1. ^ Probably the only exception was the Jupiter Ace, which instead used Forth.
  2. ^ From version 3 onwards.
  1. ^ Vaughan-Nichols, Steven (20 February 2007). "Mono brings Visual Basic programs to Linux". Ziff Davis. 
  2. ^ Thomas E. Kurtz - History of Programming Languages Archived October 19, 2013 at the Wayback Machine
  3. ^ BASIC, The Jargon File Archived December 25, 2013 at the Wayback Machine
  4. ^ David H. Ahl, "BASIC Computer Games", p. XI Archived February 9, 2014 at the Wayback Machine
  5. ^ David H. Ahl, "101 BASIC Computer Games", DEC, 1975
  6. ^ David H. Ahl, "Computer Games", InfoWorld, 11 May 1981, p. 44
  7. ^ "you had to pay $5 up front to get it...", Tom Pittman's site Archived October 25, 2012 at the Wayback Machine
  8. ^ "We have a BASIC". New Mexico Museum of Natural History and Science. Archived from the original on 2012-11-30. Retrieved 2007-04-18. 
  9. ^ Table of Contents: BASIC Computer Games Archived February 9, 2014 at the Wayback Machine
  10. ^ Table of Contents: More BASIC Computer Games Archived February 9, 2014 at the Wayback Machine
  11. ^ Table of Contents: Big Computer Games Archived March 28, 2014 at the Wayback Machine
  12. ^ "Osborne 1". Archived from the original on 20 June 2010. Retrieved 21 May 2010. 
  13. ^ Edsger Dijkstra, "How do we tell truths that might hurt?", 18 June 1975, from "Selected Writings on Computing: A Personal Perspective", Springer-Verlag, 1982 Archived May 10, 2014 at the Wayback Machine
  14. ^ Glue Languages
  15. ^ Hummingbird
  16. ^ Windows Script Host
  17. ^ 4NT
  18. ^ Why Johnny Can't Code, By David Brin, Sept. 14, 2006, Salon Technology Archived September 18, 2013 at the Wayback Machine
  19. ^ Small Basic Small Basic Archived March 17, 2014 at the Wayback Machine
  20. ^ BASIC, 4th Edition, 1968, page 53
  21. ^ "Differences Between GW-BASIC and QBasic". 2003-05-12. Archived from the original on 2013-10-19. Retrieved 2008-06-28. 

External links[edit]