Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
- B
-
BASIC
- Language type:
- Description:
The Beginners All-purpose Symbolic Instruction
Code (BASIC) was designed by two professors
at Dartmouth University to be an easy first
language for programming neophytes.
Though the first version was compiled,
most Basic systems were interpreters.
Original Basic had a simple syntax that
included a line number for every source
line. Control structure mostly consisted
of GOTO ### and GOSUB ###; simple conditional
and bounded loop constructs were also
available. Original Basic provided numeric and array datatypes, but no strings, structures, or objects. Strings were added
to most early versions of Basic, but more
sophisticated data structures weren't added
until many years later.
Basic has enjoyed steady popularity and
usage since about 1965, and has evolved
greatly since then. Modern Basic dialects,
such as Visual Basic, eschew line numbers,
support objects, libraries, GUIs, databases,
optimizing compilers, garbage collected
dynamic memory management, and much more.
Basic was and still still is loosely typed,
and has poor support for enforcing program
portability.
Dialects and subsets of Basic are often
designed as extension or macro languages
for programming systems on PCs.
- Origin:
John Kemeny & Thomas Kurtz, Dartmouth, 1963-64
- See Also:
- Remarks:
It is very easy to learn and use Basic,
but the language is not well adapted for
large-scale programming. Also, the
deficiencies in the early versions of the
language lead to a splintering of the
Basic community in the 1980s.
Basic originally ran on the IBM 704.
Later, it was very popular on DEC PDP-11
computers, especially under their RSTS
time-sharing OS. On Microsoft operating
systems, Visual Basic is extremely popular
because its development environment offers
easy GUI development without the discipline
needed for languages like C++ or Java.
Various Basic dialects are also used for
business programming, such as BBx and
PowerBasic.
There are many commercial implementations
of Basic available, mostly for PCs and
Macs. On UNIX systems,
tasks that might once have been done in
Basic have largely been taken over by
Perl.
Contrary to popular belief, Microsoft did
not invent Basic, nor was Basic invented
for PCs.
There is an ANSI standard for minimal
Basic, X3.60-1978.
- Links:
-
-
-
-
- Date:
- Sample code:
REM Very very simple QBasic program
PRINT "My Menu"
PRINT "Press 1 to clear the screen, or 2 to say 'Hello'!"
INPUT "What do you want to do"; choice
IF choice = 1 THEN GOTO clrscr
IF choice = 2 THEN GOTO hello
clrscr: CLS
PRINT "Done."
END
hello: PRINT "Hello, hello, hello!"
END
-
BCPL
- Language type:
- Description:
BCPL was an early block-structure
procedural language, fairly low-level,
and used for system and small application
programming in the early- and mid-1970s.
BCPL is an operator-typed language; the
data types of variables are defined by
the operators applied (rather than being
declared for the variable, as in Algol).
Data items were untyped cells
labeled with identifiers.
Data types supported by BCPL included
integers, reals, bit patterns, I/O streams,
various kinds of references, and
vectors. Strings
could only be used as constants.
The language supported simple control
constructs like loops and conditionals,
as well as means to declare subroutines
and functions.
The BCPL system library, which evolved
along with the language, provided I/O
support and very simple memory management.
Early versions of BCPL were
machine native compilers, but nearly all
recent versions have been translators.
In other words, the BCPL compiler
translates the BCPL code to an abstract
machine language called INTCODE. The
INTCODE data is then interpreted by a
simple, fast virtual machine (typically
coded in assembly language, C, or a
mixture of the two).
There were several academic implementations
of BCPL in Britain. Free versions are
available today for various Unix systems,
the Amiga, MS-DOS, and other operating
systems.
- Origin:
Martin Richards, Cambridge University, 1966-67.
- See Also:
- Remarks:
BCPL was the inspiration for two systems
programming languages developed at
Bell Telephone Laboratories in the 1970s:
B and C.
BCPL was originally designed in the UK,
but was first implemented at MIT. At
some British universities, it was used in
the 1970s to teach programming to
undergraduates.
The name BCPL stands for
Basic Combined Programming Language.
Many of the ideas in BCPL were taken
from Algol60.
- Links:
-
- Date:
- Sample code:
// Routine to compute a checksum of a
// named file, simplified from a compiler example.
GET "libhdr"
LET start() = VALOF
$( LET args = VEC 50
LET instream = 0
LET outstream = 0
LET sum = 314159
IF rdargs("FROM/A,TO/K", args, 50) = 0 DO
$( writes("Bad arguments for CHECKSUM*n")
RESULTIS 20
$)
instream := findinput(args!0)
IF instream = 0 DO $( writef("can't open %s*n", args!0)
RESULTIS 20
$)
selectinput(instream)
UNLESS args!1 = 0 DO
$( outstream := findoutput(args!1)
IF outstream = 0 DO $( writef("can't open %s*n", args!1)
endread()
RESULTIS 20
$)
$)
$( LET ch = rdch()
IF ch=endstreamch BREAK
sum := (13*sum + ch) & #xFFFFFFF
$) REPEAT
UNLESS outstream=0 DO selectoutput(outstream)
writef("%n*n", sum)
out:
endread()
UNLESS outstream = 0 DO $( selectoutput(outstream)
endwrite()
$)
RESULTIS 0
$)
-
Befunge
- Language type:
T - Threaded or stack-based
- Description:
Befunge is an interpreted
low-level programming
language that uses a unique data model
and instruction set to perform
computations on a coordinate grid.
The Befunge machine model stipulates
the existence of a pushdown stack, and
a two-dimensional grid of cells. Each
cell can hold a data item, which may be
treated as an instruction or as data,
depending on program execution. The
"Instruction Pointer" can move in any
of four directions: up, down, left, or right.
Befunge's instruction set includes
stack manipulation, arithmetic,
rudimentary I/O, conditional
branches (both horizontal and vertical),
and many other operations.
In Befunge-93, the grid was fixed in size:
80x24, but Befunge-97 allows an unlimited-size
grid.
In Befunge-93, the data types
supported were 32-bit integers
and bytes, but Befunge-97
supports only machine-width integers.
Befunge-97 also supports a broad
set of interpreter directives (very
roughly analogous to assembler
directives or C preprocessor directives)
to help the programmer take advantage
of the larger grid.
Several free
implementations of both old Befunge-93
and newer Befunge-97 exist, some
explicitly for PCs and at least one that
is highly portable (based on Perl).
Fairly good documentation and some
example programs are available on the web.
- Origin:
- See Also:
- Remarks:
Befunge with its relatives probably has
a fair claim to being the weirdest
programming language yet implemented.
Even more mind-boggling is that it
garnered enough of a community to
warrant a second, expanded language
definition and several additional
implementations.
In general, a Funge is a programming
language based on a tiling coordinate space
of
cells and allowing arbitrary motion of
the Instruction Pointer. Befunge is a
2-dimensional cartesian Funge. Other popular
possibilities are Unefunge (1-D) and
Trefunge (3-D).
It has been hypothesized that Befunge-97
is Turing Complete, but no proofs seem to
be available.
- Links:
-
-
- Date:
- Sample code:
A Befunge program to compute a square root
(by Jason Reed):
v>00p10p>00g:10g\/v
^:&< |:-1p00/2+<
>93*^ >00g.@
A Befunge program to generate random
integers (by Ken Bateman):
088+>v
>+\^1@
1 \-.
>? ^:\
^+:\_^
-
BETA
- Language type:
- Description:
BETA is a powerful object-oriented language
intended for application development.
It evolved in the Scandanavian object-oriented
programming community, which helped originate
object-oriented programming with Simula.
BETA language features include: strong type
checking, inheritance, concurrency,
object persistence, runtime type
identification, garbage collection,
polymorphism, and GUI support.
The syntax of BETA is somewhat like Pascal
and somewhat like C. Punctuation
symbols are used for many syntactic elements
in place of keywords, giving the code a
terse, compact appearance.
- Origin:
Madsen et al, Aarhus Univesity, 1983
- See Also:
- Remarks:
BETA is an attempt to produce an all-around
useful language with clean syntax and
semantics, starting from a clean slate.
The breadth of features in the BETA system
is impressive, although the terse syntax
may make the language a little hard to learn.
A commercial implementation of BETA is
available from Mjolner Informatics for most
platforms. They also have a free
evaluation version.
BETA has been the vehicle for research
into adding multi-programming and
distributed computation to object-oriented
languages.
Mjolner and Aarhus U make a great deal of
BETA documentation available, most of it
in PDF or Postscript.
- Links:
-
-
- Sample code:
- BLISS
- Language type:
- Description:
Bliss was a low-level procedural language
developed and used by Digital Equipment
Corp. for system programming. Widely
used by DEC in development of OS software
and tools for PDP, DECsystem, and VAX lines of
computers roughly 1971-1988. No longer
widely used.
Bliss supported various datatypes, but
did not enforce strong type checking. It
had a very powerful macro system that was
heavily used in system coding, but which
made crafting a compiler for the language
more difficult. Because it was intended as
a system programming language, it had
features that allowed the programmer to do
what is taught in the 1990s as the compiler's
job: register allocation, data structure
packing definition, etc.
- Origin:
Wulf, Russell et al, DEC, 1970?
- See Also:
- Remarks:
For the most part, BLISS was available
only as a commercial product from DEC.
There was one free compiler for the
PDP-10, and DEC later released a BLISS-32
compiler to customers as an OpenVMS add-on.
Research on BLISS was done at
DEC and at CMU.
Because BLISS's useful lifetime does not
intersect that of the WWW, it seems that
very little information is available.
- BLooP
- Language type:
- Description:
BLooP was a very simple recursive
block structured language invented by
Douglas Hofstadter for his book
Godel, Escher, Bach. It features
simple subroutine structure, very simple
number and boolean handling, and recursion.
The interesting aspect of BLooP was that it
offered only bounded loop constructs, and
was therefore incapable of expressing
certain general recursive computations.
- Origin:
Hofstader, 1979 (implementation: Cowan, 1994)
- See Also:
- Remarks:
Though Hofstadter doesn't mention it
in GEB, BLooP is similar to
early exercises in exploring the
computational model of "Random Access
Machines". Note the use of 'CELL(0) <= 2'
and similar constructs.
Though BLooP was never intended to be
more than an academic exercise, an
implementation of BLooP in Perl was
made. Unfortunately, I can't seem to
find it.
It is interesting to note that, in order to
limit the power of this language to only
primitive recursive functions, and also
not-so-coincidentally to make the halting
problem for BLooP solvable, Dr. Hofstadter
had to severly restrict the feature set of
BLooP: no GOTOs, no While loops, etc.
- Links:
-
- Date:
- Sample code:
From GEB, Chapter 13:
DEFINE PROCEDURE "GOLDBACH?" [N]:
BLOCK 0: BEGIN
CELL(0) <= 2;
LOOP AT MOST N TIMES:
BLOCK 1: BEGIN
IF {PRIME?[CELL(0)]
AND PRIM[MINUS[N,CELL(0)]]},
THEN:
BLOCK 2: BEGIN
OUTPUT <= YES;
QUIT BLOCK 0;
BLOCK 2: END
CELL(0) <= CELL(0) + 1;
BLOCK 1: END
BLOCK 0: END
- 6 entries retrieved.
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.