DOPE, short for Dartmouth Oversimplified Programming Experiment, was a simple
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
designed by
John Kemény in 1962 to offer students a transition from
flow-charting to programming the
LGP-30
The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California (a division of General Precision Inc.), and so ...
. Lessons learned from implementing DOPE were subsequently applied to the invention and development of
BASIC
Basic or BASIC may refer to:
Science and technology
* BASIC, a computer programming language
* Basic (chemistry), having the properties of a base
* Basic access authentication, in HTTP
Entertainment
* Basic (film), ''Basic'' (film), a 2003 film
...
.
Description
Each statement was designed to correspond to a flowchart operation and consisted of a numeric line number, an operation, and the required operands:
7 + A B C
10 SIN X Z
The final variable specified the destination for the computation. The above program corresponds in functionality to the later BASIC program:
DOPE might be the first programming language to require every statement to have a
line number
In computing, a line number is a method used to specify a particular sequence of characters in a text file. The most common method of assigning numbers to lines is to assign every line a unique number, starting at 1 for the first line, and increm ...
, predating
JOSS
JOSS (acronym for JOHNNIAC Open Shop System) was one of the first interactive, time-sharing programming languages. It pioneered many features that would become common in languages from the 1960s into the 1980s, including use of line numbers as bo ...
and BASIC.
The language was case insensitive.
Variable names were a single letter A to Z, or a letter followed by a digit (A0 to Z9). As with
Fortran, different letters represented different variable types. Variables starting with letters A to D were
floating point
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a signed sequence of a fixed number of digits in some base) multiplied by an integer power of that base.
Numbers of this form ...
, as were variables from I to Z; variables E, F, G, and H each were defined as vectors with components from 1 to 16.
The language was used by only one freshman computing class. Kemeny collaborated with high school student Sidney Marshall (taking freshman calculus) to develop the language.
[Kemeny, John G.; Kurtz, Thomas E. (1985). ''Back To BASIC: The History, Corruption, and Future of the Language''. Addison-Wesley Publishing Company, Inc. 141 pp. ]
Legacy
According to
Thomas Kurtz, a co-inventor of BASIC, "Though not a success in itself, DOPE presaged BASIC. DOPE provided default vectors, default printing formats, and general input formats. Line numbers doubled as jump targets."
The language had a number of other features and innovations that were carried over into BASIC:
# Variable names were either a letter or a letter followed by a digit
# Arrays (vectors) did not have to be declared and had a default size (16 instead of 10)
# Every line required a numeric label*
# Lines were sorted in numeric order*
# Every line begins with a keyword*
# Function names were three letters long*
# The only loop construct was a for-loop
Unlike either
Fortran or
Algol 60
ALGOL 60 (short for ''Algorithmic Language 1960'') is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing a ...
.
See also
*
DARSIMCO, 'Dartmouth Simplified Code', a 1956 assembler macro language
*
Dartmouth ALGOL 30, a compiler developed by Dartmouth for the LGP-30
References
Programming languages
{{prog-lang-stub