Hubbry Logo
BASICBASICMain
Open search
BASIC
Community hub
BASIC
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Contribute something
BASIC
BASIC
from Wikipedia

BASIC
ParadigmNon-structured, later procedural, later object-oriented
Designed by
First appearedMay 1, 1964; 61 years ago (1964-05-01)
Major implementations
Influenced by
Influenced
  • BASIC Programming at Wikibooks

BASIC (Beginner's All-purpose Symbolic Instruction Code)[1] is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College in 1964. They wanted to enable students in non-scientific fields to use computers. At the time, nearly all computers required writing custom software, which only scientists and mathematicians tended to learn.

In addition to the programming language, Kemeny and Kurtz developed the Dartmouth Time-Sharing System (DTSS), which allowed multiple users to edit and run BASIC programs simultaneously on remote terminals. This general model became popular on minicomputer systems like the PDP-11 and Data General Nova in the late 1960s and early 1970s. Hewlett-Packard produced an entire computer line for this method of operation, introducing the HP2000 series in the late 1960s and continuing sales into the 1980s. Many early video games trace their history to one of these versions of BASIC.

The emergence of microcomputers in the mid-1970s led to the development of multiple BASIC dialects, including Microsoft BASIC in 1975. Due to the tiny main memory available on these machines, often 4 KB, a variety of Tiny BASIC dialects were also created. BASIC was available for almost any system of the era and became the de facto programming language for home computer systems that emerged in the late 1970s. These PCs almost always had a BASIC interpreter installed by default, often in the machine's firmware or sometimes on a ROM cartridge.

BASIC declined in popularity in the 1990s, as more powerful microcomputers came to market and programming languages with advanced features (such as Pascal and C) became tenable on such computers. By then, most nontechnical personal computer users relied on pre-written applications rather than writing their own programs. In 1991, Microsoft released Visual Basic, combining an updated version of BASIC with a visual forms builder. This reignited use of the language and "VB" remains a major programming language[2][3] in the form of VB.NET, while a hobbyist scene for BASIC more broadly continues to exist.[4][5]

Origin

[edit]

John G. Kemeny was the chairman of the Dartmouth College Mathematics Department. Based largely on his reputation as an innovator in math teaching, in 1959 the college won an Alfred P. Sloan Foundation award for $500,000 to build a new department building.[6] Thomas E. Kurtz had joined the department in 1956, and from the 1960s Kemeny and Kurtz agreed on the need for programming literacy among students outside the traditional STEM fields. Kemeny later noted that "Our vision was that every student on campus should have access to a computer, and any faculty member should be able to use a computer in the classroom whenever appropriate. It was as simple as that."[7]

Kemeny and Kurtz had made two previous experiments with simplified languages, DARSIMCO (Dartmouth Simplified Code) and DOPE (Dartmouth Oversimplified Programming Experiment). These did not progress past a single freshman class. New experiments using Fortran and ALGOL followed, but Kurtz concluded these languages were too tricky for what they desired. As Kurtz noted, Fortran had numerous oddly formed commands, notably an "almost impossible-to-memorize convention for specifying a loop: DO 100 I = 1, 10, 2. Is it '1, 10, 2' or '1, 2, 10', and is the comma after the line number required or not?"[7]

Moreover, the lack of any sort of immediate feedback was a key problem; the machines of the era used batch processing and took a long time to complete a run of a program. While Kurtz was visiting MIT, John McCarthy suggested that time-sharing offered a solution; a single machine could divide up its processing time among many users, giving them the illusion of having a (slow) computer to themselves.[8] Small programs would return results in a few seconds. This led to increasing interest in a system using time-sharing and a new language specifically for use by non-STEM students.[7]

Kemeny wrote the first version of BASIC. The acronym BASIC comes from the name of an unpublished paper by Thomas Kurtz.[9] The new language was heavily patterned on FORTRAN II; statements were one-to-a-line, numbers were used to indicate the target of loops and branches, and many of the commands were similar or identical to Fortran. However, the syntax was changed wherever it could be improved. For instance, the difficult to remember DO loop was replaced by the much easier to remember FOR I = 1 TO 10 STEP 2, and the line number used in the DO was instead indicated by the NEXT I.[a] Likewise, the cryptic IF statement of Fortran, whose syntax matched a particular instruction of the machine on which it was originally written, became the simpler IF I=5 THEN GOTO 100. These changes made the language much less idiosyncratic while still having an overall structure and feel similar to the original FORTRAN.[7]

The project received a $300,000 grant from the National Science Foundation, which was used to purchase a GE-225 computer for processing, and a Datanet-30 realtime processor to handle the Teletype Model 33 teleprinters used for input and output. A team of a dozen undergraduates worked on the project for about a year, writing both the DTSS system and the BASIC compiler.[7] The first version BASIC language was released on 1 May 1964.[10][11]

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. Usage in the university rapidly expanded, requiring the main CPU to be replaced by a GE-235,[7] and still later by a GE-635. By the early 1970s there were hundreds of terminals connected to the machines at Dartmouth, some of them remotely.

Wanting use of the language to become widespread, its designers made the compiler available free of charge. In the 1960s, software became a chargeable commodity; until then, it was provided without charge as a service with expensive computers, usually available only to lease. They also made it available to high schools in the Hanover, New Hampshire, area and regionally throughout New England on Teletype Model 33 and Model 35 teleprinter terminals connected to Dartmouth via dial-up phone lines, and they put considerable 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.

New Hampshire recognized the accomplishment in 2019 when it erected a highway historical marker in Hanover describing the creation of "the first user-friendly programming language".[12]

Standards

[edit]
ANSI/ISO/IEC/ECMA for Minimal BASIC (withdrawn)
  • ANSI X3.60-1978 "For minimal BASIC" (withdrawn[13])
  • ISO/IEC 6373:1984 "Data processing — Programming languages — Minimal BASIC" (withdrawn[14])
  • ECMA-55 "Minimal BASIC" (withdrawn,[15] similar to ANSI X3.60-1978)
ANSI/ISO/IEC/ECMA for Full BASIC
  • ANSI X3.113-1987 "Programming Languages Full BASIC" (in force[16][17])
  • ISO/IEC 10279:1991 (Rev. 2024) "Information Technology – Programming Languages – Full BASIC" (in force[18])
  • ECMA-116 "BASIC" (withdrawn,[19] similar to ANSI X3.113-1987)
ANSI/ISO/IEC Addendum Defining Modules
  • ANSI X3.113 Interpretations-1992 "BASIC Technical Information Bulletin # 1 Interpretations of ANSI 03.113-1987"
  • ISO/IEC 10279:1991/Amd 1:1994 "Modules and Single Character Input Enhancement" (in force[20])

Spread on time-sharing services

[edit]

The emergence of BASIC took place as part of a wider movement toward time-sharing systems. First conceptualized during the late 1950s, the idea became so dominant in the computer industry by the early 1960s that its proponents were speaking of a future in which users would "buy time on the computer much the same way that the average household buys power and water from utility companies".[21]

General Electric, having worked on the Dartmouth project, wrote their own underlying operating system and launched an online time-sharing system known as Mark I. It featured BASIC as one of its primary selling points. Other companies in the emerging field quickly followed suit; Tymshare introduced SUPER BASIC in 1968, CompuServe had a version on the DEC-10 at their launch in 1969, and by the early 1970s BASIC was largely universal on general-purpose mainframe computers. Even IBM eventually joined the club with the introduction of VS-BASIC in 1973.[22]

Although time-sharing services with BASIC were successful for a time, the widespread success predicted earlier was not to be. The emergence of minicomputers during the same period, and especially low-cost microcomputers in the mid-1970s, allowed anyone to purchase and run their own systems rather than buy online time which was typically billed at dollars per minute.[b][23]

Spread on minicomputers

[edit]
The HP 2000 system was designed to run time-shared BASIC as its primary task.

BASIC, by its very nature of being small, was naturally suited to porting to the minicomputer market, which was emerging at the same time as the time-sharing services. These machines had small main memory, perhaps as little as 4 KB in modern terminology,[c] and lacked high-performance storage like hard drives that make compilers practical. On these systems, BASIC was normally implemented as an interpreter rather than a compiler due to its lower requirement for working memory.[d]

A particularly important example was HP Time-Shared BASIC, which, like the original Dartmouth system, used two computers working together to implement a time-sharing system. The first, a low-end machine in the HP 2100 series, was used to control user input and save and load their programs to tape or disk. The other, a high-end version of the same underlying machine, ran the programs and generated output. For a cost of about $100,000, one could own a machine capable of running between 16 and 32 users at the same time.[24] The system, bundled as the HP 2000, was the first mini platform to offer time-sharing and was an immediate runaway success, catapulting HP to become the third-largest vendor in the minicomputer space, behind DEC and Data General (DG).[25]

DEC, the leader in the minicomputer space since the mid-1960s, had initially ignored BASIC. This was due to their work with RAND Corporation, who had purchased a PDP-6 to run their JOSS language, which was conceptually very similar to BASIC.[26] This led DEC to introduce a smaller, cleaned up version of JOSS known as FOCAL, which they heavily promoted in the late 1960s. However, with timesharing systems widely offering BASIC, and all of their competition in the minicomputer space doing the same, DEC's customers were clamoring for BASIC. After management repeatedly ignored their pleas, David H. Ahl took it upon himself to buy a BASIC for the PDP-8, which was a major success in the education market. By the early 1970s, FOCAL and JOSS had been forgotten and BASIC had become almost universal in the minicomputer market.[27] DEC would go on to introduce their updated version, BASIC-PLUS, for use on the RSTS/E time-sharing operating system.

During this period a number of simple text-based games were written in BASIC, most notably Mike Mayfield's Star Trek. David Ahl collected these, some ported from FOCAL, and published them in an educational newsletter he compiled. He later collected a number of these into book form, 101 BASIC Computer Games, published in 1973.[28] 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.[29]

Explosive growth: the home computer era

[edit]
Commodore BASIC v2.0 on the Commodore 64
MSX BASIC version 3.0
"Train Basic every day!"—reads a poster (bottom center) in a Russian school (c. 1985–86)

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, many of whom had seen BASIC on minis or mainframes. Despite Dijkstra's famous judgment in 1975, "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",[30] BASIC was one of the few languages that was both high-level enough to be usable by those without training and small enough to fit into the microcomputers of the day, making it the de facto standard programming language on early microcomputers.

The first microcomputer version of BASIC was co-written by Bill Gates, Paul Allen and Monte Davidoff for their newly formed company, Micro-Soft.[31] This was released by MITS in punch tape format for the Altair 8800 shortly after the machine itself,[32] immediately cementing BASIC as the primary language of early microcomputers. Members of the Homebrew Computer Club began circulating copies of the program, causing Gates to write his Open Letter to Hobbyists, complaining about this early example of software piracy.

Partially in response to Gates's letter, and partially to make an even smaller BASIC that would run usefully on 4 KB machines,[e] Bob Albrecht urged Dennis Allison to write their own variation of the language. 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. This led to a wide variety of Tiny BASICs with added features or other improvements, with versions from Tom Pittman and Li-Chen Wang becoming particularly well known.[33]

Micro-Soft, by this time Microsoft, ported their interpreter for the MOS 6502, which quickly become one of the most popular microprocessors of the 8-bit era. When new microcomputers began to appear, notably the "1977 trinity" of the TRS-80, Commodore PET and Apple II, they either included a version of the MS code, or quickly introduced new models with it. Ohio Scientific's personal computers also joined this trend at that time. By 1978, MS BASIC was a de facto standard and practically every home computer of the 1980s included it in ROM. Upon boot, a BASIC interpreter in direct mode was presented.

Commodore Business Machines includes Commodore BASIC, based on Microsoft BASIC. The Apple II and TRS-80 each have two versions of BASIC: a smaller introductory version with the initial releases of the machines and a Microsoft-based version introduced 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 computers use the 8 KB Atari BASIC which is not derived from Microsoft BASIC. Sinclair BASIC was introduced in 1980 with the Sinclair ZX80, and was later extended for the Sinclair ZX81 and the Sinclair ZX Spectrum. The BBC-published BBC BASIC, developed by Acorn Computers, incorporates extra structured programming keywords and floating-point features.

As the popularity of BASIC grew in this period, computer magazines published complete source code in BASIC for video 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.[28][34][35] 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.[36]

In 1978, David Lien published the first edition of The BASIC Handbook: An Encyclopedia of the BASIC Computer Language, documenting keywords across over 78 different computers. By 1981, the second edition documented keywords from over 250 different computers, showcasing the explosive growth of the microcomputer era.[37]

IBM PC and compatibles

[edit]
IBM Cassette BASIC 1.10

When IBM was designing the IBM PC, they followed the paradigm of existing home computers in having a built-in BASIC interpreter. 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)[38] and QBasic, all typically bundled with the machine. In addition they produced the Microsoft QuickBASIC Compiler (1985) for power users and hobbyists, and the Microsoft BASIC Professional Development System (PDS) for professional programmers. Turbo Pascal-publisher Borland published Turbo Basic 1.0 in 1985 (successor versions were marketed under the name PowerBASIC).

On Unix-like systems, specialized implementations were created such as XBasic and X11-Basic.[39] XBasic was ported to Microsoft Windows as XBLite, and cross-platform variants such as SmallBasic, yabasic, Bywater BASIC,[40][41] nuBasic,[42] MyBasic,[43] Logic Basic,[44] Liberty BASIC, and wxBasic emerged. FutureBASIC and Chipmunk Basic meanwhile targeted the Apple Macintosh, while yab is a version of yaBasic optimized for BeOS, ZETA and Haiku.[45]

These later variations introduced many extensions, 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.[46] The addition of an integrated development environment (IDE) and electronic Help files made the products easier to work with and supported learning tools and school curriculum.

In 1989, Microsoft Press published Learn BASIC Now, a book-and-software system designed to teach BASIC programming to self-taught learners who were using IBM-PC compatible systems and the Apple Macintosh. Learn BASIC Now included software disks containing the Microsoft QuickBASIC Interpreter and a programming tutorial written by Michael Halvorson and David Rygmyr. Learning systems like Learn BASIC Now popularized structured BASIC and helped QuickBASIC reach an installed base of four million active users.[47]

By the late 1980s, many users were using pre-made applications written by others rather than learning programming themselves, and professional developers had a wide range of advanced languages available on small computers. C and later C++ became the languages of choice for professional "shrink wrap" application development.[48][49]

A niche that BASIC continued to fill was for hobbyist video game development, as game creation systems and readily available game engines were still in their infancy. The Atari ST had STOS BASIC while the Amiga had AMOS BASIC for this purpose. Microsoft first exhibited BASIC for game development with DONKEY.BAS for GW-BASIC, and later GORILLA.BAS and NIBBLES.BAS for QuickBASIC. QBasic maintained an active game development community,[50][51] which helped later spawn the QB64 and FreeBASIC implementations.[52] An early example of this market is the QBasic software package Microsoft Game Shop (1990), a hobbyist-inspired release that included six "arcade-style" games that were easily customizable in QBasic.[53]

In 2013, a game written in QBasic and compiled with QB64 for modern computers entitled Black Annex was released on Steam.[54][55] Blitz Basic, Dark Basic, SdlBasic, Super Game System Basic,[56] PlayBASIC,[57] CoolBasic,[58] AllegroBASIC,[59] ethosBASIC,[60] GLBasic and Basic4GL further filled this demand, right up to the modern RCBasic,[61] NaaLaa,[62] AppGameKit,[63] Monkey 2, and Cerberus-X.[64]

Visual Basic

[edit]

In 1991, Microsoft introduced Visual Basic, an evolutionary development of QuickBASIC. It included constructs from that language such as block-structured control statements, parameterized subroutines and optional static typing as well as object-oriented constructs from other languages such as "With" and "For Each". The language retained some compatibility with its predecessors, such as the Dim keyword for declarations, "Gosub"/Return statements and optional line numbers which could be used to locate errors. An important driver for the development of Visual Basic was as the new macro language for Microsoft Excel, a spreadsheet program. To the surprise of many at Microsoft who still initially marketed it as a language for hobbyists, the language came 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. Microsoft also spun it off as Visual Basic for Applications and Embedded Visual Basic.

While many advanced programmers still scoffed at its use, VB met the needs of small businesses efficiently as 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, and also features some cross-platform capability through implementations such as Mono-Basic.[65] The IDE, with its event-driven GUI builder, was also influential on other rapid application development tools, most notably Borland Software's Delphi for Object Pascal and its own descendants such as Lazarus.[66][67]

Mainstream support for the final version 6.0 of the original Visual Basic ended on March 31, 2005, followed by extended support in March 2008.[68] Owing to its persistent remaining popularity,[69] third-party attempts to further support it exist.[70] On February 2, 2017, Microsoft announced that development on VB.NET would no longer be in parallel with that of C#,[71] and on March 11, 2020, it was announced that evolution of the VB.NET language had also concluded.[72] Even so, the language was still supported.[73]

Three modern Basic variants: Mono Basic, OpenOffice.org Basic and Gambas

Post-1990 versions and dialects

[edit]

Many other BASIC dialects have also sprung up since 1990, including the open source QB64 and FreeBASIC, inspired by QBasic, and the Visual Basic-styled RapidQ, HBasic, Basic For Qt and Gambas.[4] Modern commercial incarnations include PureBasic, PowerBASIC, Xojo, Monkey X 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 Microsoft's Small Basic and Google's wwwBASIC.[74] A number of compilers also exist that convert BASIC into JavaScript.[75] such as NS Basic.

A sample BASIC programme running under YABASIC for the Sony PS2

Building from earlier efforts such as Mobile Basic,[76][77] many dialects are now available for smartphones and tablets.

On game consoles, 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 version has also been released for Nintendo Switch, which has also been supplied a version of the Fuze Code System,[78] a BASIC variant[79] first implemented as a custom Raspberry Pi machine.[80] Previously BASIC was made available on consoles as Family BASIC (for the Nintendo Famicom) and PSX Chipmunk Basic (for the original PlayStation), while yabasic was ported to the PlayStation 2 and FreeBASIC to the original Xbox.

Calculators

[edit]

Variants of BASIC are available on graphing and otherwise programmable calculators made by Texas Instruments (TI-BASIC), HP (HP BASIC), Casio (Casio BASIC), and others.

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.

Other

[edit]
BASIC came to some video game systems, such as the Famicom.

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. 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-based engines, Python, Ruby, Tcl, Delphi, XLNT, PHP, and others; 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. 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. Chipmunk Basic, an interpreter similar to BASICs of the 1970s, is available for Linux, Windows, and macOS.

Legacy

[edit]

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[81] as have others who first used computers during this era. In turn, the article prompted Microsoft to develop and release Small Basic;[82] it also inspired similar projects like Basic-256[83][84] and the web based Quite Basic.[85] Dartmouth held a 50th anniversary celebration for BASIC on 1 May 2014.[86] The pedagogical use of BASIC has been followed by other languages, such as Pascal, Java and particularly Python.[87]

Dartmouth College celebrated the 50th anniversary of the BASIC language with a day of events[88] on April 30, 2014. A short documentary film was produced for the event.[89]

Syntax

[edit]

Typical BASIC keywords

[edit]

Data manipulation

[edit]
LET
assigns a value (which may be the result of an expression) to a variable. In most dialects of BASIC, LET is optional, and a line with no other identifiable keyword will assume the keyword to be LET.
DATA
holds a list of values which are assigned sequentially using the READ command.
READ
reads a value from a DATA statement and assigns it to a variable. An internal pointer keeps track of the last DATA element that was read and moves it one position forward with each READ. Most dialects allow multiple variables as parameters, reading several values in a single operation.
RESTORE
resets the internal pointer to the first DATA statement, allowing the program to begin READing from the first value. Many dialects allow an optional line number or ordinal value to allow the pointer to be reset to a selected location.
DIM
Sets up an array.

Program flow control

[edit]
IF ... THEN ... {ELSE}
used to perform comparisons or make decisions. Early dialects only allowed a line number after the THEN, but later versions allowed any valid statement to follow. ELSE was not widely supported, especially in earlier versions.
FOR ... TO ... {STEP} ... NEXT
repeat a section of code a given number of times. A variable that acts as a counter, the "index", is available within the loop.
WHILE ... WEND and REPEAT ... UNTIL
repeat a section of code while the specified condition is true. The condition may be evaluated before each iteration of the loop, or after. Both of these commands are found mostly in later dialects.
DO ... LOOP {WHILE} or {UNTIL}
repeat a section of code indefinitely or while/until the specified condition is true. The condition may be evaluated before each iteration of the loop, or after. Similar to WHILE, these keywords are mostly found in later dialects.
GOTO
jumps to a numbered or labelled line in the program. Most dialects also allowed the form GO TO.
GOSUB ... RETURN
jumps to a numbered or labelled line, executes the code it finds there until it reaches a RETURN command, on which it jumps back to the statement following the GOSUB, either after a colon, or on the next line. This is used to implement subroutines.
ON ... GOTO/GOSUB
chooses where to jump based on the specified conditions. See Switch statement for other forms.
DEF FN
a pair of keywords introduced in the early 1960s to define functions. The original BASIC functions were modelled on FORTRAN single-line functions. BASIC functions were one expression with variable arguments, rather than subroutines, with a syntax on the model of DEF FND(x) = x*x at the beginning of a program. Function names were originally restricted to FN, plus one letter, i.e., FNA, FNB ...

Input and output

[edit]
LIST
displays the full source code of the current program.
PRINT
displays a message on the screen or other output device.
INPUT
asks the user to enter the value of a variable. The statement may include a prompt message.
TAB
used with PRINT to set the position where the next character will be shown on the screen or printed on paper. AT is an alternative form.
SPC
prints out a number of space characters. Similar in concept to TAB but moves by a number of additional spaces from the current column rather than moving to a specified column.

Mathematical functions

[edit]
ABS
Absolute value
ATN
Arctangent (result in radians)
COS
Cosine (argument in radians)
EXP
Exponential function
INT
Integer part (typically floor function)
LOG
Natural logarithm
RND
Random number generation
SIN
Sine (argument in radians)
SQR
Square root
TAN
Tangent (argument in radians)

Miscellaneous

[edit]
REM
holds a programmer's comment or REMark; often used to give a title to the program and to help identify the purpose of a given section of code.
USR ("User Serviceable Routine")
transfers program control to a machine language subroutine, usually entered as an alphanumeric string or in a list of DATA statements.
CALL
alternative form of USR found in some dialects. Does not require an artificial parameter to complete the function-like syntax of USR, and has a clearly defined method of calling different routines in memory.
TRON / TROFF
turns on display of each line number as it is run ("TRace ON"). This was useful for debugging or correcting of problems in a program. TROFF turns it back off again.
ASM
some compilers such as Freebasic,[90] Purebasic,[91] and Powerbasic[92] also support inline assembly language, allowing the programmer to intermix high-level and low-level code, typically prefixed with "ASM" or "!" statements.

Data types and variables

[edit]

Minimal versions of BASIC had only integer variables and one- or two-letter variable names, which minimized 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 BASIC 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 as a sigil, 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, which can be used to solve 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.

Examples

[edit]
A simple game implemented in BASIC

Unstructured BASIC

[edit]

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!"
20 END

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

10 PRINT "Hello, World!"
20 GOTO 10

Note that the END statement is optional and has no action in most dialects of BASIC. It was not always included, as is the case in this example. This same program can be modified to print a fixed number of messages using the common FOR...NEXT statement:

10 LET N=10
20 FOR I=1 TO N
30 PRINT "Hello, World!"
40 NEXT I

Most home computers 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

The original Dartmouth Basic was unusual in having a matrix keyword, MAT.[f] Although not implemented by most later microprocessor derivatives, it is used in this example from the 1968 manual[93] 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

Structured BASIC

[edit]

Second-generation BASICs (for example, VAX Basic, SuperBASIC, True BASIC, QuickBASIC, BBC BASIC, Pick BASIC, PowerBASIC, Liberty BASIC, QB64 and (arguably) COMAL) 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.[46] In addition keywords and structures to support repetition, selection and procedures with local variables were introduced.

The following example is in Microsoft QuickBASIC:

REM QuickBASIC example

REM Forward declaration - allows the main code to call a
REM    subroutine that is defined later in the source code
DECLARE SUB PrintSomeStars (StarCount!)

REM Main program follows
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$
END

REM subroutine definition
SUB PrintSomeStars (StarCount)
   REM This procedure uses a local variable called Stars$
   Stars$ = STRING$(StarCount, "*")
   PRINT Stars$
END SUB

Object-oriented BASIC

[edit]

Third-generation BASIC dialects such as Visual Basic, Xojo, Gambas, StarOffice Basic, BlitzMax and PureBasic 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. Also, the operating system became increasingly accessible to the BASIC language.

The following example is in Visual Basic .NET:

Public Module StarsProgram
   Private Function Ask(prompt As String) As String
      Console.Write(prompt)
      Return Console.ReadLine()
   End Function

   Public Sub Main()
      Dim userName = Ask("What is your name: ")
      Console.WriteLine("Hello {0}", userName)

      Dim answer As String

      Do
         Dim numStars = CInt(Ask("How many stars do you want: "))
         Dim stars As New String("*"c, numStars)
         Console.WriteLine(stars)

         Do
            answer = Ask("Do you want more stars? ")
         Loop Until answer <> ""
      Loop While answer.StartsWith("Y", StringComparison.OrdinalIgnoreCase)

      Console.WriteLine("Goodbye {0}", userName)
   End Sub
End Module

Compilers and interpreters

[edit]

Compiler Author Working state Windows Unix-like Other OSs License type Standard conformance
Minimal BASIC Full BASIC
AppGameKit The Game Creators Current Yes Yes No Proprietary ? ?
BASIC-PLUS-2[citation needed] Digital Equipment Corporation Discontinued No ? RSTS/E, RSX-11M Proprietary ? ?
BBC BASIC for SDL 2.0 Richard T. Russell Current Yes Yes (Linux, macOS, Android) Yes (Raspberry Pi OS) No No
BlitzMax Blitz Research Discontinued Yes Yes (Linux, macOS) No No No
DarkBASIC The Game Creators Inactive Yes No No No No
ECMA-55 Minimal BASIC compiler[94] John Gatewood Ham Current No Linux No Yes No
FreeBASIC FreeBASIC Development Team Current Yes Yes MS-DOS, FreeBSD, Linux Partial[95] No
FutureBASIC Brilor Software Current No macOS Classic Mac OS Proprietary Partial No
Gambas Benoît Minisini Current No Yes No No No
GFA BASIC Frank Ostrowski Abandoned Yes No Amiga, Atari ST, MS-DOS Proprietary No No
Mercury RemObjects Current Yes Yes (Linux, macOS, Android, iOS) Yes (WebAssembly) Proprietary No No
PowerBASIC (formerly Turbo Basic) PowerBASIC, Inc. Inactive Yes No DOS Proprietary ? ?
PureBasic Fantaisie Software Current Yes Yes Yes Proprietary No No
QB64 Galleon Current Yes Yes Yes Partial No
QuickBASIC Microsoft Discontinued No No MS-DOS Proprietary Partial No
Tandem BASIC[citation needed] Tandem Computers Historic No No Guardian, NonStop Kernel, NonStop OS Proprietary No No
True BASIC True BASIC Current Yes No No Proprietary Yes Partial[96]
VSI BASIC for OpenVMS VMS Software, Inc. Current No No OpenVMS Proprietary No No
Xojo (formerly REALbasic) Xojo Inc. (formerly Real Software) Current Yes Yes Yes Proprietary No No

See also

[edit]

Notes

[edit]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
BASIC (Beginner's All-purpose Symbolic Instruction Code) is a family of high-level, interpreted programming languages designed for simplicity and accessibility, enabling beginners and non-technical users to write and execute code with minimal complexity. Developed in 1964 by mathematicians and at in , it was created to democratize computing for students across disciplines, particularly those outside mathematics and science, through an interactive system. The language launched on May 1, 1964, at 4:00 a.m. Eastern Time on a GE-225 as part of the Dartmouth Time-Sharing System (DTSS), marking the first widespread use of for general-purpose programming. Featuring a straightforward syntax with just 15 core commands—such as PRINT, GOTO, and IF—BASIC emphasized line-by-line execution and immediate feedback, making it ideal for educational settings and . Its impact extended far beyond academia, profoundly shaping personal computing in the 1970s and 1980s by becoming the default language on early microcomputers like the , , Commodore 64, and PC. A pivotal adaptation was , developed by and in 1975 for the , which fueled the company's growth and embedded BASIC in ROM on millions of home computers, enabling widespread software experimentation and hobbyist innovation. By 1967, over 2,000 Dartmouth students had learned to program in BASIC, and its adoption spread globally, introducing to diverse fields like business, education, and engineering. Over decades, BASIC evolved into numerous dialects, including Dartmouth BASIC, for resource-constrained systems, (bundled with ), and for graphical applications, though it faced criticism for promoting unstructured "" via heavy reliance on statements. Standardized efforts, such as ANSI Minimal BASIC in 1978 and Full BASIC in 1987, aimed to unify variants, but its influence persists in modern languages like Python and through shared emphasis on readability and beginner-friendliness. Today, legacy implementations like VBA () remain in use for automation in tools such as , underscoring BASIC's enduring role in making programming approachable.

History

Origins at

BASIC, or Beginner's All-purpose Symbolic Instruction Code, was developed in 1964 by mathematicians and at to make computing accessible to a broad range of students, including those in the arts, s, and , rather than limiting it to and mathematics majors. The primary goals were to create a language emphasizing simplicity, interactivity, and an English-like syntax that contrasted with the more complex and formulaic structure of languages like , thereby democratizing programming for non-experts. The first implementation occurred on the Dartmouth Time-Sharing System (DTSS), a custom operating system built for a GE-225 , which allowed multiple users to interact with the machine simultaneously via remote terminals. This initial version of Dartmouth BASIC supported and basic operations, reflecting its focus on foundational computing concepts accessible to beginners without advanced numerical precision. Key features included line-numbered statements for organizing code, an immediate execution mode for instant feedback on commands, and a small set of keywords such as LET for assignments, PRINT for output, and IF for conditional logic. On May 1, 1964, at 4 a.m., Kemeny and a student programmer successfully ran the first BASIC programs simultaneously from separate terminals in the basement of Dartmouth's College Hall, marking the language's operational debut and confirming the viability of its approach. This original Dartmouth BASIC laid the groundwork for later dialects, including , by establishing core principles of accessibility and ease of use.

Early Spread on Time-Sharing Systems

Following the initial development at , BASIC quickly spread to commercial systems in the late , adapting its foundational principles of simplicity and interactivity to multi-user environments. (DEC) played a key role by integrating BASIC-like capabilities into its PDP-8 minicomputers, which were popular for educational and small-scale computing. DEC's FOCAL interpreter, released in 1969, served as an early analog to BASIC on the PDP-8 family, enabling formula-based calculations in setups like the TSS-8 operating system, which supported multiple virtual 4K machines for concurrent users. By the early 1970s, DEC's own BASIC-8 dialect extended this further, running under TSS-8 to facilitate remote programming sessions on PDP-8 systems marketed through the EduSystem program, thus broadening access beyond academic labs. Hewlett-Packard advanced 's time-sharing adoption with the HP 2000A system in 1968, built around the HP 2116 processor and dedicated to a multi-user . This implementation supported up to 16 simultaneous terminals, emphasizing conversational programming for education and problem-solving, with automatic to handle results beyond six-digit integers, such as converting large computations to (e.g., 1.698990E9). The system's disc-based storage allowed for 250,000 words of program libraries, enabling users to save and share code efficiently in real-time sessions. General Electric (GE) further propelled BASIC's proliferation through its collaboration on the Dartmouth Time-Sharing System (DTSS), operational by 1965 on GE-225 and GE-635 hardware with a Datanet-30 controller. GE's BASIC implementation supported up to 32 remote teletype terminals, compiling and executing programs in 1-4 seconds while handling floating-point operations via the GE-235. This setup influenced widespread adoption in education for undergraduate instruction and faculty research, as well as in business for general-purpose data processing, by providing a user-friendly interface with commands like HELLO for login and SAVE for program storage. These systems democratized programming by offering low-cost remote access via lines, with terminal connections as affordable as $7 per hour for light use on platforms like the HP 2000. Such pricing, combined with no additional line charges for local terminals, allowed students, educators, and small businesses to engage in interactive coding without owning expensive hardware, fostering BASIC's growth from an academic tool to a commercial staple. However, early time-sharing BASIC dialects faced significant constraints due to limited hardware, particularly on systems like the PDP-8 with only 4K words (approximately 6KB) of core memory per virtual machine. These restrictions resulted in minimalistic implementations, often lacking advanced features like subroutines in initial versions to fit within memory budgets, prioritizing basic arithmetic, loops, and input/output for short numerical tasks.

Adoption on Minicomputers

In the early 1970s, BASIC began transitioning from environments to standalone s, enabling local execution on dedicated hardware for small businesses and emerging hobbyist applications. (DEC) played a pivotal role with the release of BASIC-PLUS in 1970 for its PDP-11 series, an extended dialect that introduced robust string handling capabilities and direct disk input/output operations to support text processing and file management tasks. This version enhanced BASIC's utility for commercial and educational computing on the PDP-11, a 16-bit launched that year, by allowing efficient manipulation of alphanumeric data without relying on remote systems. A landmark development occurred in 1975 when and created the 4K BASIC interpreter for the MITS , the first commercially successful kit based on the . This compact version, fitting within 4 kilobytes of memory, marked the founding of and was distributed via cassette tapes or paper tape, making it accessible for hobbyists to load and run programs on affordable hardware kits priced around $397. The emphasized simplicity for experimentation, with core features like line-numbered statements and basic arithmetic, fostering early software distribution models in the minicomputer era. Other vendors developed hardware-specific BASIC dialects to meet business needs. Wang Laboratories extended BASIC for its VS series minicomputers, introduced in 1977, incorporating interactive extensions for workstation-based data entry and report generation to streamline tasks such as formatted output and validation. These enhancements, including screen formatting and file integration, positioned Wang VS BASIC as a tool for applications like tracking and on systems supporting multiple users. The adoption of BASIC on minicomputers was driven by falling hardware costs, with systems like Computer Automation's Alpha LSI-2 available for under $2,000 in 1972 and IBM's Series/1 starting at $10,000 by 1976, allowing small businesses to perform on-site programming without the recurring fees of services. This affordability, combined with BASIC's ease of use, enabled non-expert users in firms and hobbyist clubs to develop custom applications for and process control, expanding computing beyond large institutions. Technical evolutions in these dialects addressed the demands of larger programs on minicomputers, with variants incorporating structured elements such as the GOSUB statement for subroutine calls and RETURN for modular code organization, as seen in implementations derived from Dartmouth BASIC. These features improved program maintainability on systems like the PDP-11, where memory constraints necessitated efficient without excessive GOTOs.

Explosive Growth in Home Computing

The explosive growth of home computing in the late 1970s was catalyzed by the introduction of affordable, fully assembled microcomputers that featured BASIC as a built-in programming language, making coding accessible to hobbyists, educators, and families without requiring specialized expertise. In 1977, three landmark systems—the , , and —collectively known as the "1977 Trinity," ignited this surge by offering turnkey solutions with BASIC interpreters stored in (ROM), allowing users to begin programming immediately upon powering on. These machines drew from earlier practices of memory-efficient coding to fit within limited resources, enabling widespread adoption in homes and schools. The , released in 1977, exemplified this trend with its 8 KB version including a built-in 6502 , display, full keyboard, and cassette drive, all integrated into a single metal-cased unit priced at around $795; its 4 KB or 8 KB ROM-based BASIC enabled instant programming for tasks like simple games and data entry. Similarly, the , also launched in 1977 and designed by , incorporated in ROM, supporting color primitives and sound generation through its expansion slots and TV output, which facilitated creative applications such as and early experiments. The Model I, introduced by in the same year for $599.95, came with 4 KB RAM and Level I BASIC in 4 KB ROM, later upgradable to Level II BASIC with extensions for and basic , appealing to budget-conscious consumers through widespread retail availability. Building on this momentum, Atari's 400 and 800 models, released in , further expanded BASIC's reach with dialects that leveraged custom chips for advanced graphics (via ANTIC and GTIA) and sound (via ), alongside four joystick ports for interactive programming of games and simulations; , typically provided on a cartridge or disk, integrated these hardware features through dedicated commands. By 1985, the market had exploded, with over 10 million units sold cumulatively—many pre-installed with BASIC in ROM—empowering non-programmers to create custom games, utilities, and household applications, and fostering a vibrant ecosystem of user-shared software that democratized . Preceding this boom, variants like , developed by Li-Chen Wang in 1976 and published in , targeted ultra-low-memory machines with just 2-4 KB of RAM, offering a compact interpreter that promoted open-source sharing through magazines such as Byte, where enthusiasts exchanged code listings to adapt it for emerging hardware. This grassroots dissemination laid the groundwork for BASIC's ubiquity, as it encouraged experimentation and community-driven innovation in the constrained environments of early home systems.

Evolution on Personal Computers

The introduction of the Personal Computer in 1981 marked a pivotal shift for BASIC, transitioning it from the diverse 8-bit landscape to the standardized 16-bit IBM PC and compatible ecosystem running . IBM bundled Microsoft's Cassette BASIC in ROM for basic functionality, but for disk-based systems, it included BASICA (Basic Advanced), a disk-resident interpreter that extended the ROM BASIC with additional commands for file handling and disk operations. BASICA was provided as OEM software with PC-DOS, enabling compatibility across IBM's and fostering BASIC's dominance in early business and hobbyist programming on the platform. Microsoft further solidified its position with , released in 1983 as a standalone interpreter for non-IBM systems, derived directly from BASICA to ensure binary compatibility. supported advanced graphics modes, including those for CGA and later EGA adapters, allowing programmers to leverage the PC's expanding hardware capabilities for color and high-resolution output—building on simpler graphics primitives from earlier home computers. This version was bundled with distributions for IBM PC compatibles, promoting portability and ease of use in the growing DOS environment, where programs shifted from cassette tapes to floppy disks and hard drives, accommodating larger codebases up to the system's 640 KB RAM limit. By the late 1980s, competition intensified with Borland's Turbo BASIC in 1987, a that emphasized speed and efficiency, compiling programs faster than Microsoft's offerings while supporting inline assembly for performance-critical sections. This tool appealed to developers seeking optimized executables without sacrificing BASIC's accessibility. Meanwhile, BASIC played a key role in early PC software ecosystems, such as extending —the landmark —with custom macros and functions written in BASIC to add features like advanced mathematical operations. Microsoft's , introduced in 1991 with 5.0, represented the culmination of this command-line era for PC BASIC interpreters, featuring an integrated full-screen editor for streamlined program development and enhanced file handling capabilities. maintained with while incorporating elements like improved error handling, reflecting the maturing DOS platform and preparing users for more sophisticated dialects. These evolutions underscored BASIC's adaptability to the PC standard, driving its widespread use in , utilities, and small applications throughout the .

Post-1990 Developments and Dialects

Following the shift toward graphical user interfaces in the early , Microsoft introduced 1.0 in May 1991, marking a significant evolution in BASIC by integrating drag-and-drop form designers and specifically for applications. This release transformed BASIC from a primarily text-based scripting tool into a environment, enabling developers to visually assemble user interfaces and respond to user events like button clicks without extensive manual coding. Over a decade later, launched VB.NET in 2002 as an integral part of the .NET Framework, fundamentally redesigning the language with comprehensive features such as classes, inheritance, and polymorphism. VB.NET incorporated automatic garbage collection for and supported cross-language within the .NET ecosystem, allowing seamless integration with languages like C# and leveraging shared libraries for enhanced scalability in . These advancements positioned VB.NET as a bridge between classic BASIC simplicity and modern, robust application development. In parallel, open-source efforts emerged to revive and extend legacy BASIC dialects for contemporary hardware. , first released in 2004, serves as an open-source that maintains syntax compatibility with while generating native executables for Windows, , and other platforms, including support for pointers, inline assembly, and object-oriented extensions. Similarly, QB64, developed in the mid-2000s, functions as a self-hosting and that preserves 's syntax and commands—such as those from the DOS-era —while compiling to 64-bit binaries for modern operating systems like Windows, macOS, and , facilitating the porting of vintage games and utilities. Specialized dialects also proliferated for targeted domains. , originating in the late 1990s, focuses on cross-platform application development across Windows, , macOS, and , offering a clean syntax with built-in support for GUI creation, database access, and networking without requiring external libraries. BlitzBasic, likewise introduced in the 1990s, targeted game development with an emphasis on , incorporating 3D graphics acceleration, , and handling to streamline the creation of real-time applications on platforms like and later Windows. As of 2025, BASIC dialects continue to evolve in niche contexts despite a broader decline in mainstream adoption. , a Linux-oriented IDE and runtime that emulates syntax, saw its version 3.20.0 released in January 2025, featuring improved GUI theming, enhanced web application , and better integration with desktop environments like and . While BASIC has receded from general-purpose software development in favor of languages like Python and , it persists in embedded systems for tasks such as programming and simple , where its straightforward syntax aids quick prototyping in resource-constrained environments.

Language Features

Syntax Fundamentals

BASIC employs a line-based structure for program organization, where each line consists of a unique number followed by a single statement. This design, introduced in the original Dartmouth implementation, ensures that statements are executed in ascending numerical order unless altered by control mechanisms, facilitating simple sequential processing. Line numbers, ranging from 1 to 99999, also act as labels for referencing during editing or flow redirection, with common practice incrementing by 10 (e.g., 10, 20) to accommodate insertions without renumbering. The fundamental format of a BASIC statement begins with a keyword denoting the operation, such as assignment or output, followed by any necessary operands, expressions, or parameters. Statements are concise and English-like, promoting for beginners, and must fit within a single line unless extended in later dialects. Every program requires an END statement as the final line to terminate execution and return control to the . BASIC distinguishes between direct mode and program mode to support interactive use. In direct mode, unnumbered statements entered at the prompt are executed immediately upon input, enabling quick computations or diagnostics without storing . Numbered statements, conversely, accumulate in program mode to form a complete script, which is then run holistically via the , allowing for persistent, repeatable execution. Early BASIC variants provided rudimentary error handling, where runtime errors like would interrupt execution and display an , reverting to the monitor without trapping. Extended dialects, starting with implementations like those from in the late , added the ON ERROR GOTO construct to intercept errors and transfer control to a designated line for custom recovery or logging. From its unstructured beginnings reliant on unconditional jumps, BASIC gradually incorporated optional structured elements in dialects from the onward. Versions such as True BASIC and ANSI-standard extensions introduced block-delimited constructs, including multi-line conditional statements ending with END IF, to encourage while maintaining compatibility with legacy line-numbered code.

Data Types and Variables

BASIC, designed for accessibility, employs implicit typing where the data type of a variable is inferred from its name rather than requiring explicit declarations, a feature that simplifies programming for beginners. In the original Dartmouth BASIC, variables are numeric by default and consist of a single uppercase letter optionally followed by a digit (e.g., A or X5), supporting up to 286 possible names without suffixes for types. Strings, introduced later in this dialect, are denoted by appending a ()tothevariablename(e.g.,A) to the variable name (e.g., A), distinguishing them from numeric variables. Subsequent dialects, particularly those from such as , expanded this system with type es to specify precision and category, while retaining implicit typing as the default mechanism. Numeric variables without a default to single-precision floating-point (4 bytes, sufficient for most basic calculations), but can be explicitly typed as integers (%) for whole numbers ranging from -32,768 to 32,767 (2 bytes storage), double-precision (#) for higher accuracy (8 bytes), or single-precision (!) explicitly. variables end with $ and are limited to 255 characters in early implementations, stored with variable-length allocation plus overhead. This convention allows flexible naming—up to 40 characters in —while embedding type information directly, reducing errors for novice users. DEF statements (e.g., DEFINT A-Z) further customize defaults across name ranges, overriding es where applicable. Arrays in BASIC extend scalar variables into collections, declared using the DIM statement to allocate and define dimensions, promoting structured handling without complex syntax. In Dartmouth BASIC, arrays (called lists or tables) are one- or two-dimensional, with subscripts in parentheses (e.g., A(I) for a list, B(I,J) for a matrix); without DIM, the range defaults to 0 through 10, but larger sizes require explicit dimensioning like DIM A(25). Microsoft dialects maintain this with DIM supporting up to 255 dimensions and 32,767 elements per dimension, using zero-based indexing by default (e.g., DIM C(10) accesses C(0) to C(10)); the OPTION BASE 1 statement shifts to one-based indexing for compatibility with mathematical conventions. Arrays follow the same typing rules as scalars, inheriting suffixes for elements (e.g., DIM D$(5) for a array). Variable scope in BASIC is global by default, meaning all variables and arrays are accessible throughout the program unless chained to another via COMMON statements in dialects like , facilitating simple, linear code structures ideal for education. Later structured variants, such as , introduce LOCAL declarations within procedures to limit scope to that subroutine, enhancing while preserving global access via DIM or for broader use. This evolution balances beginner simplicity with advanced control. Type conversion in BASIC relies on built-in functions for explicit between types, addressing implicit mismatches and preventing runtime issues like overflow. The CINT function, common in dialects, rounds a numeric expression to the nearest within -32,768 to 32,767, truncating the decimal (e.g., CINT(45.67) yields 46); exceeding limits triggers an overflow error (code 6). Similar functions include CSNG for single-precision and CDBL for double-precision, with string-to-numeric conversions like CVI handling . These tools ensure safe , though early dialects like Dartmouth BASIC offered fewer options, relying on basic assignment.

Control Structures and Program Flow

In early implementations of BASIC, such as the original Dartmouth version developed by and in 1964, program flow relied heavily on unstructured mechanisms like unconditional jumps. The statement transfers control directly to a specified , allowing arbitrary branching within the code. This was essential for creating loops and decisions in the absence of more structured alternatives, though it later drew criticism for complicating program readability. Subroutines were supported via the GOSUB statement, which jumps to a designated while saving the return address on a stack, paired with the RETURN statement to resume execution at the calling point. This enabled modular code organization without full procedures, with GOSUB syntax simply GOSUB line_number and RETURN as a standalone command. Conditional branching was introduced through the IF statement, which evaluates a relational expression and executes a if true, typically in a single-line format like IF condition THEN line_number. Later dialects, such as Microsoft BASIC 7.1 (1990), extended this to multi-line blocks with for handling false conditions, as in IF condition THEN statements ELSE statements. This evolution supported more readable logic, where variables could be referenced in conditions to compare numeric or string values. Looping constructs began with FOR-NEXT in original BASIC, where FOR variable = start TO end [STEP increment] initializes a counter, and NEXT variable increments it (default step of 1) until exceeding the end value. For instance, a simple calculation might use:

10 LET F = 1 20 FOR I = 1 TO 5 30 LET F = F * I 40 NEXT I 50 PRINT F

10 LET F = 1 20 FOR I = 1 TO 5 30 LET F = F * I 40 NEXT I 50 PRINT F

This outputs 120, demonstrating iterative . Structured dialects like introduced WHILE-WEND for condition-checked repetition (WHILE condition ... WEND) and DO-LOOP variants (DO [WHILE|UNTIL condition] ... LOOP or post-tested equivalents), providing indefinite loops without fixed counters. Multi-way selection was handled by the ON statement, which evaluates an integer expression and branches to one of several line numbers via ON expression GOTO/GOSUB line1, line2, ..., with the index determining the target (values beyond the list often defaulting to the last). This facilitated switch-like behavior in both early and later BASIC variants.

Input/Output Operations

Input/output operations in BASIC were designed to support its interactive, beginner-friendly nature, emphasizing simple commands for screen display and user prompts in the original Dartmouth implementation. The PRINT statement outputs values or strings to the terminal, with comma-separated items advancing to fixed-width zones (typically 15 characters) and semicolon-separated items continuing on the same line without zone advancement. For instance, in early Dartmouth BASIC, the statement PRINT X1, X2 would display the variables side by side in zoned format, while PRINT "NO UNIQUE SOLUTION" outputs a literal message followed by a . Later dialects introduced the PRINT USING statement for more precise formatting, allowing templates with symbols like # for digits and . for decimals to control output appearance, such as PRINT USING "###.##"; PI to display pi rounded to two decimal places. User input via the INPUT statement prompts the terminal for values, assigning them to specified variables and often displaying a or custom prompt. Syntax like INPUT A pauses execution until the user enters a numeric value for A, with multiple variables allowed (e.g., INPUT X, Y), though early versions required the LET keyword for assignments and could halt on mismatches, such as entering text for a numeric variable. The READ statement, paired with statements, provided internal data input without user interaction, sequentially assigning constants from DATA lines to variables (e.g., 10 READ A1, A2 followed by 20 DATA 1, 2), advancing a pointer through the data pool until exhaustion, at which point execution typically stopped. File handling emerged in extended dialects for minicomputers and personal systems, enabling persistent beyond terminal sessions. The OPEN statement establishes access to a file, specifying mode (INPUT for reading, OUTPUT for writing/overwriting, or for adding), filename, and file number (an integer identifier, e.g., 1–255). Reading occurs with INPUT # or LINE INPUT # for delimited or whole-line strings, while writing uses PRINT # or WRITE # to output formatted or comma-separated data. Files are closed with CLOSE # to free the file number and flush buffers. For example, a basic read loop might appear as:

OPEN "data.txt" FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, S$ PRINT S$ LOOP CLOSE #1

OPEN "data.txt" FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, S$ PRINT S$ LOOP CLOSE #1

This iterates until the condition, detected by the EOF function, which returns true (-1 in some dialects) when no more data is available, preventing "Input Past End" errors. String/number mismatches during INPUT could trigger runtime errors, requiring careful variable typing, while EOF checks were essential for robust loops over variable-length files. Some dialects added device-specific I/O for peripherals like printers, using PRINT # with a number or commands like LPRINT for direct printer output. Non-blocking input appeared in variants such as with INKEY$, which returns a single keypress string immediately (or empty if none pressed), facilitating responsive applications without pausing execution. These features, while varying across implementations, underscored BASIC's adaptability to hardware constraints while maintaining simplicity.

Mathematical and Miscellaneous Functions

BASIC included a core set of arithmetic functions designed for straightforward numerical computations, drawing from the original Dartmouth implementation. The ABS function returns the of its argument, such as ABS(-5) yielding 5, while SGN returns the sign of the argument as 1 for positive, 0 for zero, and -1 for negative values. These functions accepted numeric variables or expressions as inputs, enabling operations like determining magnitudes in simple algorithms. The function, , computed the principal square root of a positive argument, as in (25) returning 5. A practical example was its use in the , where the could be calculated as HYP = [SQR](/page/SQR)(A*A + B*B) for legs A and B, illustrating BASIC's emphasis on accessible geometric computations. Trigonometric functions in the original Dartmouth BASIC operated exclusively in radians, aligning with standard mathematical conventions for computational efficiency. (X), COS(X), and TAN(X) provided the sine, cosine, and tangent of argument X, respectively; for instance, (π/2) returned 1. Users converting from degrees performed manual adjustments, such as multiplying degrees by π/180 to obtain radians, due to the absence of built-in conversion utilities. For random number generation, the RND function produced a pseudo-random value between 0 and 1, with the argument ignored in early implementations but later dialects allowing seeding via the RANDOMIZE statement to initialize the generator, such as RANDOMIZE TIMER for time-based variability. This facilitated simulations and games without requiring advanced seeding knowledge. String manipulation functions emerged prominently in dialects like Microsoft BASIC, supporting text processing for beginners. LEN(S)returnedthenumberofcharactersinstringS) returned the number of characters in string S, as in LEN("HELLO") yielding 5; LEFT(S(S, N) extracted the first N characters, such as LEFT("BASIC",3)returning"BAS";andMID("BASIC", 3) returning "BAS"; and MID(S,I,J)retrievedJcharactersstartingfrompositionI,forexampleMID, I, J) retrieved J characters starting from position I, for example MID("PROGRAM", 4, 3) producing "GRA". Miscellaneous functions provided system-level utilities in later dialects. DATEandTIME and TIME returned the current system date and time as strings, enabling timestamped outputs like PRINT DATE$; while USR(X) invoked user-defined routines with argument X, allowing low-level extensions in resource-constrained environments. These features underscored BASIC's practicality for both educational and applied programming tasks.

Implementations and Standards

Interpreters and Compilers

BASIC implementations have historically relied on interpreters for immediate execution and accessibility, particularly in resource-constrained environments of the 1970s. Early interpreters, such as those for microcomputers, employed tokenized execution to optimize performance by converting into compact tokens upon entry, avoiding repeated during runtime. This approach, common in dialects like for the , significantly reduced memory usage and improved execution speed compared to pure line-by-line interpretation. For instance, the original Dartmouth BASIC, while initially designed as a for systems, influenced subsequent interpreters that prioritized interactive, line-oriented for educational use. Compilers emerged to address the performance limitations of interpreters, enabling BASIC programs to generate standalone executables. The first notable BASIC compiler for microcomputers was BASIC-E, developed around 1977 by Gordon Eubanks for systems, translating code into efficient p-code for portability across platforms. Later, Microsoft's BASIC Compiler, released in 1984, produced native executables from source, marking a shift toward tools with and optimization features. Modern compilers like continue this tradition, compiling to native for Windows, , and other systems, supporting object-oriented extensions while maintaining compatibility with older dialects. Hybrid approaches combine interpretation and compilation for balanced performance and flexibility. In Visual Basic .NET (VB.NET), code is first compiled to Common Intermediate Language (CIL) by the VB.NET compiler, then just-in-time (JIT) compiled by the .NET Common Language Runtime (CLR) into native code at runtime. This on-demand JIT process optimizes execution by generating architecture-specific instructions only for invoked methods, improving startup time over full ahead-of-time compilation while ensuring type safety through verification. Such methods allow BASIC-derived languages to achieve near-native speeds in managed environments. Portability across diverse hardware was a key challenge for BASIC in the , addressed through standards like BASICODE. Developed by Dutch engineer Hessel de Vries for the (NOS), BASICODE defined a minimal, unified of BASIC features compatible with approximately 23 platforms, excluding platform-specific elements like graphics in early versions. Programs were broadcast via FM radio for cassette recording, with machine-specific subroutines handling I/O, enabling dialect convergence and cross-system execution without full recompilation. This initiative, active until 1992, facilitated software sharing in regions like the and , prefiguring modern concepts. As of 2025, open-source tools sustain BASIC's vitality, particularly for mobile and embedded applications. SmallBASIC, an interpreter available for Android and systems, supports scripting with built-in functions for graphics, sound, and algebra, allowing users to develop and run programs directly on mobile devices via an integrated IDE. While lacking explicit JIT enhancements, its lightweight design and cross-platform builds via source compilation ensure broad accessibility, with ongoing community updates for modern hardware.

Standardization Efforts

Efforts to standardize BASIC began in the to address the proliferation of incompatible dialects across early personal computers and minicomputers, aiming for program portability and interchangeability. The (ANSI) and European Computer Manufacturers Association (ECMA) led initial initiatives, producing minimal subsets that prioritized core functionality over advanced features. The ANSI Minimal BASIC standard, ratified as X3.60-1978 and concurrently as ECMA-55, defined a limited supporting floating-point numeric variables, string variables, one-dimensional numeric arrays, and basic control structures like IF-THEN and FOR loops, explicitly excluding file I/O, multi-dimensional arrays, and procedures to ensure simplicity and broad implementability. It includes approximately 20 statements and 11 built-in functions. This standard promoted the interchangeability of BASIC programs across diverse systems but saw limited adoption due to vendors' preference for proprietary extensions that enhanced performance or added platform-specific capabilities, such as Microsoft's additions. Although these ANSI standards were later withdrawn, they provided a foundation for subsequent BASIC developments. Building on this foundation, the ANSI Full BASIC standard (X3.113-1987) expanded the language significantly, incorporating multi-dimensional arrays, user-defined procedures, and enhanced handling while maintaining with the minimal version. This was subsequently adopted internationally as ISO/IEC 10279:1991, which derived its syntax and semantics directly from the ANSI document and included amendments for modules and enhanced input functions by 1994, further standardizing BASIC for professional and educational use. Despite these advancements, widespread vendor non-compliance persisted, limiting full . In parallel, the BASICODE project, initiated in by the Dutch public broadcaster NOS and supported by telecom efforts from PTT, developed a portable of BASIC compatible with over 20 dialects, including those on Commodore, Apple, and Sinclair machines, through standardized subroutines and a exchange format for radio-broadcast program distribution. This initiative facilitated hobbyist program sharing in without requiring full standard compliance, addressing gaps in formal standards by focusing on practical cross-platform execution. After 2000, no major new international standards emerged for classic BASIC, as focus shifted to object-oriented evolutions like Visual Basic .NET; however, the .NET Common Language Specification (CLS) ensured interoperability by defining a compliant subset of types and features, allowing VB.NET code to seamlessly integrate with other .NET languages such as C# and access shared class libraries. This framework effectively standardized BASIC's role within the .NET ecosystem, prioritizing managed code portability over standalone language unification.

Influence and Legacy

Impact on Programming Education and Accessibility

BASIC was conceived at with a deliberate focus on accessibility for non-experts, prioritizing to empower students across disciplines rather than restricting programming to specialists. This student-first facilitated rapid in educational settings, with 80% of Dartmouth's incoming freshmen learning the language by , integrated into the curriculum and used by 40% of faculty in various fields. The approach extended to other institutions, becoming a staple in introductory courses at East Coast colleges like Harvard and Princeton during the late and , as well as some high schools connected via networks. The language's forgiving syntax, employing everyday English words like PRINT and LET while minimizing punctuation requirements, made it particularly suitable for beginners by reducing the associated with memorizing complex rules. This design encouraged immediate experimentation through interactive interpreters, allowing users to receive instant feedback on code execution without extensive setup. Such traits lowered compared to more rigid contemporaries like , enabling novices to focus on logical problem-solving rather than syntactic precision. BASIC's global dissemination included adaptations tailored to local educational contexts, with translations and variants integrated into non-English curricula to broaden accessibility. For instance, in the during the 1980s, powered the Microcomputer, deployed widely in schools as part of the 's Computer Literacy Project, where over 1 million units were sold by the 1990s to teach programming to students. These efforts extended to other regions, such as Russian educational labs in the 1980s, fostering computing literacy in diverse linguistic environments. By democratizing programming, BASIC played a key role in promoting inclusivity, enabling early engagement for women and underrepresented minorities in fields that were otherwise dominated by elite, male-centric academic paths. Historical accounts highlight how its approachable nature allowed broader participation, contributing to the initial diversification of the during the and when computing expanded beyond specialized roles. Through its prevalence on home computers, BASIC reached learners worldwide, as personal machines like the Commodore 64 and —often booting directly into BASIC interpreters—became fixtures in households and supported self-taught programming among youth. This widespread exposure laid foundational skills for generations, with its legacy influencing modern educational tools that emphasize intuitive coding interfaces.

Cultural and Technical Legacy

BASIC's cultural footprint is evident in early computer games that popularized interactive entertainment, such as , a text-based written in BASIC by Gregory Yob in 1973 for the PDP-11 . This game, involving navigation through a cave system to track a mythical beast while avoiding hazards like bottomless pits and giant bats, exemplified BASIC's role in democratizing game development and influenced later genres. Similarly, early activities on the Commodore 64 in the mid-1980s often incorporated BASIC for loaders and simple graphical effects, blending programming creativity with audiovisual artistry in the pre-internet era. A notable is the 2012 book 10 PRINT CHR$(205.5+RND(1)); : 10, published by , which analyzes a single line of Commodore 64 BASIC code that generates random mazes, exploring its implications for creativity, computation, and media history. This work highlights BASIC's simplicity as a medium for , transforming a mundane programming exercise into a lens for examining and cultural patterns in computing. On the technical side, BASIC's heavy reliance on the statement sparked significant debates that shaped modern programming practices, most famously critiqued by in his 1968 letter "Go To Statement Considered Harmful" published in Communications of the ACM. Dijkstra argued that unstructured jumps led to unmaintainable "," a reputation that BASIC earned due to its permissive syntax encouraging non-linear program flow without enforced structure, though this was often a result of its design for rapid, interactive experimentation rather than inherent flaws. Despite this controversy, BASIC receives credit for pioneering the interactive computing paradigm, as developed by and at in 1964, which emphasized immediate feedback in a environment to make computing accessible beyond experts. BASIC's technical legacy includes its influence on subsequent language designs prioritizing readability and educational use, such as , where Seymour Papert's 1980 book Mindstorms positioned Logo as a more structured alternative to BASIC while building on its goal of child-friendly programming. Archived repositories like David H. Ahl's BASIC Computer Games (1978, Creative Computing Press), a collection of over 100 type-in programs, preserve this era's hobbyist spirit and served as a key resource for early personal computing enthusiasts. Emulators such as Altirra for 8-bit systems and for Commodore further sustain this legacy by accurately reproducing 8-bit environments, allowing original BASIC programs to run and be preserved digitally. Quantitatively, BASIC powered a substantial portion of 1980s personal computing; for instance, by the mid-1980s, it was the built-in language on dominant 8-bit platforms like the Commodore 64 (over 12 million units sold) and Apple II series, forming the foundation for much of the era's homebrew software and educational applications.

Modern Relevance and Revivals

Despite its diminished prominence in mainstream software development, BASIC persists in niche applications, particularly through interpreters like YABasic, which remains actively maintained with version 2.91.4 released in August 2025 and supports cross-platform development for simple graphics and utilities on Unix and Windows systems. Similarly, Run BASIC continues to facilitate web application development by providing an all-in-one server environment that leverages BASIC syntax for browser-based programming, enabling rapid prototyping of interactive web tools without complex setup. Variants of BASIC have also found use in IoT scripting on platforms like the Raspberry Pi, where community ports such as BBC BASIC adaptations allow for lightweight automation and hardware control in resource-constrained environments. Community-driven revivals have extended BASIC's lifespan into the 2020s, exemplified by for SDL 2.0, a cross-platform implementation that supports 64-bit architectures, mobile devices, and web browsers while incorporating modern features like enhanced graphics and sound via the SDL library. This project, updated regularly with version 1.42a in July 2025, builds on historical dialects to run legacy code alongside new applications on systems including and Android. In enterprise settings, Visual Basic .NET (VB.NET) maintains relevance through the maintenance of legacy Microsoft applications, with surveys indicating that over 80% of organizations still depend on VB6 and related classic systems as of 2023, many of which have been migrated or coexist with VB.NET components. Emerging AI-assisted tools further support BASIC by generating code snippets in the language; for instance, general-purpose AI coders like GitHub Copilot, used by over 20 million developers as of July 2025, can produce BASIC-compatible scripts when prompted, aiding hobbyists and educators in quick prototyping. BASIC's overall decline stems from its supersession by more versatile languages like Python and , which dominate in 2025 for scripting and due to superior libraries and support, though ranks #7 in the as of November 2025. However, a notable uptick in retro gaming has bolstered its cultural niche, with fantasy consoles like —emulating 1980s-era constraints and seeing active releases such as version 0.2.7 in August 2025—driving interest in BASIC-inspired environments for creation. Looking ahead, BASIC holds potential in low-resource educational contexts, where its simplicity aids introductory programming in developing regions or embedded systems.

References

Add your contribution
Related Hubs
Contribute something
User Avatar
No comments yet.