BASIC
From Maze
(Difference between revisions)
| Line 3: | Line 3: | ||
10 PRINT operates in a particular way. The graphical symbols on the screen, the way they line up in rows and then in columns, and even the speed at which they appear -- these characteristics all contribute to the program's overall aesthetic. 10 PRINT functions this way in part because it is written in a specific programming language: BASIC. | 10 PRINT operates in a particular way. The graphical symbols on the screen, the way they line up in rows and then in columns, and even the speed at which they appear -- these characteristics all contribute to the program's overall aesthetic. 10 PRINT functions this way in part because it is written in a specific programming language: BASIC. | ||
| − | This "Beginner's All-purpose Symbolic Instruction Code" has a fabled cultural and technical history. BASIC was developed by John Kemeny and Thomas Kurtz, two professors at Dartmouth College. In 1964 its creators freely shared a working version of the language, leading to its widespread adoption, both at the high school and college level. | + | This "Beginner's All-purpose Symbolic Instruction Code" has a fabled cultural and technical history. BASIC was developed by John Kemeny and Thomas Kurtz, two professors at Dartmouth College. In 1964 its creators freely shared a working version of the language, leading to its widespread adoption, both at the high school and college level. By that time, general-purpose computers had existed for about two decades. Many were still programmed in low-level machine languages, but high-level languages, abstracted from the idiosyncrasies of an individual machine, had also been in widespread use for a decade. While BASIC had its own distinguishing features, it also continued the history of high-level languages, building on what FORTRAN, Algol, and other languages had accomplished: a more natural syntax, easier use, and greater portability across platforms. |
| − | |||
| − | By that time, general-purpose computers had existed for about two decades. Many were still programmed in low-level machine languages, but high-level languages, abstracted from the idiosyncrasies of an individual machine, had also been in widespread use for a decade. While BASIC had its own distinguishing features, it also continued the history of high-level languages, building on what FORTRAN, Algol, and other languages had accomplished: a more natural syntax, easier use, and greater portability across platforms. | ||
BASIC's invention in an educational context is significant. The language was developed for an early time-sharing environment, the Dartmouth Time-Sharing System (DTSS). This revolutionary configuration allowed multiple programmers to use a single system at the same time. A system of this sort -- with many terminals connected to a mainframe or minicomputer -- differs considerably from the personally owned, relatively inexpensive, single-user computers of the microcomputer era. But in the early 1960s, the DTSS also distinguished itself from earlier systems that required the batch processing of stacks of punched cards. Time-sharing allowed people to engage with and explore computation in significant new ways, with what felt like "real time" processing; BASIC was an important part of this computing revolution. Given the educational purpose of DTSS and BASIC, ease of use was paramount. And being easy to use helped lead to BASIC's massive popularity and success. | BASIC's invention in an educational context is significant. The language was developed for an early time-sharing environment, the Dartmouth Time-Sharing System (DTSS). This revolutionary configuration allowed multiple programmers to use a single system at the same time. A system of this sort -- with many terminals connected to a mainframe or minicomputer -- differs considerably from the personally owned, relatively inexpensive, single-user computers of the microcomputer era. But in the early 1960s, the DTSS also distinguished itself from earlier systems that required the batch processing of stacks of punched cards. Time-sharing allowed people to engage with and explore computation in significant new ways, with what felt like "real time" processing; BASIC was an important part of this computing revolution. Given the educational purpose of DTSS and BASIC, ease of use was paramount. And being easy to use helped lead to BASIC's massive popularity and success. | ||
| − | BASIC became even more influential as microcomputers entered people's homes. In 1975, the MITS Altair 8800 computer, widely acclaimed as the first home computer, became available. Perhaps the most significant piece of software for this system was Altair BASIC, a version of BASIC that was the first product of a young company called Microsoft. | + | BASIC became even more influential as microcomputers entered people's homes. In 1975, the MITS Altair 8800 computer, widely acclaimed as the first home computer, became available. Perhaps the most significant piece of software for this system was Altair BASIC, a version of BASIC that was the first product of a young company called Microsoft. Following its success with the Altair 8800, Microsoft wrote versions of BASIC for many popular microcomputers. Thanks in large part to Microsoft, BASIC became the ''lingua franca'' of home computing. BASIC resided in the ROM of these computers, meaning a user could turn on the computer and immediately begin programming. From the late 1970s through the early 1980s, BASIC reigned supreme on home computers, with 10 PRINT and thousands of other programs circulating through books, magazines, and computer club newsletters. BASIC was so canonical that some books of BASIC programs did not even bother to mention "BASIC" on their covers. |
| − | |||
| − | Following its success with the Altair 8800, Microsoft wrote versions of BASIC for many popular microcomputers. Thanks in large part to Microsoft, BASIC became the ''lingua franca'' of home computing. BASIC resided in the ROM of these computers, meaning a user could turn on the computer and immediately begin programming. From the late 1970s through the early 1980s, BASIC reigned supreme on home computers, with 10 PRINT and thousands of other programs circulating through books, magazines, and computer club newsletters. BASIC was so canonical that some books of BASIC programs did not even bother to mention "BASIC" on their covers. | ||
While the heyday of BASIC has long past, new versions, sometimes dramatically reformulated, have continued to appear. The creators of the original language introduced the structured True BASIC in 1983. In 1985, Microsoft's QuickBASIC offered several innovations and made line numbers optional. Microsoft's even more radically different Visual Basic, released in 1991, has been widely used to create business applications. | While the heyday of BASIC has long past, new versions, sometimes dramatically reformulated, have continued to appear. The creators of the original language introduced the structured True BASIC in 1983. In 1985, Microsoft's QuickBASIC offered several innovations and made line numbers optional. Microsoft's even more radically different Visual Basic, released in 1991, has been widely used to create business applications. | ||
| Line 29: | Line 25: | ||
A more legible form of code arose in the second generation of programming languages, called assembly languages. Assembly allows mnemonics for operators such as LDA ("load accumulator"), JMP ("jump"), and INC ("increment memory") to stand in for the more esoteric numerical codes. On the Commodore 64, the letters JMP followed by an absolute address are converted by the assembler to "76," in effect translating the human-legible mnemonic into machine language. The first assembler ran on Cambridge University's EDSAC in 1949. EDSAC was, incidentally, the first computer capable of storing programs, a feature modern computer users have taken for granted for decades (Campbell-Kelly and Aspray 184). Although cryptic compared to a high-level language such as BASIC, an assembler program is nevertheless more comprehensible to a human than a machine language program. While assembly is still used today in, for instance, programming firmware and in the demoscene, there are usually significant disadvantages to programming at this level. Programming in assembly highlights technical details of platforms and the transfer of values between memory locations and registers. Higher-level languages allow the programmer to concentrate on other matters, such as solving mathematical and scientific problems or modeling financial processes. | A more legible form of code arose in the second generation of programming languages, called assembly languages. Assembly allows mnemonics for operators such as LDA ("load accumulator"), JMP ("jump"), and INC ("increment memory") to stand in for the more esoteric numerical codes. On the Commodore 64, the letters JMP followed by an absolute address are converted by the assembler to "76," in effect translating the human-legible mnemonic into machine language. The first assembler ran on Cambridge University's EDSAC in 1949. EDSAC was, incidentally, the first computer capable of storing programs, a feature modern computer users have taken for granted for decades (Campbell-Kelly and Aspray 184). Although cryptic compared to a high-level language such as BASIC, an assembler program is nevertheless more comprehensible to a human than a machine language program. While assembly is still used today in, for instance, programming firmware and in the demoscene, there are usually significant disadvantages to programming at this level. Programming in assembly highlights technical details of platforms and the transfer of values between memory locations and registers. Higher-level languages allow the programmer to concentrate on other matters, such as solving mathematical and scientific problems or modeling financial processes. | ||
| − | During the first decade of electronic computing, programming was still crawling toward the ideal of Lovelace's "programs" that specified algorithms in high-level, human-readable form. To reach a level of programming more appropriate for mathematical and scientific tasks, FORTRAN (Formula Translation) was outlined in 1954 and first implemented in 1957. This language, and particularly the next version of it (FORTRAN II, which appeared in 1958), had a very strong influence on BASIC. Just as FORTRAN was designed with mathematics in mind, COBOL (Common Business-Oriented Language) was introduced in 1960 to address business uses. FORTRAN and COBOL both allowed for more intelligible code, improving on assembly. But both were also developed in the context of batch processing, for use with stacks of punched cards that would be processed by the machine one at a time. Punch cards were first used in the 18th century to define patterns in mechanical textile looms, but the concept was adopted in computing in the 20th century. The paragon of the punched card became known as simply "the IBM card," IBM's 80-column punched card, introduced in 1928. As explained in the chapter "Regularity," the Commodore 64's 80-column logical line, which appears as two 40-column lines on the screen, is one legacy of this early material medium for computing. | + | During the first decade of electronic computing, programming was still crawling toward the ideal of Lovelace's "programs" that specified algorithms in high-level, human-readable form. To reach a level of programming more appropriate for mathematical and scientific tasks, FORTRAN (Formula Translation) was outlined in 1954 and first implemented in 1957. This language, and particularly the next version of it (FORTRAN II, which appeared in 1958), had a very strong influence on BASIC. Just as FORTRAN was designed with mathematics in mind, COBOL (Common Business-Oriented Language) was introduced in 1960 to address business uses. FORTRAN and COBOL both allowed for more intelligible code, improving on assembly. But both were also developed in the context of batch processing, for use with stacks of punched cards that would be processed by the machine one at a time. Punch cards were first used in the eighteenth century to define patterns in mechanical textile looms, but the concept was adopted in computing in the twentieth century. The paragon of the punched card became known as simply "the IBM card," IBM's 80-column punched card, introduced in 1928. As explained in the chapter "Regularity," the Commodore 64's 80-column logical line, which appears as two 40-column lines on the screen, is one legacy of this early material medium for computing. |
Programs written in early versions of COBOL and FORTRAN were specific to the punched card in definite ways: COBOL reserved columns 1-6 for the line number and column 7 for a continuation mark if the card's code ran on from the previous one. FORTRAN was similar, with columns 1-5 indicating the statement number. "Comments" (usually the program name) went in columns 73-80 in both languages; a "C" in the first column indicated that the whole FORTRAN card was to be considered a comment. Unless a programmer wrote a one-liner -- which in this case means writing a program that fits on a single card -- a COBOL or FORTRAN program would take the form of a stack, often a massive stack, of punched cards. These had to be punched on a keypunch machine and fed into a card reader by an operator. Line numbers were essential should a greatly feared random act occur: if someone dropped the stack of cards and they needed to be resorted into order. | Programs written in early versions of COBOL and FORTRAN were specific to the punched card in definite ways: COBOL reserved columns 1-6 for the line number and column 7 for a continuation mark if the card's code ran on from the previous one. FORTRAN was similar, with columns 1-5 indicating the statement number. "Comments" (usually the program name) went in columns 73-80 in both languages; a "C" in the first column indicated that the whole FORTRAN card was to be considered a comment. Unless a programmer wrote a one-liner -- which in this case means writing a program that fits on a single card -- a COBOL or FORTRAN program would take the form of a stack, often a massive stack, of punched cards. These had to be punched on a keypunch machine and fed into a card reader by an operator. Line numbers were essential should a greatly feared random act occur: if someone dropped the stack of cards and they needed to be resorted into order. | ||
