In addition to the programming language, Kemeny and Kurtz developed theDartmouth Time-Sharing System (DTSS), which allowed multiple users to edit and run BASIC programs simultaneously on remote terminals. This general model became popular onminicomputer systems like thePDP-11 andData General Nova in the late 1960s and early 1970s.Hewlett-Packard produced an entire computer line for this method of operation, introducing theHP2000 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 ofmicrocomputers in the mid-1970s led to the development of multiple BASIC dialects, includingMicrosoft BASIC in 1975. Due to the tinymain memory available on these machines, often 4 KB, a variety ofTiny BASIC dialects were also created. BASIC was available for almost any system of the era and became thede facto programming language forhome computer systems that emerged in the late 1970s. ThesePCs almost always had aBASIC interpreter installed by default, often in the machine'sfirmware or sometimes on aROM cartridge.
BASIC declined in popularity in the 1990s, as more powerful microcomputers came to market and programming languages with advanced features (such asPascal andC) 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 releasedVisual Basic, combining an updated version of BASIC with avisual forms builder. This reignited use of the language and "VB" remains a major programming language[2][3] in the form ofVB.NET, while a hobbyist scene for BASIC more broadly continues to exist.[4][5]
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 anAlfred 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 traditionalSTEM fields. Kemeny later noted that "Our vision was that every student on campus should have access to acomputer, 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) andDOPE (Dartmouth Oversimplified Programming Experiment). These did not progress past a single freshman class. New experiments usingFortran andALGOL 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:DO100,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 usedbatch processing and took a long time to complete a run of a program. While Kurtz was visitingMIT,John McCarthy suggested thattime-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. TheacronymBASIC 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, thesyntax was changed wherever it could be improved. For instance, the difficult to rememberDO loop was replaced by the much easier to rememberFORI=1TO10STEP2, and the line number used in the DO was instead indicated by theNEXT I.[a] Likewise, the crypticIF statement of Fortran, whose syntax matched a particular instruction of the machine on which it was originally written, became the simplerIFI=5THENGOTO100. 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 theNational Science Foundation, which was used to purchase aGE-225 computer for processing, and a Datanet-30 realtime processor to handle theTeletype Model 33teleprinters 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, withmatrix arithmetic support from its initial implementation as a batch language, andcharacter 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 theHanover, 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 asDartmouth 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]
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;Tymshare introducedSUPER BASIC in 1968,CompuServe had a version on theDEC-10 at their launch in 1969, and by the early 1970s BASIC was largely universal on general-purposemainframe computers. EvenIBM eventually joined the club with the introduction of VS-BASIC in 1973.[14]
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]
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 theminicomputer market, which was emerging at the same time as the time-sharing services. These machines had smallmain memory, perhaps as little as 4 KB in modern terminology,[c] and lacked high-performance storage likehard 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 wasHP 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 theHP 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, behindDEC andData General (DG).[17]
DEC, the leader in the minicomputer space since the mid-1960s, had initially ignored BASIC. This was due to their work withRAND Corporation, who had purchased aPDP-6 to run theirJOSS language, which was conceptually very similar to BASIC.[18] This led DEC to introduce a smaller, cleaned up version of JOSS known asFOCAL, 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 thePDP-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 theRSTS/E time-sharing operating system.
During this period a number of simpletext-based games were written in BASIC, most notably Mike Mayfield'sStar 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.[20] During the same period, Ahl was involved in the creation of a small computer for education use, an earlypersonal 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.[21]
The introduction of the firstmicrocomputers 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. DespiteDijkstra'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",[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 thede facto standard programming language on early microcomputers.
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 urgedDennis Allison to write their own variation of the language. How to design and implement a stripped-down version of aninterpreter for the BASIC language was covered in articles by Allison in the first three quarterly issues of thePeople's Computer Company newsletter published in 1975 and implementations with source code published inDr. Dobb's Journal of Tiny BASIC Calisthenics & Orthodontia: Running Light Without Overbyte. This led to a wide variety ofTiny BASICs with added features or other improvements, with versions from Tom Pittman andLi-Chen Wang becoming particularly well known.[25]
Micro-Soft, by this timeMicrosoft, ported their interpreter for theMOS 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 theTRS-80,Commodore PET andApple 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 ade facto standard and practically everyhome computer of the 1980s included it inROM. Upon boot, a BASIC interpreter indirect mode was presented.
Commodore Business Machines includesCommodore 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. TheAtari 8-bit computers use the 8 KBAtari BASIC which is not derived from Microsoft BASIC.Sinclair BASIC was introduced in 1980 with the SinclairZX80, and was later extended for the SinclairZX81 and the SinclairZX Spectrum. TheBBC publishedBBC BASIC, developed byAcorn Computers, incorporates extrastructured 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 totype 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 fromCreative Computing asBASIC 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 thehome 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-focusedCP/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 ofThe 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]
When IBM was designing theIBM 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 forMS-DOS/PC DOS includingIBM Disk BASIC (BASIC D),IBM BASICA (BASIC A),GW-BASIC (a BASICA-compatible version that did not need IBM's ROM)[30] andQBasic, all typically bundled with the machine. In addition they produced theMicrosoft QuickBASIC Compiler (1985) for power users and hobbyists, and the Microsoft BASIC Professional Development System (PDS) for professional programmers.Turbo Pascal-publisherBorland publishedTurbo Basic 1.0 in 1985 (successor versions were marketed under the namePowerBASIC).
In 1989,Microsoft Press publishedLearn BASIC Now, a book-and-software system designed to teach BASIC programming to self-taught learners who were usingIBM-PC compatible systems and the Apple Macintosh.Learn BASIC Now included software disks containing the Microsoft QuickBASIC Interpreter and a programming tutorial written byMichael Halvorson and David Rygmyr. Learning systems likeLearn BASIC Now popularized structured BASIC and helped QuickBASIC reach an installed base of four million active users.[39]
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 laterC++ became the languages of choice for professional"shrink wrap" application development.[40][41]
A niche that BASIC continued to fill was for hobbyistvideo game development, asgame creation systems and readily availablegame engines were still in their infancy. TheAtari ST hadSTOS BASIC while theAmiga hadAMOS BASIC for this purpose. Microsoft first exhibited BASIC for game development withDONKEY.BAS forGW-BASIC, and laterGORILLA.BAS andNIBBLES.BAS forQuickBASIC.QBasic maintained an active game development community,[42][43] which helped later spawn theQB64 andFreeBASIC implementations.[44] 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.[45]
In 1991, Microsoft introducedVisual Basic, an evolutionary development ofQuickBASIC. It included constructs from that language such as block-structured control statements, parameterized subroutines and optionalstatic typing as well asobject-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 newmacro language forMicrosoft Excel, aspreadsheet 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 asVisual Basic for Applications andEmbedded Visual Basic.
While many advanced programmers still scoffed at its use, VB met the needs ofsmall 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 producedVBScript in 1996 andVisual Basic .NET in 2001. The latter has essentially the same power asC# andJava but with syntax that reflects the original Basic language, and also features some cross-platform capability through implementations such asMono-Basic.[57] TheIDE, with itsevent-drivenGUI builder, was also influential on otherrapid application development tools, most notablyBorland Software'sDelphi forObject Pascal and its own descendants such asLazarus.[58][59]
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.[60] Owing to its persistent remaining popularity,[61] third-party attempts to further support it exist.[62] On February 2, 2017, Microsoft announced that development on VB.NET would no longer be in parallel with that of C#,[63] and on March 11, 2020, it was announced that evolution of the VB.NET language had also concluded.[64] Even so, the language was still supported.[65]
Several web-based simple BASIC interpreters also now exist, including Microsoft'sSmall Basic andGoogle's wwwBASIC.[66] A number of compilers also exist that convert BASIC intoJavaScript.[67] such asNS Basic.
A sample BASIC programme running underYABASIC for the SonyPS2
QBasic, a version of MicrosoftQuickBASIC without the linker to make EXE files, is present in theWindows NT and DOS-Windows 95 streams of operating systems and can be obtained for more recent releases likeWindows 7 which do not have them. Prior to DOS 5, the Basic interpreter wasGW-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. ForWindows 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.
BASIC came to some video game systems, such as the NintendoFamicom.
The various Microsoft, Lotus, and Corel office suites and related products are programmable with Visual Basic in one form or another, includingLotusScript, 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 aVisual 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 likePerlScript, 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 asWordBASIC. Excel 4 and 5 use Visual Basic itself as a macro language.Chipmunk Basic, an old-school interpreter similar to BASICs of the 1970s, is available forLinux,Microsoft Windows andmacOS.
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 includedtype-in programs.
Futurist and sci-fi writerDavid Brin mourned the loss of ubiquitous BASIC in a 2006Salon article[73] as have others who first used computers during this era. In turn, the article prompted Microsoft to develop and releaseSmall Basic;[74] it also inspired similar projects likeBasic-256[75][76] and the web based Quite Basic.[77]Dartmouth held a 50th anniversary celebration for BASIC on 1 May 2014.[78] The pedagogical use of BASIC has been followed by other languages, such asPascal,Java and particularlyPython.[79]
Dartmouth College celebrated the 50th anniversary of the BASIC language with a day of events[80] on April 30, 2014. A short documentary film was produced for the event.[81]
assigns a value (which may be the result of anexpression) 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 aDATA 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 firstDATA statement, allowing the program to beginREADing 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.
used to perform comparisons or make decisions. Early dialects only allowed a line number after theTHEN, 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 theloop.
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 toWHILE, these keywords are mostly found in later dialects.
jumps to a numbered or labelled line in the program. Most dialects also allowed the formGO TO.
GOSUB ... RETURN
jumps to a numbered or labelled line, executes the code it finds there until it reaches aRETURN 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. SeeSwitch 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 thansubroutines, with a syntax on the model ofDEF FND(x) = x*x at the beginning of a program. Function names were originally restricted to FN, plus one letter,i.e., FNA, FNB ...
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 withPRINT 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 toTAB but moves by a number of additional spaces from the current column rather than moving to a specified column.
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 amachine language subroutine, usually entered as an alphanumericstring or in a list of DATA statements.
CALL
alternative form ofUSR 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 fordebugging or correcting of problems in a program. TROFF turns it back off again.
ASM
some compilers such as Freebasic,[82] Purebasic,[83] and Powerbasic[84] also supportinline assembly language, allowing the programmer to intermix high-level and low-level code, typically prefixed with "ASM" or "!" statements.
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 asigil, 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 supportedmatrices 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.
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 isKernighan and Ritchie's"Hello, World!" program:
10PRINT"Hello, World!"20END
Aninfinite loop could be used to fill the display with the message:
10PRINT"Hello, World!"20GOTO10
Note that theEND 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 commonFOR...NEXT statement:
10LETN=1020FORI=1TON30PRINT"Hello, World!"40NEXTI
Most home computers BASIC versions, such asMSX BASIC andGW-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:
10INPUT"What is your name: ";U$20PRINT"Hello ";U$30INPUT"How many stars do you want: ";N40S$=""50FORI=1TON60S$=S$+"*"70NEXTI80PRINTS$90INPUT"Do you want more stars? ";A$100IFLEN(A$)=0THENGOTO90110A$=LEFT$(A$,1)120IFA$="Y"ORA$="y"THENGOTO30130PRINT"Goodbye ";U$140END
The resulting dialog might resemble:
What is your name: MikeHello MikeHow many stars do you want: 7*******Do you want more stars? yesHow many stars do you want: 3***Do you want more stars? noGoodbye 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[85] which averages the numbers that are input:
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 withlabels (forGOTO) andprocedures to encourage easier and more flexible design.[38] 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 exampleREM Forward declaration - allows the main code to call aREM subroutine that is defined later in the source codeDECLARESUBPrintSomeStars(StarCount!)REM Main program followsINPUT"What is your name: ",UserName$PRINT"Hello ";UserName$DOINPUT"How many stars do you want: ",NumStarsCALLPrintSomeStars(NumStars)DOINPUT"Do you want more stars? ",Answer$LOOPUNTILAnswer$<>""Answer$=LEFT$(Answer$,1)LOOPWHILEUCASE$(Answer$)="Y"PRINT"Goodbye ";UserName$ENDREM subroutine definitionSUBPrintSomeStars(StarCount)REMThisprocedureusesalocalvariablecalledStars$Stars$=STRING$(StarCount,"*")PRINTStars$ENDSUB
PublicModuleStarsProgramPrivateFunctionAsk(promptAsString)AsStringConsole.Write(prompt)ReturnConsole.ReadLine()EndFunctionPublicSubMain()DimuserName=Ask("What is your name: ")Console.WriteLine("Hello {0}",userName)DimanswerAsStringDoDimnumStars=CInt(Ask("How many stars do you want: "))DimstarsAsNewString("*"c,numStars)Console.WriteLine(stars)Doanswer=Ask("Do you want more stars? ")LoopUntilanswer<>""LoopWhileanswer.StartsWith("Y",StringComparison.OrdinalIgnoreCase)Console.WriteLine("Goodbye {0}",userName)EndSubEndModule
^Fortran's DO had acontinue for this purpose, but still required the line number to be entered.
^Tymshare charged aboutUS$10 per hour (equivalent to $81 in 2024) 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.
^Rankin, Joy Lisi (2018),A People's History of Computing in the United States, Cambridge, Massachusetts: Harvard University Press,ISBN9780674970977, p. 23
^Halvorson, Michael J. (2020).Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. p. 146.ISBN978-1-4503-7757-7.
^"GNE: the C programming language".fysh.org. RetrievedJune 14, 2017.During the 1980s, C compilers spread widely, and C became an extremely popular language.
^Halvorson, Michael J. (2020).Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. pp. 153–156.ISBN978-1-4503-7757-7.
^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. RetrievedMarch 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 (=).
^"Java – What programming languages target J2ME".iTecNote. RetrievedSeptember 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 fromthe original on October 28, 2010. RetrievedSeptember 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.
Kemeny, John G.; Kurtz, Thomas E. (1985).Back to BASIC: The History, Corruption, and Future of the Language. Addison-Wesley. p. 141.ISBN9780201134339.OCLC11399298.
Lien, David A. (1986).The Basic Handbook: Encyclopedia of the BASIC Computer Language (3rd ed.). Compusoft Publishing.ISBN9780932760333.OCLC12548310.