BASIC
Atari 8-bit family | |
Paradigm | Non-structured, later procedural, later object-oriented |
---|---|
Designed by | |
First appeared | May 1, 1964 |
Major implementations | |
Influenced by | |
Influenced | |
| |
|
BASIC (Beginners' 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 1963. 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
The emergence of
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
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,
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
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
Initially, BASIC concentrated on supporting straightforward mathematical work, with
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]
Spread on time-sharing services
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".[13]
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;
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][15]
Spread on minicomputers
BASIC, by its very nature of being small, was naturally suited to porting to the
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.[16] 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).[17]
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.[18] 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.[19] 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
Explosive growth: the home computer era
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 judgement 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",[22] 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
Partially in response to Gates's letter, and partially to make an even smaller BASIC that would run usefully on 4 KB machines,
Micro-Soft, by this time
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.[20][26][27] 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.[28]
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.[29]
IBM PC and compatibles
When IBM was designing the
These later variations introduced many extensions, such as improved
A niche that BASIC continued to fill was for hobbyist
Visual Basic
In 1991, Microsoft introduced
While many advanced programmers still scoffed at its use, VB met the needs of
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.[58] Owing to its persistent remaining popularity,[59] third-party attempts to further support it, such as Rubberduck and ModernVB, exist.[60] On February 2, 2017 Microsoft announced that development on VB.NET would no longer be in parallel with that of C#,[61] and on March 11, 2020 it was announced that evolution of the VB.NET language had also concluded.[62] Even so, the language was still supported[63] and the third-party Mercury extension has since been produced.[64] Meanwhile, competitors exist such as B4X,[65] RAD Basic,[66] twinBASIC,[67] VisualFBEditor,[68] InForm,[69] Xojo,[70] and Gambas.[71]
Post-1990 versions and dialects
Many other BASIC dialects have also sprung up since 1990, including the
Several web-based simple BASIC interpreters also now exist, including Quite Basic by Nikko Strom,[73] as well as Microsoft's Small Basic and Google's wwwBASIC.[74] A number of compilers also exist that convert BASIC into JavaScript,[75] such as JSBasic which re-implements Applesoft BASIC,[76] Spider BASIC,[77] and NS Basic.
Building from earlier efforts such as
On game consoles, an application for the
Calculators
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
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
The various Microsoft, Lotus, and Corel office suites and related products are programmable with Visual Basic in one form or another, including
Legacy
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
Dartmouth College celebrated the 50th anniversary of the BASIC language with a day of events[103] on April 30, 2014. A short documentary film was produced for the event.[104]
Syntax
Typical BASIC keywords
Data manipulation
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 beLET
. 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 lastDATA
element that was read and moves it one position forward with eachREAD
. 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 beginREAD
ing 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
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
andREPEAT ... 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 theGOSUB
, either after a colon, or on the next line. This is used to implementsubroutines. 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
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
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
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 ofUSR
, 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,[105] Purebasic,[106] and Powerbasic[107] 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
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
Unstructured BASIC
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.[g] Although not implemented by most later microprocessor derivatives, it is used in this example from the 1968 manual[108] 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
Second-generation BASICs (for example,
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
Third-generation BASIC dialects such as
The following example is in
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
Standards
- ANSI/ISO/IEC Standard for Minimal BASIC:
- ANSI X3.60-1978 "For minimal BASIC"
- ISO/IEC 6373:1984 "Data Processing—Programming Languages—Minimal BASIC"
- ECMA-55 Minimal BASIC (withdrawn, similar to ANSI X3.60-1978)
- ANSI/ISO/IEC Standard for Full BASIC:
- ANSI X3.113-1987 "Programming Languages Full BASIC"
- INCITS/ISO/IEC 10279-1991 (R2005) "Information Technology – Programming Languages – Full BASIC"
- 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"
- ECMA-116 BASIC (withdrawn, similar to ANSI X3.113-1987)
Compilers and interpreters
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 | Digital Equipment Corporation now HPE | Current | No | ? | RSX-11M, VMS
|
Proprietary | ? | ? |
B4X | Erel Uziel | Current | Yes | Yes (Android, iOS) | Yes (JVM) | 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[109] | John Gatewood Ham | Current | No | Linux | No | Yes | No | |
FreeBASIC | FreeBASIC Development Team | Current | Yes | Yes | DOS, FreeBSD, Linux | Partial[110] | 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, 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 | DOS | Proprietary | Partial | No |
Tandem BASIC | Tandem Computers | Historic | No | No | Guardian, NonStop Kernel, NonStop OS
|
Proprietary | No | No |
True BASIC | True BASIC | Current | Yes | No | No | Proprietary | Yes | Partial[111] |
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 |
Interpreter | Author | Windows | Unix-like | Other OSs | License type |
---|---|---|---|---|---|
BASIC-PLUS | Digital Equipment Corporation | No | No | RSTS/E | Proprietary |
BBC BASIC (SDL 2.0) | Richard T. Russell | Yes | Yes | Web Browser |
|
Bywater BASIC (bwBASIC) |
Ted Campbell | No | Yes | ? | |
Liberty BASIC | Shoptalk Systems | Yes | No | No | Proprietary |
GW-BASIC | Microsoft | No | No | MS-DOS | Proprietary |
QBasic | Microsoft | No | No | MS-DOS | Proprietary |
Chipmunk Basic | Ronald H. Nicholson, Jr. | Yes | Yes | Yes | Freeware |
TI Basic | Texas Instruments | No | No | TI-99/4A | Proprietary |
TI Extended Basic |
Texas Instruments | No | No | TI-99/4A | Proprietary |
Rocky Mountain BASIC | [Trans Era] | Yes | No | HP 9000 | Proprietary |
Bas | Michael Haardt | No | Yes | No | |
Yabasic | Marc-Oliver Ihm | Yes | Yes | Haiku | |
SmallBASIC | SmallBASIC | Yes | Yes | Android, macOS | |
SuperBASIC | Jan Jones | No | No | Sinclair QL | Proprietary |
thinBasic | thinBasic | Yes | No | No | Proprietary |
PC-BASIC | Rob Hagemans | Yes | Yes | macOS | |
Level I BASIC | Steve Leininger | No | No | TRS-80 ROM | Proprietary |
Level II BASIC |
Microsoft | No | No | TRSDOS, NewDos/80, MultiDOS, DosPlus, LDOS | Proprietary |
Level III BASIC |
Microsoft | No | No | TRSDOS, NewDos/80, MultiDOS, DosPlus, LDOS | Proprietary |
See also
Notes
- ^ Fortran's DO had a
continue
for this purpose, but still required the line number to be entered. - ^ Tymshare charged about US$10 per hour (equivalent to $78 in 2023) for accessing their systems.
- ^ Widely regarded as the first "true" mini, the PDP-8's 12-bit memory space allowed 4,096 address of 12-bits each, or 6,144 bytes.
- ^ Interpreters are ultimately similar to compilers in the tasks they perform, converting source code to machine code, but differ in when they perform it. Compilers convert the entire program at once and output a separate runnable program. Interpreters generally convert only a single line at a time (or even just a portion of it) and then immediately release that code once the line has completed running. This means they require only enough memory to run a single line, and do not require some form of high-performance secondary memory like a hard drive.
- ^ Microsoft BASIC left 780 bytes free for user program code and variable values on a 4K machine, and that was running a cut-down version lacking string variables and other functionality.
- ^ Also known simply as BASIC! and BASIC! Super User
- ^ From version 3 onwards.
References
- ^ Kemeny, John G.; Kurtz, Thomas E. (1963). Basic: a manual for BASIC, the elementary algebraic language designed for use with the Dartmouth Time Sharing System (PDF) (1st ed.). Hanover, N.H.: Dartmouth College Computation Center. Archived (PDF) from the original on October 9, 2022.
- ^ Ramel, David (February 12, 2019). "VB.NET Popularity Still Rising". Visual Studio Magazine. Retrieved March 28, 2023.
- ^ Swersky, David (January 25, 2023). "40 most popular programming languages 2023: When and how to use them". Raygun. Retrieved March 25, 2023.
- ^ Proven, Liam (March 28, 2023). "Nostalgic for VB? BASIC is anything but dead". The Register. Retrieved September 27, 2023.
- ^ Boss, Chris (November 15, 2022). "BASIC is Not Dead. Time to Erase the Myths about Basic". Code Project. Retrieved January 31, 2024.
- ^ "High Math at Hanover". Time. February 23, 1959.
- ^ a b c d e f Time 2014.
- ISBN 9780674970977, p. 23
- ^ "BASIC". Jargon File. Retrieved June 13, 2017.
- ^ "Thomas E. Kurtz – History of Computer Programming Languages". cis-alumni.org. Retrieved June 13, 2017.
- ^ Alfred, Randy (January 5, 2008). "May 1, 1964: First Basic Program Runs". Wired. Retrieved June 13, 2017.
- ^ Brooks, David (11 June 2019). "Finally, a historical marker that talks about something important". Concord Monitor. Archived from the original on 11 June 2019. Retrieved 11 August 2019.
- ^ Bauer, W. F., Computer design from the programmer's viewpoint Archived July 23, 2016, at the Wayback Machine (Eastern Joint Computer Conference, December 1958) One of the first descriptions of computer time-sharing.
- ^ "IBM VS the World: That's How It Is". Computerworld. December 5, 1973.
- ISBN 9780262261753.
- ^ "2000 Timeshare System".
- ^ "Passing the 10-year mark". MEASURE Magazine. Hewlett Packard. October 1976.
- ^ Marks, Shirley (December 1971). The JOSS Years: Reflections on an experiment (PDF) (Technical report). Rand. Archived (PDF) from the original on October 9, 2022.
- ^ Savetz, Kevin (April 2013). "Dave Ahl and Betsy Ahl" (Interview).
- ^ OCLC 896774158.
- ISSN 0199-6649.
- (PDF) from the original on October 9, 2022.
- ^ Johnson, Phil (January 21, 2015). "The source code behind Microsoft BASIC for 6502 comes to light". Computerworld. Retrieved October 24, 2022.
- ^ "We have a BASIC". New Mexico Museum of Natural History and Science. Archived from the original on November 30, 2012. Retrieved April 18, 2007.
- ^ Pittman, Tom. "you had to pay $5 up front to get it…". www.ittybittycomputers.com. Retrieved June 14, 2017.
- OCLC 839377789.
- OCLC 872675092.
- ^ "Osborne 1". oldcomputers.net. Retrieved June 14, 2017.
- ISBN 0-932760-00-7.
- ^ "Back to BASICs". peyre.sqweebs.com. Archived from the original on October 26, 2009. Retrieved February 25, 2023.
- ^ Perr, John (January 1, 2003). "BASIC programming with Unix". LinuxFocus. Retrieved September 26, 2023.
- ^ "bwBASIC: The Bywater BASIC Interpreter". OSS Blog. August 25, 2018. Retrieved September 30, 2023.
- Opensource.com. Retrieved September 30, 2023.
- ^ Calderone, Antonia. "Why nuBASIC". Retrieved September 30, 2023.
- ^ Song, Liu Xue (October 12, 2003). "MyBasic - A Custom-BASIC language interpreter written in C++". Code Project. Retrieved September 30, 2023.
- ^ "LOGIC BASIC - Free programming language". Retrieved October 7, 2023.
- ^ Albrecht, Christian (October 2, 2022). "yab Beginners tutorial". BeSly - BeOS, Haiku & Zeta. Translation by Luc Schrijvers (Begasus). Retrieved February 25, 2024.
- ^ a b "Differences Between GW-BASIC and QBasic". May 12, 2003. Archived from the original on October 19, 2013. Retrieved June 28, 2008.
- ISBN 9788131755440.
- ^ "GNE: the C programming language". fysh.org. Retrieved June 14, 2017.
During the 1980s, C compilers spread widely, and C became an extremely popular language.
- ^ Dance, Michael. "Easy to Make Qbasic Games". Techwalla. Retrieved September 30, 2023.
- ^ "QBasic Games Directory". Phatcode. Retrieved September 30, 2023.
- ^ "FreeBASIC Games Directory". FreeBASIC. Retrieved September 30, 2023.
- ^ Cocilova, Alex (April 16, 2013). "Black Annex is the best QBASIC game you've ever seen". PC World. Retrieved September 30, 2023.
- ^ Serrels, Mark (June 24, 2013). "The Australian Who Built A Video Game Using QBASIC". Kotaku. Retrieved September 30, 2023.
- IndieDB. November 21, 2017. Retrieved September 30, 2023.
- ^ "PlayBasic". itch.io. Retrieved September 30, 2023.
- ^ "CoolBasic". IndieDB. December 6, 2005. Retrieved September 30, 2023.
- ^ "AllegroBASIC Homepage". AllegroBASIC. Archived from the original on November 15, 2018. Retrieved October 7, 2023.
- ^ "Ethos Game Basic 1.3". shareApp. Retrieved September 30, 2023.
- ModDB. August 18, 2015. Retrieved September 30, 2023.
- ^ Fercalo, Andrei (August 8, 2014). "NaaLaa". Softpedia. Retrieved October 1, 2023.
- ^ "A Closer Look At AppGameKit 2". GameFromScratch. June 12, 2015. Retrieved September 30, 2023.
- ^ "Cerberus X 2018-08-10 Released". GameFromScratch. August 10, 2018. Retrieved September 30, 2023.
- ^ Clarke, Gavin (February 21, 2007). "Linux breakthrough for Visual Basic developers". The Register. Retrieved October 1, 2023.
- ^ Anderson, Tim (February 14, 2020). "25 years of Delphi and no Oracle in sight: Not a Visual Basic killer but hard to kill". The Register. Retrieved March 25, 2023.
Enter Borland Delphi, which combined Object Pascal with a VB-like visual form builder. Object Pascal was Borland's own language, with full support for inheritance. It is case-insensitive and not much harder than VB for coding, once you get used to typing begin and end a lot (loosely equivalent to curly braces in C). Unlike VB, it sensibly has different operators for assignment (:=) and comparison (=).
- ^ Speed, Richard (May 6, 2022). "RAD Basic – the Visual Basic 7 that never was – releases third alpha". The Register. Retrieved March 26, 2023.
Alternatively, one can relive the days of the whole BASIC/Pascal rivalry with Delphi-compatible Lazarus.
- ^ "Product Family Life Cycle Guidelines for Visual Basic 6.0". Msdn2.microsoft.com. March 31, 2005. Retrieved June 16, 2009.
- ^ Ramel, David (July 7, 2020). "Popularity Index: Classic Visual Basic Hangs In There". Visual Studio Magazine. Retrieved March 28, 2023.
- ^ Ramel, David (February 28, 2020). "Visual Basic Resurgence? Project Seeks to 'Bring the VBE into This Century!'". Visual Studio Magazine. Retrieved March 28, 2023.
- ^ Domingo, Michael (June 13, 2017). "Viva, Visual Basic! Or, Does VB Have a Future?". Visual Studio Magazine. Retrieved March 26, 2023.
- ^ Ramel, David (March 12, 2020). "Microsoft: 'We Do Not Plan to Evolve Visual Basic as a Language'". Visual Studio Magazine. Retrieved March 26, 2023.
- ^ Ramel, David (February 8, 2023). "Microsoft Reaffirms Fate of Visual Basic". Visual Studio Magazine. Retrieved March 25, 2023.
- ^ Ramel, David (August 25, 2020). "Mercury Is Latest 3rd-Party Visual Basic Effort: 'Multiplatform VB++'". Visual Studio Magazine. Retrieved March 28, 2023.
- ^ Ramel, David (August 18, 2015). "B4J Keeps Classic Visual Basic Alive". Visual Studio Magazine. Retrieved March 26, 2023.
- ^ Speed, Richard (May 6, 2021). "Visual Basic 6 returns: You've been a good developer all year. You have social distanced, you have helped your mom. Here's your reward". The Register. Retrieved March 26, 2023.
- ^ Minhorst, Andre (April 1, 2022). "twinBASIC: Visual Basic für die Zukunft". Datenbankentwickler. Retrieved March 26, 2023.
- ^ Speed, Richard (May 6, 2022). "RAD Basic – the Visual Basic 7 that never was – releases third alpha". The Register. Retrieved March 26, 2023.
RAD Basic is not the only game in town. Alternatives in varying stages of development include twinBASIC, which also aims to be backwards compatible with VB6 and VBA; and FreeBASIC, which implements much of what lurked in Microsoft QuickBASIC (and has a nifty IDE in the form of VisualFBEditor).
- ^ Rogoz, Ivan (April 7, 2022). "Blast from the past - QBasic 4.5". Barn Lab. Retrieved September 26, 2023.
QB64 comes with a WYSIWYG IDE editor called InForm which brings it closer to everyday use as a quick and dirty language for automation for Windows.
- ^ "The Modern Alternative to Visual Basic". Xojo. May 19, 2013. Retrieved March 26, 2023.
- ^ Morgan, R. (June 29, 2014). "Welcome". Gambas Magazine. Archived from the original on April 8, 2016.
- ^ Proven, Liam (March 28, 2023). "Nostalgic for VB? BASIC is anything but dead". The Register. Retrieved September 27, 2023.
- ^ Toktosunov, Azim (April 17, 2013). "Quite BASIC: Web-Based Classic BASIC Programming Environment". MakeUseOf. Retrieved February 25, 2024.
- ^ Williams, Al (September 17, 2018). "It's The Web, Basically". Hackaday. Retrieved September 28, 2023.
- ^ Veteanu, Marian (February 14, 2017). "JavaScript compilers. Part II: Languages that compile to JavaScript". Code Avenger.
- ^ Flower, Daniel (January 20, 2013). "JSBasic - A BASIC to JavaScript Compiler". Code Project. Retrieved September 30, 2023.
- ^ Schnell, Stefan (February 10, 2016). "SpiderBasic (JavaScript) Language in the Context of SAP Web Application Server". SAP Blogs. Retrieved October 1, 2023.
- ^ "Java – What programming languages target J2ME". iTecNote. Retrieved September 30, 2023.
Now I've heard of other languages which supposedly make possible development without recourse to Java, languages like CellularBASIC (which looks a bit like QBASIC) and Hecl (which seems to be based on Tcl).
- ^ Tello, Guillaume (December 15, 2007). "LG KS 360". Archived from the original on October 28, 2010. Retrieved September 30, 2023.
After some research on the Net, I came across this site about the CellularBASIC. It is a complete BASIC interpreter written in JAVA.
- ^ "Hand BASIC - CBM Flavor". Appsftw. Retrieved October 1, 2023.
- ^ "Learn BASIC Programming for iOS". CNET. Retrieved October 1, 2023.
- ^ "BASIC: programming language by Nikolay Denislamov". AppAgg. January 26, 2021. Retrieved October 1, 2023.
- Apple.com. May 5, 2019. Retrieved October 1, 2023.
- ^ "Basic Programming Language for PC". APP for Windows. Retrieved October 1, 2023.
- ^ Robinson, Curtis. "About". Touch Basic. Retrieved September 30, 2023.
- ISBN 9781449374495.
- ^ Hoffmann, Markus. "X11-Basic". F-Droid. Retrieved September 30, 2023.
- ^ Miller, Paul (June 19, 2017). "Fuze Code Studio will let kids use the Switch to code their own Switch games". The Verge. Retrieved September 30, 2023.
- ^ Porter, Matt (December 18, 2015). "Now kids can get back to BASIC with Fuze". The Gadget Man. Retrieved September 30, 2023.
- ^ Bedford, Mike (October 21, 2015). "FUZE powered by Raspberry Pi V2 review". The Gadget Man. Retrieved September 30, 2023.
- ^ Hibiki, Ryoga. "Dragon Basic documentation". Academia.edu. Retrieved September 30, 2023.
- ^ "gotBASIC.com". Retrieved April 13, 2024.
NEXTBasic: A customized Basic language, inspired by Visual Basic .NET, that targets the Sega Genesis (Mega Drive).
- ^ "BasiEgaXorz". Sega Retro. May 10, 2012. Retrieved April 13, 2024.
- ^ "SecondBASIC". gotBASIC.com. Retrieved April 13, 2024.
- Salon. Archived from the originalon September 18, 2013. Retrieved June 19, 2017.
- ^ "Small Basic". Microsoft Developer Network. Archived from the original on March 17, 2014. Retrieved June 19, 2017.
- ^ "BASIC-256 homepage".
Check out "Why Johnny Can't Code," the article that inspired BASIC-256.
- ^ Ratliff Sr., Gary L. (October 2008). "An Alphabet of Computer Languages: BASIC". PCLinuxOS Magazine. Retrieved February 25, 2024.
- ^ Koster, Raph (November 21, 2006). "Quite BASIC — Web BASIC programming". Retrieved February 25, 2024.
- ^ "Dartmouth plans celebration for 50th anniversary of BASIC computer language". New Hampshire Union Leader. April 28, 2014. Archived from the original on June 20, 2017. Retrieved June 14, 2017.
- ^ "50th anniversary of BASIC – Google Search". Google.
- ^ Wood, Lamont (June 23, 2011). "How are students learning programming in a post-Basic world?". Computerworld. Retrieved February 26, 2024.
- ^ "BASIC at 50 – Event Schedule". Dartmouth College. Retrieved June 14, 2017.
- ^ "BASIC at 50". Dartmouth College. Retrieved June 14, 2017.
- ^ "KeyPgAsm". FreeBasic Wiki. Retrieved August 2, 2017.
- ^ "Inline x86 ASM". Pure Basic. Retrieved August 2, 2017.
- ^ "Using assembly-language in your code". Power Basic. Archived from the original on August 2, 2017. Retrieved August 2, 2017.
- ^ Kemeny, John G.; Kurtz, Thomas E. (January 1968). Basic: a manual for BASIC, the elementary algebraic language designed for use with the Dartmouth Time Sharing System (PDF) (4th ed.). Hanover, N.H.: Dartmouth College Computation Center. p. 53. Archived (PDF) from the original on January 3, 2014.
- S2CID 40383760.
- ^ angros47 (July 29, 2013). "ANSI Basic: is FreeBasic standard-compliant?". freebasic.net. Archived from the original on September 28, 2023.
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ Bantchev, Boyko (2008). "The True 'True BASIC'". Institute of Mathematics and Informatics. Archived from the original on March 13, 2011.
General references
- Sammet, Jean E. (1969). Programming languages: history and fundamentals. Englewood Cliffs, N.J.: OCLC 819683527.
- Kurtz, Thomas E. (1981). "BASIC". In Wexelblat, Richard (ed.). History of programming languages. History of Programming Languages I. New York: ISBN 978-0127450407.
- Kemeny, John G.; Kurtz, Thomas E. (1985). Back To BASIC: The History, Corruption, and Future of the Language. Addison-Wesley. p. 141. OCLC 11399298.
- Lien, David A. (1986). The Basic Handbook: Encyclopedia of the BASIC Computer Language (3rd ed.). Compusoft Publishing. OCLC 12548310.
- "Fifty Years of BASIC, the Programming Language That Made Computers Personal". Time. April 29, 2014.
External links
- BASIC at Curlie
- "BASIC—Beginners All-purpose Symbolic Instruction Code". The Encyclopedia of Computer Languages. Murdoch University.
- The Birth of Basic on YouTube
- gotBASIC.com - For all people interested in the continued usage and evolution of the BASIC programming language.
- Awesome Basic - A curated list of awesome BASIC dialects, IDEs, and tutorials.
- The Basics' page (Since 2001) - Comprehensive listing of dialects.