From: billk@HAWK.CS.UKANS.EDU (Bill Kinnersley)
Newsgroups: comp.lang.misc
Subject: The Language List Version 1.8 - Part 1 of 9
Date: 1 Sep 92 22:19:45 GMT

The Language List - Version 1.8, September 1992

Collected information on about 1900 computer languages, past and present.

Currently maintained by:

  Bill Kinnersley
  Computer Science Department
  University of Kansas
  Lawrence, KS 66045

  billk@hawk.cs.ukans.edu

Version 1.7:  Apr  6, 1991
Version 1.6:  Jan 15, 1992
Version 1.5:  Nov 10, 1991
Version 1.4:  Sept 8, 1991
Version 1.3:  July 8, 1991
Version 1.2:  May 30, 1991
Version 1.1:  May  1, 1991
Version 1.0:  Mar  7, 1991

Started by:

  Tom Rombouts
  Ashton-Tate Product Development
  20101 Hamilton Avenue, Torrance, CA 90277
  Work: (213)538-7108

  Home:
  535 Esplanade, #502
  Redondo Beach, CA  90277
  Ans Svc: (213)543-3811

  USENET:  tomr@ashtate.A-T.com

  This document is intended to become one of the longest lists of computer
programming languages ever assembled (or compiled).  Its purpose is not to
be a definitive scholarly work, but rather to collect and provide the best
information that we can in a timely fashion.  Its accuracy and completeness
depends on the readers of Usenet, so if you know about something that
should be added, please help us out.  Over 100 netters have already
contributed to this effort.  We hope that this list will continue to evolve
as a useful resource available to everyone on the net with an interest in
programming languages.


"YOU LEFT OUT LANGUAGE ___!"

   If you have information about a language that is not on this list,
please e-mail the relevant details to the current maintainer, as shown
above.  If you can cite a published reference to the language, that will
help in determining authenticity.


What Languages Should Be Included

   The "Published" Rule - A language should be "published" to be included
in this list.  There is no precise criterion here, but for example a
language devised solely for the compiler course you're taking doesn't
count.  Even a language that is the topic of a PhD thesis might not
necessarily be included.  But if material on that language was published in
a technical journal or report, or if it formed the basis for additional
research, the language belongs in this list.  A language does NOT have to
be implemented (actually running on at least one computer) to be included. 
Many languages appearing in the ACM SIGPLAN Notices fall into this
category.

   In general when there's any doubt an entry will be included.  Making the
list as complete as possible necessarily means there will be a large number
of obscure entries.  To compensate for this "clutter" effect, more
widespread languages such as C or FORTRAN should have longer entries.

   For historical completeness roughly 200 early pre-1959 "automatic
programming systems" were included, based on a list from CACM 2(5):16, May
1959.  It can be argued that many of these are not really programming
languages as the term is used today.  We've also included some formalisms
which are clearly not meant to be used as a source language for writing
programs: metalanguages such as BNF, intermediate languages such as P-Code,
and computational models such as Linda.


Dialects, Variants, Versions and Implementations

   Computer languages evolve, and are related to one another in rather
complex ways.  Almost every language can be regarded as an improved version
of something else.  Sometimes it's hard to know where to draw the line and
say "this is a separate language".  Taking LISP as an example, what started
out as a single language has evolved into a large family.  Dialects (such
as Scheme and Common LISP) have major differences and are certainly
considered by their users to be distinct languages.  Variants (such as
Kyoto Common LISP and Allegro CL) are primarily intended to be the same,
but have certain features which make them incompatible.  Implementations
are designed to run on particular machines or operating systems and will
usually have special features added.  Inevitably a series of revisions will
be issued, causing further small changes in the language.  It has even been
suggested that if command line options are present, each choice of options
could be considered a distinct language!

   A language's name by itself is not always an accurate guide to its
identity.  Sometimes a language will undergo significant evolution without
any official change in name (e.g. SETL2 has done this).  Sometimes just the
name will change (IAL to ALGOL to ALGOL 58).  And occasionally a name has
been used for several distinct languages (e.g. Vulcan).

   It may also be debatable what is "in" a language and what is not.  For
example SML is defined in stages: a "core syntax" surrounded by a standard
set of extensions.  Technically that makes it two separate languages, but
the SML core syntax would be frustrating to write programs in.  Other
languages have purposely omitted essential features like I/O from their
definition because they were never intended to be used without a standard
library (C) or interface (Smalltalk-80), or because they constitute the
command language for a particular product or system.  Still other languages
are by their very nature extensible, and the number of macro packages built
on TeX for example could be called an endless list of separate "languages".

   Brand names - You might wonder why we do include a number of commercial
products such as Turbo Pascal.  Usually these items offer non-standard
extensions to the base language.  This has been particularly true in the
varieties of BASIC and Prolog.  But also one could argue that in a strict
sense Microsoft C and Turbo C for example are distinct languages.
   Another reason for including entries of this type is that many languages
are proprietary, appearing only in a certain product.  Such languages may
be distinctive and interesting and deserve to be here.  On the other hand
we don't want the list to become a catalog of commercial programming
products.


What Each Entry Should Contain

Name:  An explanation of the language name, which in perhaps 80% of the
cases is some form of acronym or abbreviation.

Date of origin:  The year when a language first appeared.  Since the
design, implementation and distribution of a language can take place over a
period of several years, such dates are often approximate.  Any language
that has an ANSI or ISO standard should include the date approved.  For
specific brands such as Turbo Pascal the release dates of each version can
be listed.

Reference:  At least one reference work on the language, as definitive or
as official as possible.

Availability:  ftp site, commercial source or publisher, contacts for
further information.

"See also:"  Related languages or terms that may also be of interest.

   Any material marked with brackets "[]" is doubtful and may be considered
a request for further information.

   Editorial Comments -  What constitutes a good language has often become
the subject of intense debate.  We've tried to avoid adding to this by
making any remarks that are clearly subjective, such as calling a language
"powerful".  Nevertheless some comments might still be construed this way. 
For instance saying that Pascal is "ALGOL-like" could offend both some
ALGOL and some Pascal users.  Also, some questions of historical origin are
not universally agreed upon.


   Classification - It's been suggested that the languages in this list
should be arranged into categories, but to do so would be extremely
difficult.  For every classification scheme there wlll be a large
proportion of languages that do not fit.  The languages are therefore
listed alphabetically, and in fact we think that this is the most useful
organization.  You'll find that the following categories have been referred
to in the list, but we must emphasize that most languages are not purely
one or the other, and we are really categorizing language features.

Imperative language

	A language which operates by a sequence of commands that change the
value of data elements.  Typified by assignments and iteration.

Declarative language

	A language which operates by making descriptive statements about data
and relations between data.  The algorithm is hidden in the semantics of
the language.  This category encompasses both applicative and logic
languages.  Examples of declarative features are set comprehensions and
pattern-matching statements.

Procedural language

	A language which states how to compute the result of a given problem. 
Encompasses both imperative and functional languages.

Applicative language

	A language that operates by application of functions to values, with no
side effects.  A functional language in the broad sense.

Functional language

	In the narrow sense, a functional language is one that operates by use
of higher-order functions, building operators that manipulate functions
directly without ever appearing to manipulate data.  Example: FP.

Definitional language

	An applicative language containing assignments interpreted as
definitions.  Example: Lucid.

Single Assignment language

	An applicative language using assignments with the convention that a
variable may appear on the left side of an assignment only once within the
portion of the program in which it is active.

Dataflow language

	A language suitable for use on a dataflow architecture.  Necessary
properties include freedom from side effects, and the equivalence of
scheduling constraints with data dependencies.  Examples: Val, Id, SISAL,
Lucid.

Logic language

	A logic language deals with predicates or relationships p(X,Y).  A
program consists of a set of Horn clauses which may be:
	facts - p(X,Y) is true
	rules - p is true if q1 and q2 and ...qn are true
	queries - is g1 and g2 and ...gn true?  (gi's are the goals.)
	Further clauses are inferred using resolution.  One clause is selected
containing p as an assumption, another containing p as a consequence, and p
is eliminated between them.  If the two p's have different arguments they
must be unified, using the subsitution with the fewest constraints that
makes them the same.
    Logic languages try alternative resolutions for each goal in
succession, backtracking in a search for a common solution.  OR-parallel
languages try alternative resolutions in parallel, while AND-parallel
languages try to satisfy several goals in parallel.

Constraint language

	A language in which a problem is specified and solved by a series of
constraining relationships.

Object-Oriented language

	A language in which data and the functions which access it are treated
as a unit.

Concurrent language

	A concurrent language describes programs that may be executed in
parallel.  This may be either
	multiprogramming: sharing one processor
	multiprocessing: separate processors sharing one memory
	distributed

Concurrent languages differ in the way that processes are created:
	coroutines - control is explicitly transferred - Simula I, SL5, BLISS,
Modula-2.
	fork/join - PL/I, Mesa
	cobegin/coend - ALGOL 68, CSP, Edison, Argus
	process declarations - DP, SR, Concurrent Pascal, Modula, PLITS, Ada

and the ways in which processes interact:
	semaphores - ALGOL 68
	conditional critical regions - Edison, DP, Argus
	monitors - Concurrent Pascal, Modula
	message passing - CSP, PLITS, Gypsy, Actors
	remote procedure calls - DP, *Mod
		rendezvous - Ada, SR
		atomic transactions - Argus

Fourth generation language (4GL's)

	A very high-level language.  May use natural English or visual
constructs.

Query language

	An interface to a database.

Specification language

	A formalism for expressing a hardware or software design.

Assembly language

	A symbolic representation of the machine language of a specific
computer.

Intermediate language

	A language used as an intermediate stage in compilation.  May be either
text or binary.

Metalanguage

	A language used for formal description of another language.



                           * * * * * * *


2.PAK - AI language with coroutines.  "The 2.PAK Language: Goals and
Description", L.F. Melli, Proc IJCAI 1975.

473L Query - English-like query language for Air Force 473L system.  Sammet
1969, p.665.

9PAC - 709 PACkage.  1959.  Report generator for IBM 7090.  Sammet 1969,
p.314.

*LISP - ("StarLISP")  Cliff Lasser, Jeff Mincy, J.P. Massar, Thinking
Machines Corp.  A data-parallel extension of Common LISP for the Connection
Machine.  "The Essential *LISP Manual", TM Corp 1986.
ftp: think.com:/public/starsim-f19-sharfile, a *LISP simulator.
info: customer-support@think.com
      documentation-order@think.com

*MOD - ("StarMOD")  Concurrent language combining the modules of Modula and
the communications of Distributed Processes.  "*MOD - A Language for
Distributed Programming", R.P. Cook, IEEE Trans Soft Eng SE-6(6):563-571
(Nov 1980).

A0 or A-0 - Possibly the first compiler ever.  Grace Hopper's team at
Remington Rand, 1952, for the UNIVAC I or II.   Later internal versions: A-
1, A-2, A-3, AT-3.  AT-3 was released as MATH-MATIC.  Sammet 1969, p.12.

AADL - Axiomatic Architecture Description Language.  "AADL: A Net-Based
Specification Method for Computer Architecture Design", W. Damm et al in
Languages for Parallel Architectures, J.W. deBakker ed, Wiley 1989.

ABC - 

  1. Leo Geurts, Lambert Meertens, Steven Pemberton.  Simple interactive
language designed for quick easy programming.  Includes a programming
environment with syntax-directed editing, suggestions, persistent variables
and multiple workspaces and infinite precision arithmetic.  "An Alternative
Simple Language and Environment or PC's", S. Pemberton, IEEE Software
4(1):56-64 (Jan 1987).  "The ABC Programmer's Manual", Leo Geurts et al, P-
H 1989.
ftp: mcsun.eu.net and uunet.uu.net  Unix source, MS-DOS, Mac and Atari ST
executables.
info: abc@cwi.nl
list: abc-list@cwi.nl maintained by Steven Pemberton <abc-list-
request@cwi.nl>.

  2. (A="argument",B="basic value",C=?).  Intermediate code for the ABC
abstract machine for implementation of functional languages.  P. Koopman,
"Functional Programs as Executable Specifications", 1990. [?] 

ABCL/1 - An Object-Based Concurrent Language.  Yonezawa, U Tokyo 1986. 
Language for the ABCL concurrent (MIMD) system.  Asynchronous message
passing to objects.  Implementations in KCL and Symbolics LISP available
from the author.  "ABCL: An Object-Oriented Concurrent System", A. Yonezawa
ed, MIT Press 1990.
ftp: camille.is.s.u-tokyo.ac.jp
info: matsu@is.s.u-tokyo.ac.jp

ABCL/c+ - Concurrent object-oriented language, an extension of ABCL/1 based
on C.  "An Implementation of An Operating System Kernel using Concurrent
Object Oriented Language ABCL/c+", N. Doi et al in ECOOP '88, S. Gjessing
et al eds, LNCS 322, Springer 1988.

ABCL/R - Yonezawa, Tokyo Inst Tech 1988.  Reflective concurrent object-
oriented language.  "Reflection in an Object-Oriented Concurrent Language",
T. Watanabe et al, SIGPLAN Notices 23(11):306-315 (Nov 1988).

ABLE - Simple language for accountants.  "ABLE, The Accounting Language,
Programming and Reference Manual," Evansville Data Proc Center, Evansville,
IN, Mar 1975.  Listed in SIGPLAN Notices 13(11):56 (Nov 1978).

ABSET - U Aberdeen.  Early declarative language.  "ABSET: A Programming
Language Based on Sets", E.W. Elcock et al, Mach Intell 4, Edinburgh U
Press, 1969, pp.467-492.

ABSYS - U Aberdeen.  Early declarative language, anticipated a number of
features of Prolog.  "ABSYS: An Incremental Compiler for Assertions", J.M.
Foster et al, Mach Intell 4, Edinburgh U Press, 1969, pp.423-429.

Accent - Very high level interpreted language with strings, tables, etc. 
Strongly typed, remote function calls.  CaseWare Inc.

Access - English-like query language used in the Pick OS.

ACL - A Coroutine Language.  A Pascal-based implementation of coroutines. 
"Coroutines", C.D. Marlin, LNCS 95, Springer 1980.

ACOM - Early system on IBM 705.  Listed in CACM 2(5):16 (May 1959).

ACP - Algebra of Communicating Processes.  "Algebra of Communicating
Processes with Abstraction", J.A. Bergstra & J.W. Klop, Theor Comp Sci
37(1):77-121 (1985).  (compare CCS).

ACT++ - Concurrent extension of C++ based on actors.  "ACT++: Building a
Concurrent C++ With Actors", D.G. Kafura TR89-18, VPI, 1989.

ACT ONE - Specification language.  "An Algebraic Specification Language
with Two Levels of Semantics", H. Ehrig et al, Tech U Berlin 83-03 Feb
1983.

Act1 - An actor language, descendant of Plasma.  "Concurrent Object
Oriented Programming in Act1", H. Lieberman in Object Oriented Concurrent
Programming, A. Yonezawa et al eds, MIT Press 1987.

Act2 - An actor language.  "Issues in the Design of Act2", D. Theriault,
TR728, MIT AI Lab, June 1983.

Act3 - High-level actor language, descendant of Act2.  Provides support for
automatic generation of customers and for delegation and inheritance. 
"Linguistic Support of Receptionists for Shared Resources", C. Hewitt et al
in Seminar on Concurrency, S.D. Brookes et al eds, LNCS 197, Springer 1985,
pp. 330-359.

Actalk - Briot, 1989.  Smalltalk-based actor language.  "Actalk: A Testbed
for Classifying and Designing Actor Languages in the Smalltalk-80
Environment", J-P. Briot, Proc ECOOP '89, pp.109-129.

Active Language I - Early interactive math, for XDS 930 at UC Berkeley. 
"Active Language I", R. de Vogelaere in Interactive Systems for
Experimental Applied Mathematics, A-P 1968.

Actor - Charles Duff, Whitewater Group ca 1986.  Object-oriented language
for Microsoft Windows.  Pascal/C-like syntax.  Uses a token-threaded
interpreter.  Early binding is an option.  "Actor Does More than Windows",
E.R. Tello, Dr Dobb's J 13(1):114-125 (Jan 1988).

Actors - C. Hewitt.  A model for concurrency.  "Laws for Communicating
Parallel Processes", C. Hewitt et al, IFIP 77, pp. 987-992, N-H 1977. 
"ACTORS: A Model of Concurrent Computation in Distributed Systems", Gul A.
Agha, Cambridge Press, MA, 1986.

Actra - An exemplar-based Smalltalk.  LaLonde et al, OOPSLA '86.

Actus - Pascal with parallel extensions, similar to the earlier Glypnir. 
Parallel constants, index sets.  Descendants include Parallel Pascal,
Vector C, and CMU's recent language PIE.  "A Language for Array and Vector
Processors," R.H. Perrott, ACM TOPLAS 1(2):177-195 (Oct 1979).

Ada - (named for Ada Lovelace (1811-1852), arguably the world's first
computer programmer.)  Jean Ichbiah's team at CII Honeywell, for the U.S.
Department of Defense, 1980.  Ada is a large, complex block-structured
language aimed primarily at embedded computer applications.  It has
facilities for real-time response, concurrency, hardware access, and
reliable run-time error handling.  In support of large-scale software
engineering, it emphasizes strong typing, data abstraction and
encapsulation.  The type system uses name equivalence and includes both
subtypes and derived types.  Both fixed and floating point numerical types
are supported.
    Control flow is fully bracketed: if-then-elsif-end if, case-is-when-end
case, loop-exit-end loop, goto.  Subprogram parameters are in, out, or
inout.  Variables imported from other packages may be hidden or directly
visible.  Operators may be overloaded, and so may enumeration literals. 
There are user-defined exceptions and exception handlers.
    An Ada program consists of a set of packages encapsulating data objects
and their related operations.  A package has a separately compilable body
and interface.  Ada permits generic packages and subroutines, possibly
parametrized.
    Ada programming places a heavy emphasis on multitasking.  Tasks are
synchronized by the rendezvous, in which a task waits for one of its
subroutines to be executed by another.  The conditional entry makes it
possible for a task to test whether an entry is ready.  The selective wait
waits for either of two entries or waits for a limited time.
    "Reference Manual for the Ada Programming Language", ANSI/MIL STD
1815A, U.S. DoD (Jan 1983).
info: adainfo@ajpo.sei.cmu.edu
ftp repository: wsmr-simtel20.army.mil
ftp info: ajpo.sei.cmu.edu
ftp interpreters: stars.rosslyn.unisys.com:pub/ACE_8.0, for SunOS
AdaEd compiler/interpreter for Unix, MS-DOS, Atari ST, Amiga
	ab20.larc.nasa.gov:amiga/languages/ada/AdaEd1.11.0a.bin.lzh for Amiga
	cs.nyu.edu:pub/adaed

Ada 83 - The original Ada, as opposed to Ada 9X.

Ada 9X - Revision of Ada currently under development.
ftp: ajpo.sei.cmu.edu
mailing list: Chris Anderson <anderson@uv4.eglin.af.mil> (Ada 9X Project
Manager)

Ada++ - Object-oriented extension to Ada, implemented as a preprocessor.

ADAM - A DAta Management system.

Adaplex - An extension of Ada for functional databases.  "Adaplex:
Rationale and Reference Manual 2nd ed", J.M. Smith et al, Computer Corp
America, Cambridge MA, 1983.

ADAPT - Subset of APT.  Sammet 1969, p.606.

ADD 1 TO COBOL GIVING COBOL - Bruce Clement.  Tongue-in-cheek suggestion
for an object-oriented COBOL.  SIGPLAN Notices 27(4):90-91 (Apr 1992).

ADES - Early system on IBM 704.  Listed in CACM 2(5):16 (May 1959). 
Version: ADES II.

ADL -

  1. Adventure Definition Language.  Ross Cunniff <cunniff@fc.hp.com> & Tim
Brengle, 1987.  An adventure language, semi-object-oriented with LISP-like
syntax.  A superset of DDL.  Available for Unix, MS-DOS, Amiga and Acorn.
ftp: gatekeeper.dec.com: pub/games/comp.sources.games/volume2
	wuarchive.wustl.edu: /systems/amiga/fish/fish/f0/ff091

  2. Ada Development Language.  R.A. Lees, 1989.

AdLog - Adds a Prolog layer to Ada.  "AdLog, An Ada Components Set to Add
Logic to Ada", G. Pitette, Proc Ada-Europe Intl Conf Munich, June 1988.

ADM - Picture query language, extension of Sequel2.  "An Image-Oriented
Database System", Y. Takao et al, in Database Techniques for Pictorial
Applications, A. Blaser ed, pp.527-538.

ADVSYS - David Betz, 1986.  An adventure language, object-oriented and
LISP-like.
ftp: uunet.uu.net:comp.sources.games/Volume2

AE - Application Executive.  Brian Bliss <bliss@sp64.csrd.uiuc.edu>  An
embeddable language, written as a C interpreter.
ftp: sp2.csrd.uiuc.edu:ae.tex.Z

AED - Automated Engineering Design (aka ALGOL Extended for Design).  MIT ca
1965 by Doug Ross (now at Softech).  Systems language for IBM 7090 and 360,
an extension of ALGOL-60 with records, pointers, and dynamic allocation. 
DYNAMO II was written in AED.  "The Automated Engineering Design (AED)
Approach to Generalized Computer-Aided Design", D.T. Ross, Proc ACM 22nd
Natl Conf, 1967.  Sammet 1969 and 1978.  Versions: AED-0, AED-1, AED-JR.

Aeolus - Concurrent language with atomic transactions.  "Rationale for the
Design of Aeolus", C. Wilkes et al, Proc IEEE 1986 Intl Conf Comp Lang,
IEEE 1986, pp.107-122.

AESOP - An Evolutionary System for On-line Programming.  Early interactive
query system with light pen for IBM 1800.  "AESOP: A Final Report: A
Prototype Interactive Information Control System", J.K. Summers et al, in
Information System Science and Technology, D. Walker ed, 1967.  Sammet
1969, p.703.

AFAC - Early system on IBM 704.  Listed in CACM 2(5):16 (May 1959).

AGORA - Distributed object-oriented language.[?]

AHPL - Hewlett Packard.  Hpsim interpreter written in FORTRAN.

AIDA - 

  1. M. Gfeller.  A functional dialect of Dictionary APL.  "APL Arrays and
Their Editor", M. Gfeller, SIGPLAN Notices 21(6):18-27 (June 1986) and
SIGAPL Conf Proc [?]

  2. Karlsruhe, 1980.  An intermediate representation language for Ada, was
merged with TCOL.Ada to form Diana.

AIMACO - AIr MAterial COmmand compiler.  Modification of FLOW-MATIC. 
Supplanted by COBOL.  Sammet 1969, p.378.

AKCL - Austin Kyoto Common LISP.  Bill Schelter.  Improvements to KCL.
ftp: rascal.ics.utexas.edu

AKL - Andorra Kernel Language.  Successor of KAP.  "Programming Paradigms
of the Andorra Kernel Language", S. Janson <sverker@sics.se> et al in Logic
Programming: Proc 1991 Intl Symp, MIT Press 1991.  Prototype implementation
available from the author.

AL - Assembly Language.  Stanford U, 1970's.  Language for industrial
robots.  "The AL Language for an Intelligent Robot", T. Binford in
Languages et Methods de Programation des Robots Industriels, pp.73-88, IRIA
Press 1979.  "AL User's Manual", M.S. Mujtaba et al, Stanford AI Lab, Memo
AIM-323 (Jan 1979).

ALADIN - 

  1. A Language for Attributed DefINitions.  The input language for the GAG
compiler generator.  Applicative, strongly typed.  "GAG: A Practical
Compiler Generator", U. Kastens et al, LNCS 141, Springer 1982.

  2. Interactive math for IBM 360.  "A Conversational System for
Engineering Assistance: ALADIN", Y. Siret, Proc Second Symp Symb Algebraic
Math, ACM Mar 1971.

ALAM - Symbolic math, especially for General Relativity.  "ALAM
Programmer's Manual", Ray D'Inverno, 1970.  (See CLAM).

ALC - Assembly Language Compiler.  Alternative name for IBM 360 assembly
language.  (cf. BAL).

ALCOR - Subset of ALGOL.  Sammet 1969, p.180.

Aldat - Database language, based on extended algebra.  Listed by M.P.
Atkinson & J.W. Schmidt in a tutorial in Zurich, 1989. [?]

ALDES - ALgorithm DEScription.  "The Algorithm Description Language ALDES",
R.G.K. Loos, SIGSAM Bull 14(1):15-39 (Jan 1976).

ALDiSP - Applicative Language for Digital Signal Processing.  1989, TU
Berlin.  Functional language with special features for real-time I/O and
numerical processing.  "An Applicative Real-Time Language for DSP-
Programming Supporting Asynchronous Data-Flow Concepts", M. Freericks
<mfx@cs.tu-berlin.de> in Microprocessing and Microprogramming 32, N-H 1991.

ALEC - A Language with an Extensible Compiler.  Implemented using RCC on an
ICL 1906A.  "ALEC - A User Extensible Scientific Programming Language",
R.B.E. Napper et al, Computer J 19(1):25-31.

ALEPH -

  1. A Language Encouraging Program Hierarchy.  ca 1975.  "On the Design of
ALEPH", D. Grune, CWI, Netherlands 1986.

  2. Peter Henderson ca. 1970.  Formal semantics.  CACM 15(11):967-973 (Nov
1972).

Alex -

  1. Stephen Crawley <sxc@itd.dtso.oz.au>, Defence Science & Tech Org,
Australia.  Under development.  Polymorphic with ADT's, type inference,
inheritance.

  2. ISWIM-like language with exception handling.  "An Exception Handling
Construct for Functional Languages", M. Brez et al, Proc ESOP88, LNCS 300,
Springer 1988.

Alfl - Paul Hudak <hudak-paul@cs.yale.edu>, Yale 1983.  Functional, weakly
typed, lazy.  Implemented as a preprocessor to the Orbit Scheme compiler,
by transforming laziness into force-and-delay.  "Alfl Reference Manual and
Programmer's Guide", P. Hudak, YALEU/DCS/RR322, Yale U, Oct 1984.  (See
ParAlfl).

ALGEBRAIC - Early system on MIT's Whirlwind.  Listed in CACM 2(5):16 (May
1959).

ALGOL 58 - See IAL.

ALGOL 60 - ALGOrithmic Language.  Designed for scientific computations,
ALGOL 60 was small and elegant.  It was the first language to be described
in BNF.  There were three lexical representations: reference, hardware and
publication.
    Only three basic types: integer, real and boolean.  Arrays had lower
bounds.  Dynamic arrays.  Strong typing.  Data hiding with 'own' variables. 
No user-defined types.
    ALGOL 60 was the first block-structured language, with nested
procedures and blocks, nested syntax, compound statement with begin-end. 
Keywords.  Conditional expression.  Introduced :=, if-then-else, very
general 'for' loops.Switch declaration (an array of statement labels)
generalizing FORTRAN's computed goto. Procedures were recursive, and
parameters were pass-by-value and pass-by-name.
"Report on the Algorithmic Language ALGOL 60", Peter Naur ed, CACM
3(5):299-314 (May 1960).

ALGOL 60 Modified - "A Supplement to the ALGOL 60 Revised Report", R.M.
DeMorgan et al, Computer J 19(4):364 and SIGPLAN Notices 12(1) 1977.  
Erratum in Computer J 21(3):282 (Aug 1978) applies to both.

ALGOL 60 Revised - "Revised Report on the Algorithmic Language ALGOL 60",
Peter Naur ed, CACM 6(1):1-17 (Jan 1963).

ALGOL 68 - The communication and efficient execution of algorithms. 
Adriaan van Wijngaarden et al.  By contrast with ALGOL 60, ALGOL 68 was
large and complex, and posed difficulties for both implementors and users.
    Structural equivalence.  Automatic type conversion.  Flexible arrays. 
No abstract data types.
    if-then-elif-fi, for-from-by-to-while-do-od, integer case statement
with 'out' clause, skip statement, generalized loops, goto.
    Blocks, procedures and user-defined operators.  Procedure parameters. 
No separate compilation.  Concurrent execution (cobegin/coend) and
semaphores.  Generators heap and loc for dynamic allocation.

ALGOL 68 Revised - "Revised Report on the Algorithmic Language ALGOL 68,"
A. Van Wijngaarden et al, Acta Informatica 5:1-236 (1975), also Springer
1976, and SIGPLAN Notices 12(5):1-70 (May 1977).

ALGOL 68C - Variant of ALGOL 68 developed at Cambridge U Computing Lab in
the 70's.  Used to implementation language for the CHAOS OS for the CAP
capability computer.

ALGOL 68RS - An extension of ALGOL 68 which supports function closures. 
Royal Signals Research Establishment, Malvern UK.

ALGOL 68S - ALGOL 68 Subset.  "A Sublanguage of ALGOL 68", P.G. Hibbard,
SIGPLAN Notices 12(5) (May 1977).  Shareware compiler from Charles Lindsey
<chl@cs.man.ac.uk>, Version 2.3 for Sun3's under OS4.x (or potentially
other machines supported by the Amsterdam Compiler Kit).

ALGOL C - Clive Feather, Cambridge U, ca. 1981.  Variant of ALGOL 60; added
structures and exception handling.  Designed for beginning students.

ALGOL W - Derivative of ALGOL 60.  "A Contribution to the Development of
Algol", N. Wirth, CACM 9(6):413-431 (June 1966).

ALGOL X - Generic term for the successor to ALGOL 60.  The three designs
proposed were by Wirth, Seegmuller and van Wijngaarden.  Sammet 1969,
p.194.

ALGY - Early language for symbolic math.  Sammet 1969, p.520.

ALJABR - An implementation of MACSYMA for the Mac.  Fort Pond Research.
info: aljabr@fpr.com

ALLOY - Combines functional, object-oriented and logic programming ideas,
suitable for massively parallel systems.  "The Design and Implementation of
ALLOY, a Parallel Higher Level Programming Language", Thanasis Mitsolides
<mitsolid@cs2.nyu.edu>, PhD Thesis NYU 1990.  Version: ALLOY 2.0
ftp: cs.nyu.edu:pub/local/alloy.

ALM - Assembly Language for Multics.  Language on the GE645.  The hardest
portions of the Multics kernel were written in ALM.

ALP - List-processing extension of Mercury Autocode.  "ALP, An Autocode
List-Processing Language", D.C. Cooper et al, Computer J 5:28-31 (1962).

ALPAK - Subroutine package used by ALTRAN.  "The ALPAK System for
Nonnumerical Algebra on a Digital Computer", W.S. Brown, Bell Sys Tech J
42:2081 (1963).  Sammet 1969, p.502.

Alphard - Pascal-like.  Introduced the notion of forms.  "Abstraction and
Verification in Alphard: Defining and Specifying Iteration and Generators",
Mary Shaw, CACM 20(8):553-563 (Aug 1977).

ALPS - 

  1. Richard V. Andree, U Oklahoma.  Early interpreted algebraic language
for Bendix G15, said to have preceded and influenced development of BASIC.

  2. Parallel logic language.  "Synchronization and Scheduling in ALPS
Objects", P. Vishnubhotia, Proc 8th Intl Conf Distrib Com Sys, IEEE 1988,
pp.256-264.

ALTAC - An extended FORTRAN II for Philco 2000, built on TAC.  Sammet 1969,
p.146.

ALTRAN - W.S. Brown, Bell Labs, ca. 1968.  A FORTRAN extension for rational
algebra.  "The ALTRAN System for Rational Function Manipulation - A
Survey", A.D. Hall, CACM 14(8):517-521 (Aug 1971).

Amber -

  1. Adds CSP-like concurrency to ML.  Similar to Galileo.  Concurrency,
multiple inheritance, persistence.  Programs must be written in two type
faces, roman and italics!  Both static and dynamic types.  "Amber", L.
Cardelli, TR Bell Labs 1984.  Implementation for Mac.

  2. U Washington, late 80's.  An object-oriented distributed language
based on a subset of C++.

AMBIT - Algebraic Manipulation by Identity Translation (also claimed:
"Acronym May Be Ignored Totally").  C. Christensen, Massachusetts Computer
Assocs, 1964.  An early pattern-matching language aimed at algebraic
manipulation.  Sammet 1969, pp.454-457.

AMBIT/G - (G for graphs).  "An Example of the Manipulation of Directed
Graphs in the AMBIT/G Programming Language", C. Christensen, in Interactive
Systems for Experimental Applied Mathematics, M. Klerer et al, eds,
Academic Press 1968, pp.423-435.

AMBIT/L - (L for lists).  List handling, allows pattern matching rules
based on two-dimensional diagrams.  "An Introduction to AMBIT/L, A
Diagrammatic Language for List Processing", Carlos Christensen, Proc 2nd
ACM Symp Symb and Alg Manip (Mar 1971).

AMBIT/S - (S for strings). 

AMBUSH - Language for linear programming problems in a materials-
processing/transportation network.  "AMBUSH - An Advanced Model Builder for
Linear Programming", T.R. White et al, National Petroleum Refiners Assoc
Comp Conf (Nov 1971).

AML - IBM, 1980's.  High-level language for industrial robots.  "AML: A
Manufacturing Language", R.H. Taylor et al, Inst J Robot Res 1(3):19-43.

AML/E - AML Entry.  Simple version of AML, implemented on PC, with graphic
display of the robot position.

AMP - Algebraic Manipulation Package.  Symbolic math, written in Modula-2,
seen on CompuServe.

AMPL - "AMPL: Design, Implementation and Evaluation of a Multiprocessing
Language", R. Dannenberg, CMU 1981.  "Loglan Implementation of the AMPL
Message Passing System", J. Milewski SIGPLAN Notices 19(9):21-29 (Sept
1984).

AMPPL-II - Associative Memory Parallel Processing Language.  Early 70's.

AMTRAN - Automatic Mathematical TRANslation.  NASA Huntsville, 1966.  For
IBM 1620, based on Culler-Fried System, requires special terminal. 
"AMTRAN: An Interactive Computing System", J. Reinfelds, Proc FJCC 37:537-
542, AFIPS (Fall 1970).

ANCP - Early system on Datatron 200 series.  Listed in CACM 2(5):16 (May
1959).

ANDF - Architecture Neutral Distribution Format.  OSF's request for a
universal intermediate language, allowing software to be developed and
distributed in a single version, then installed on a variety of hardware. 
"Architecture Neutral Distribution Format: A White Paper", Open Software
Foundation, Nov 1990.  (See UNCOL).

Andorra-I - The OR parallelism of Aurora plus the AND parallelism of
Parlog.  "Andorra-I: A Parallel Prolog System that Transparently Exploits
both And- and Or-Parallelism", V.S Costa et al, SIGPLAN Notices 26(7):83-93
(July 1991).

Andorra-Prolog - "Andorra-Prolog: An Integration of Prolog and Committed
Choice Languages", S. Haridi et al, Intl Conf Fifth Gen Comp Sys 1988, ICOT
1988.

Animus - "Constraint-Based Animation: The Implementation of Temporal
Constraints in the Animus System", R. Duisberg, PhD Thesis U Washington
1986.

Anna - ANNotated Ada.  ca. 1980.  Adds semantic assertions in the form of
Ada comments.  "ANNA - A Language for Annotating Ada Programs", David
Luckham et al, Springer 1987.
ftp: anna.stanford.edu

ANSI C - Revision of C, adding function prototypes, structure passing and
assignment, and a standard set of library functions.  ANSI X3.159-1989.

ANSI C++ - X3J16 committee.  (They're workin' on it.)

ANSI FORTH - Soon-to-be-adopted standard.

APAL - Array of Processor Assembly Language.  For the DAP parallel machine.

APAREL - A PArse REquest Language.  PL/I extension to provide BNF parsing
routines, for IBM 360.  "APAREL: A Parse Request Language", R.W. Balzer et
al, CACM 12(11) (Nov 1969).

APDL - Algorithmic Processor Description Language.  ALGOL-60-like language
for describing computer design, for CDC G-21.  "The Description,
Simulation, and Automatic Implementation of Digital Computer Processors",
J.A. Darringer, Ph.D Thesis EE Dept, CMU May 1969.

APL - A Programming Language.  Ken Iverson Harvard U 1957-1960.  Designed
originally as a notation for the concise expression of mathematical
algorithms.  Went unnamed and unimplemented for many years.  Finally a
subset APL\360 was implemented in 1964.  APL is an interactive
array-oriented language with many innovative features, written using a non-
standard character set.  It is dynamically typed with dynamic scope.  All
operations are either dyadic infix or monadic prefix, and all expressions
are evaluated from right to left.  The only control structure is branch. 
APL introduced several functional forms but is not purely functional.  "A
Programming Language", Kenneth E. Iverson, Wiley, 1962.  Versions: APL\360,
APL SV, VS APL, Sharp APL, Sharp APL/PC, APL*PLUS, APL*PLUS/PC, APL*PLUS/PC
II, MCM APL, Honeyapple, and DEC APL.
(See Iverson's Language).

APL2 - IBM.  An APL extension with nested arrays.  "APL2 Programming:
Language Reference", IBM Aug 1984.  Order No. SH20-9227-0.

APLGOL - H-P?  An APL with ALGOL-like control structure.

APPLE - Revision of APL for the Illiac IV.

Applesoft BASIC - Version of BASIC on Apple computers.

APPLOG - Unifies logic and functional programming.  "The APPLOG Language",
S. Cohen in Logic Programming, deGroot et al eds, P-H 1986, pp.39-276.

APT - Automatically Programmed Tools.  For numerically controlled machine
tools.  "APT Part Programming", McGraw-Hill.  Versions: APT II (IBM 704,
1958), APT III (IBM 7090, 1961).  Sammet 1969, p.605.

APX III - Early system on Datatron 200 series.  Listed in CACM 2(5):16 (May
1959).

AQL - Picture query language, extension of APL.  "AQL: A Relational
Database Management System and Its Geographical Applications", F. Antonacci
et al, in Database Techniques for Pictorial Applications, A. Blaser ed,
pp.569-599.

Arctic - Real-time functional language, used for music synthesis.  "Arctic:
A Functional Language for Real-Time Control", R.B. Dannenberg, Conf Record
1984 ACM Symp on LISP and Functional Prog, ACM.

ARES - Pictorial query language.  "A Query Manipulation System for Image
Data Retrieval", T. Ichikawa et al, Proc IEEE Workshop Picture Data
Description and Management, Aug 1980, pp.61-67.

Ariel - Array-oriented language for CDC 6400.  "Ariel Reference Manual", P.
Devel, TR 22, CC UC Berkeley, Apr 1968.

Argus - LCS, MIT.  A successor to CLU.  Supports distributed programming
through guardians (like monitors, but can be dynamically created) and
atomic actions (indivisible activity).  cobegin/coend.  "Argus Reference
Manual", B. Liskov et al., TR-400, MIT/LCS, 1987.  "Guardians and Actions:
Linguistic Support for Robust, Distributed Programs", B. Liskov
<liskov@lcs.mit.edu> et al, TOPLAS 5(3):381-404 (1983).

Ariel - An array-oriented language.  "A New Survey of the Ariel Programming
Language", P. Deuel, TR 4, Ariel Consortium, UC Berkeley (June 1972).

ARITH-MATIC - Alternate name for A-3.

ART - Real-time functional language, timestamps each data value when it was
created.  "Applicative Real-Time Programming", M. Broy, PROC IFIP 1983, N-
H.

ARTSPEAK - Early simple language for plotter graphics.  "The Art of
Programming, ARTSPEAK", Henry Mullish, Courant Inst (Nov 1974).

ASF - An algebraic specification language.  "Algebraic Specification", J.A.
Bergstra et al, A-W 1989.

ASHMEDAI - Symbolic math package.  Never marketed.  Allegedly had an
influence on SMP.

ASIS - Ada Semanic Interface Specification.  An intermediate representation
for Ada.  (See Diana.)
info: sblake@telesoft.com

ASL - Algebraic Specification Language.  "Structured Algebraic
Specifications: A Kernel Language", M. Wirsing, Theor Comput Sci 42,
pp.123-249, Elsevier 1986.

ASM - Assembly language on CP/M machines (and a lot of others).

ASN-1 - Abstract Syntax Notation.  Data description language used by the
Natl Center for Biotechnology Information.

Newsgroups: comp.lang.misc,comp.theory,comp.lang.prolog,comp.lang.functional,comp.ai