PLP Appendix A
Programming Languages Mentioned
Copyright (c) 2000, Morgan Kaufmann Publishers
This appendix provides brief descriptions, bibliographic references, and
(in many cases) URLs for on-line information concerning each of the
principal programming languages men- tioned in this book. The URLs are
accurate as of early 1999, though they are subject to change as people
move files around. A similar but longer appendix may be found in the
text by Finkel [Fin96, pp. 423 ff]. Some additional URLs can be found
in the bibliographic references.
For many languages XXX, there exists an Internet newsgroup
comp.lang.XXX. Many of these newsgroups host frequently-asked-question
(FAQ) lists. Bill Kinnersley maintains an extremely useful index of
on-line materials for hundreds of programming languages at
http://cuiwww.unige.ch/langlist.
Other useful resources include the Yahoo language sub-index
(http://www.yahoo.com/Computers_and_Internet/Programming_Languages/),
the WWW Virtual Library page on computer languages
(http://src.doc.ic.ac.uk/bySubject/Computing/Languages.html),
and the HyperNews languages list
(http://www.hypernews.org/HyperNews/get/computing/lang-list.html).
Figure A.1
shows the genealogy of some of the more influential or widely
used programming languages. The date for each language indicates the
approximate time at which its features became widely known. Arrows
indicate principal influences on design. Many influences, of course,
cannot be shown in a single figure.
- Ada
- Originally intended to be the standard language for all software
commissioned by the US Department of Defense [Ame83]. Prototypes
designed by teams at several sites; final '83 language developed by a
team at Honeywell's Systems and Research Center in Minneapolis and Alsys
Corp. in France, led by Jean Ichbiah. A very large language, descended
largely from Pascal.
Design rationale articulated in a remarkably clear
companion document [IBFW91]. Ada 95 [Int95a] is a revision developed
under government contract by a team at Intermetrics, Inc. It fixes
several subtle problems in the earlier language, and adds objects,
shared-memory synchronization, and several other features. Freely
available implementation distributed by Ada Core Technologies
(http://www.gnat.com)
under terms of the Free Software Foundation's GNU public license.
- Algol 60
- The original block-structured language. The original definition
[NBB+63] by Naur et al. is considered a landmark of clarity and
conciseness. It includes the original use of Backus-Naur Form
(BNF).
- Algol 68
- A large and relatively complex successor to
Algol 60, designed by a
committee led by A. van Wijngaarden. Includes (among other things)
structures and unions, expression-based syntax, reference parameters, a
reference model of variables, and concurrency. The official definition
[vMP+75] uses unconventional terminology and is very difficult to
read; other sources [Pag76, Lv77] are more accessible.
- Algol W
- A smaller, simpler alternative to Algol 68,
proposed by Niklaus Wirth and C. A. R. Hoare
[WH66, Sit72].
The precursor to Pascal. Introduced the
case
statement.
- APL
- Designed by Kenneth Iverson in the late 1950's and early 1960's,
primarily for the manipulation of numeric arrays. Functional.
Extremely concise. Powerful set of operators. Employs an extended
character set. Intended for interactive use. Original syntax [Ive62]
was non-linear; implementations generally use a revised syntax due to a
team at IBM [IBM87]. Extensive on-line resources available at
http://www.acm.org/sigapl.
- Basic
- Simple imperative language, originally intended for interactive
use. Original version developed by John Kemeny and Thomas Kurtz of
Dartmouth College in the early 1960's. Dozens of dialects exist.
Microsoft's Visual Basic [Mic91], which bears little resemblance to the
original, is the most widely used today. Minimal subset defined by ANSI
standard [Ame78b].
- C
- One of the most successful imperative languages. Originally
defined by Brian Kernighan and Dennis Ritchie of Bell Labs as part of
the development of Unix [KR78]. Concise syntax. Unusual declaration
syntax. Intended for systems programming. Weak type checking. No
dynamic semantic checks. Standardized by ANSI/ISO in 1990 [Ame90].
Extensions for international character sets adopted in 1994. More
extensive changes under consideration by an ISO working group as of this
writing [Int98a]. Freely available implementation (gcc) distributed for
many platforms by the Free Software Foundation
(http://www.fsf.org/software/gcc/).
- C++
- The most successful of several object-oriented successors to
C.
Designed by Bjarne Stroustrup of Bell Labs. Includes (among other
things) generalized reference types, both static and dynamic method
binding, extensive facilities for overloading and coercion, and multiple
inheritance. No automatic garbage collection. Useful references
include Stroustrup's text [Str97] and the reference manual of Ellis and
Stroustrup [ES90]. Recently standardized by the ISO [Int98b]. Freely
available implementation included in the gcc distribution
(see C).
- Cedar
- See Mesa and Cedar.
- CLOS
- The Common Lisp Object System [Kee89; Ste90, chapter 28]. A set
of object-oriented extensions to Common Lisp, now incorporated into the
ANSI standard language (see Common Lisp).
The leading notation for
object-oriented functional programming.
- Clu
- Developed by Barbara Liskov and associates at MIT in the late
1970's [LG86]. Designed to provide an unusually powerful set of
features for data abstraction [LSAS77]. Also includes iterators and
exception handling. Freely available implementations for most Unix
platforms available at
ftp://ftp.lcs.mit.edu/pub/pclu.
- Cobol
- Originally developed by the US Department of Defense in the late
1950's and early 1960's by a team led by Grace Murray Hopper [Uni60].
Long the most widely used programming language in the world.
Standardized by ANSI in 1968; revised in 1974 and 1985 [Ame85].
Intended principally for business data processing. Introduced the
concept of structures. Elaborate I/O facilities.
- Common Lisp
- The standard modern Lisp (see also Lisp).
A large language.
Includes (among other things) static scoping, an extensive type system,
exception handling, and object-oriented features
(see CLOS). For years
the standard reference was the book by Guy Steele, Jr. [Ste90]. More
recently the language has been standardized by ANSI [Ame96]. An
abridged hyper-text version of the standard is available on-line at
http://www.xanalys.com/software_tools/reference/HyperSpec/.
- CSP
- See Occam.
- Eiffel
- An object-oriented language developed by Bertrand Meyer and
associates at the Societe des Outils du Logiciela Paris [Mey92].
Includes (among other things) multiple inheritance, automatic garbage
collection, and powerful mechanisms for re-naming of data members and
methods in derived classes. Extensive on-line resources available at
http://www.eiffel.com.
- Euclid
- Imperative language developed by Butler Lampson and associates at
the Xerox Palo Alto Research Center in the mid 1970's [LHL+77].
Designed to eliminate many of the sources of common programming errors
in Pascal,
and to facilitate formal verification of programs. Has
closed scopes and module types.
- Fortran
- The original high-level imperative language. Developed in the mid
1950's by John Backus and associates at IBM. The most important
versions are Fortran I, Fortran II, Fortran IV, Fortran 77, and Fortran
90. The latter two are documented in a pair of ANSI standards [Ame78a,
Ame92]. Fortran 90 [MR96] (updated in 1995) is a major revision to the
language, adding (among other things) recursion, pointers, new control
constructs, and a wealth of array operations. As of 1999, Fortran 77 is
still more widely used. Freely available implementation (g77)
distributed by the Free Software Foundation
(http://www.fsf.org/software/).
- Haskell
- The leading purely functional language. Descended from
Miranda.
Designed by a committee of researchers beginning in 1987. Includes
curried functions, higher-order functions, non-strict semantics, static
polymorphic typing, pattern matching, list comprehensions, modules,
monadic I/O, and layout (indentation)-based syntactic grouping. Haskell
98 [PHA+99] is the most recent as of this writing;
design of Haskell 2 is underway. On-line resources available at
http://haskell.org/).
- Icon
- The successor to Snobol.
Developed by Ralph Griswold (Snobol's
principal designer) at the University of Arizona [GG97].
Adopts more conventional control-flow constructs, but with powerful
iteration and
search facilities based on pattern-matching and backtracking.
Implementations, documentation, and other resources available at
http://www.cs.arizona.edu/icon/.
- Java
- Object-oriented language based largely on a subset of
C++.
Developed by James Gosling and associates at Sun Microsystems in the
early 1990's [AG98, GJS96]. Intended for the construction of highly
portable, architecture-neutral programs. Defined in conjunction with an
intermediate byte code format intended for execution on a Java virtual
machine [LY97]. Includes (among other things) a reference model of
(class-typed) variables, mix-in inheritance, threads, and extensive
pre-defined libraries for graphics, communication, etc. Heavily used
for transmission of program fragments (applets ) over the Internet.
Implementations, documentation, news, advertising, and numerous other
resources available at
http://www.sun.com/java.
- Linda
- A set of language extensions intended to add concurrency to
conventional programming languages. Developed by David Gelernter for
his Ph.D. research at SUNY Stony Brook in the early 1980's and later
refined by Gelernter and his student, Nicholas Carriero, at Yale
University. Based on the notion of a distributed, associative tuple
space. On-line information at
http://www.cs.yale.edu/Linda/linda.html.
Commercial implementations available from
http://www.lindaspaces.com/products/linda.html.
- Lisp
- The original functional language [McC60]. Developed by John
McCarthy in the late 1950's as a realization of Church's lambda
calculus. Many dialects exist. The two most common today are
Common Lisp and Scheme
(see separate entries). Historically important dialects
include Lisp 1.5 [MAE+65], MacLisp [Moo78], and Interlisp [TM81].
- Mesa and Cedar
- Mesa [LR80] is a successor to
Euclid developed in the 1970's at
Xerox's Palo Alto Research Center by a team led by Butler Lampson.
Includes monitor-based concurrency.
Along with Interlisp and Smalltalk,
one of three companion projects that pioneered the use of personal
workstations, with bitmapped displays, mice, etc. Cedar [SZBH86] is a
successor to Mesa with (among other things) complete type safety,
exceptions, and automatic garbage collection.
- Miranda
- Purely functional language designed by David Turner in the mid
1980's [Tur86]. Resembles ML
in several respects; has type inference
and automatic currying. Unlike ML, provides list comprehensions
(section 7.8), and uses lazy evaluation for all arguments. Uses
indentation and line breaks for syntactic grouping. Commercial
implementations available from Research Software Ltd. of Canterbury,
England.
- ML
- Functional language with “Pascal-like”
syntax. Originally designed
in the mid to late 1970's by Robin Milner and associates at the
University of Edinburgh as the meta-language (hence the name) for a
program verification system. Pioneered aggressive compile-time type
inference and polymorphism. Has a few imperative features. Several
dialects exist; the most widely used is Standard ML [MTHM97].
Stansifer's book [Sta92] is an accessible introduction. Standard ML of
New Jersey, a project of Princeton University and Bell Labs, has
produced freely available implementations for many platforms; see
http://cm.bell-labs.com/cm/cs/what/smlnj/.
- Modula and Modula-2
- The immediate successors to Pascal,
developed by Niklaus Wirth.
The original Modula [Wir77]
was an explicitly concurrent monitor-based
language. It is sometimes called Modula (1) to distinguish it from its
successors. The more commercially important Modula-2
[Wir85] was
originally designed with coroutines (section 8.6), but no real
concurrency. Both languages provide mechanisms for module-as-manager
style data abstractions. Modula-2 was standardized by the ISO in 1996
[Int96].
A freely available implementation for x86 Linux (and
moderately priced implementations for several other Unix variants) is
available from the University of Karlsruhe, Germany at
ftp://i44ftp.info.uni-karlsruhe.de/pub/mocka.
- Modula-3
- A major extension to Modula-2
developed by Luca Cardelli, Jim
Donahue, Mick Jordan, Bill Kalsow, and Greg Nelson at the Digital
Systems Research Center and the Olivetti Research Center in the late
1980's [Har92].
Intended to provide a level of support for large,
reliable, and maintainable systems comparable to that of
Ada, but in a
simpler and more elegant form. Extensive on-line resources, including
pointers to both free and commercial implementations, available at
http://www.research.compaq.com/src/modula-3/html/.
- Oberon
- A deliberately minimal language designed by Niklaus Wirth
[Wir88b, RW92].
Essentially a subset of Modula-2
[Wir88a],
augmented with a mechanism for type extension (section 9.2.3)
[Wir88c]. Implementations,
documentation, and other resources available at
http://www.oberon.ethz.ch/.
- Occam
- A concurrent language [JG89] based on CSP
[Hoa78], Hoare's notation
for message-based communication using guarded commands and
synchronization send. The language of choice for systems built from
INMOS Corporation's transputer processors, widely used in Europe. Uses
indentation and line breaks for syntactic grouping. Extensive on-line
resources, including pointers to several free implementations, available at
http://wotug.ukc.ac.uk/parallel/occam/index.html
- Pascal
- Designed by Niklaus Wirth in the late 1960's
[Wir71], largely in
reaction to Algol 68,
which was widely perceived as bloated. Heavily
used in the 1970's and 80's, particularly for teaching. Introduced
subrange and enumeration types. Unified structures and unions. For
many years the standard reference was Wirth's book with Kathleen Jensen
[JW91]; more recently, the language has been standardized by the ISO and
ANSI [Int90]. Freely available implementation distributed by the Free
Software Foundation
(http://agnes.dida.physik.uni-essen.de/~gnu-pascal).
- Perl
- A “scripting” language, designed primarily to automate
operations on text files [WS91]. Borrows features from
C, sed and awk
[AKW78] (two other scripting languages), and various Unix shell (command
interpreter) languages. Extensive on-line resources available at
http://www.perl.com.
- PL/I
- A large, general-purpose language designed in the mid 1960's as a
successor to Fortran, Cobol,
and Algol
[Bee70]. Never managed to
displace its predecessors; kept alive largely through IBM corporate
influence.
- Postscript
- A stack-based language for the description of graphics and print
operations [Ado86, Ado90]. Developed and marketed by Adobe Systems,
Inc. Based in part on the Forth programming language [Bro87].
Generated by many word processors and drawing programs. Most
professional-quality printers contain a Postscript interpreter.
- Prolog
- The most widely used logic programming language. Developed in the
early 1970's by Alain Colmeraurer and Philippe Roussel of the University
of Aix-Marseille in France and Robert Kowalski and associates at the
University of Edinburgh in Scotland. Many dialects exist. Partially
standardized in 1995 [Int95b]. Numerous implementations, both free and
commercial, are available. The AI group at CMU maintains a large Prolog
repository at
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/prolog/0.html
; additional information can be found at
http://www.afm.sbu.ac.uk/logic-prog/.
- Scheme
- A small, elegant dialect of Lisp (see also Lisp)
developed in the mid 1970's by Guy Steele and Gerald Sussman
[KCR98]. Standardized by
the IEEE and ANSI [Ins91].
Has static scoping and true first-class
functions. Widely used for teaching. The book by Abelson and Sussman
[AS96], used for introductory programming classes at MIT and elsewhere,
is a classic guide to fundamental programming concepts, and to
functional programming in particular. The AI group at CMU maintains a
large Scheme repository at
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/0.html. Another repository can be found at
http://www.cs.indiana.edu/scheme-repository/.
- Simula
- Designed at the Norwegian Computing Centre, Oslo, in the mid 1960's
by Ole-Johan Dahl, Bjorn Myhrhaug, and Kristen Nygaard
[BDMN73, ND78].
Extends Algol 60
with classes and coroutines. The name of the language
reflects its suitability for discrete-event simulation (section 8.6.4).
Free Simula-to-C translator available at
ftp://ftp.inria.fr/lang/simula/.
- Sisal
- A functional language with “imperative-style” syntax.
Developed by James McGraw and associates at Lawrence Livermore National
Laboratory in the early to mid 1980's [MSA+85,
FCO90, Can92]. Intended
primarily for high-performance scientific computing, with automatic
parallelization. A descendant of the dataflow language Val [McG82].
Implementations, documentation, and other resources available at
http://www.llnl.gov/sisal/.
- Smalltalk
- The quintessential object-oriented language. Developed by Alan
Kay, Adele Goldberg, Dan Ingalls, and associates at the Xerox Palo Alto
Research Center throughout the 1970's, culminating in the Smalltalk-80
language [GR89].
Anthropomorphic programming model based on
“messages” between active objects. The Smalltalk group at
the University of Illinois maintains a variety of resources at
http://st-www.cs.uiuc.edu/.
Commercial Smalltalk implementations are available
from several sources. Little Smalltalk, a line-oriented Smalltalk subset
developed by Timothy Budd, is available for many platforms free of charge at
ftp://ftp.cs.orst.edu/pub/budd/little/ReadMe.html.
- Snobol
- Developed by Ralph Griswold and associates at Bell Labs in the
1960's [GPP71]. The principal version is SNOBOL4.
Intended primarily
for processing character strings. Includes an extremely rich set of
string-manipulating primitives and a novel control-flow mechanism based
on the notions of success and failure. Implementations, documentation,
and other resources available at
ftp://ftp.cs.arizona.edu/snobol/.
- SR
- Concurrent programming language developed by Greg Andrews and
colleagues at the University of Arizona in the 1980's [AO93].
Integrates not only sequential and concurrent programming, but also
shared memory, semaphores, message passing, remote procedures, and
rendezvous into a single conceptual framework and simple syntax.
Implementations, documentation, and other resources available at
ftp://ftp.cs.arizona.edu/sr/.
- Turing
- Derived from
Euclid by Richard Holt and associates at the
University of Toronto in the early 1980's [HMRC88]. Originally intended
as a pedagogical language, but can be used for a wide range of
applications. Turing Plus and Object-Oriented Turing are more recent
descendants, also developed by Holt's group. Documentation and
implementations available at
http://www.holtsoft.com/turing/home.html.
Bibliography
-
[Ado86]
- Adobe Systems, Inc.
PostScript Language Tutorial and Cookbook.
Addison-Wesley, Reading, MA, 1986.
ISBN 0-201-10179-3.
-
[Ado90]
- Adobe Systems, Inc.
PostScript Language Reference Manual.
Addison-Wesley, Reading, MA, second edition, 1990.
ISBN 0-201-18127-4.
-
[AG98]
- Ken Arnold and James Gosling.
The Java Programming Language.
The Java Series.
Addison-Wesley, Reading, MA, second edition, 1998.
ISBN 0-201-31006-6.
-
[AKW78]
- Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger.
AWK: A Pattern Scanning and Processing Language.
Bell Telephone Labs, Murray Hill, NJ, second edition, September 1978.
-
[Ame78a]
- American National Standards Institute, New York, NY.
Programming Language FORTRAN, 1978.
ANSI X3.9-1978.
-
[Ame78b]
- American National Standards Institute, New York, NY.
Programming Language Minimal BASIC, 1978.
ANSI X3.60-1978.
-
[Ame83]
- American National Standards Institute, New York, NY.
Reference Manual for the Ada Programming Language, January 1983.
ANSI/MIL 1815 A-1983.
-
[Ame85]
- American National Standards Institute, New York, NY.
Programming Language COBOL, 1985.
ANSI X3.23-1985.
Supercedes earlier ANSI standards from 1968 and 1974.
-
[Ame90]
- American National Standards Institute, New York, NY.
Programming Language C, 1990.
ANSI/ISO 9899-1990 (revision and redesignation of ANSI X3.159-1989).
-
[Ame92]
- American National Standards Institute, New York, NY.
Programming Language, FORTRAN--Extended, 1992.
ANSI X3.198-1992.
Also ISO 1539-1991 (E).
-
[Ame96]
- American National Standards Institute, New York, NY.
Programming Language--Common Lisp, 1996.
ANSI X3.226:1994.
-
[AO93]
- Gregory R. Andrews and Ronald A. Olsson.
The SR Programming Language: Concurrency in Practice.
Benjamin/Cummings, Redwood City, CA, 1993.
ISBN 0-8053-0088-0.
-
[AS96]
- Harold Abelson and Gerald Jay Sussman.
Structure and Interpretation of Computer Programs.
MIT Press, Cambridge, MA, second edition, 1996.
With Julie Sussman.
ISBN 0-262-01153-0.
Supplementary resources available at
http://mitpress.mit.edu/sicp/.
-
[BDMN73]
- Graham M. Birtwistle, Ole-Johan Dahl, Bjorn Myhrhaug, and
Kristen Nygaard.
SIMULA Begin.
Auerback Publishers, Inc., Philadelphia, PA, 1973.
ISBN 91-44-06211-7.
-
[Bee70]
- David Beech.
A structural view of PL/I.
ACM Computing Surveys, 2(1):33-64, March 1970.
-
[Bro87]
- Leo Brodie.
Starting FORTH: An Introduction to the FORTH
Language and Operating System for Beginners and Professionals.
Prentice-Hall Software Series.
Prentice-Hall, Englewood Cliffs, NJ, second edition, 1987.
ISBN 0-13-843087-X.
-
[Can92]
- David Cann.
Retire Fortran? A debate rekindled.
Communications of the ACM, 35(8):81-89, August 1992.
-
[ES90]
- Margaret A. Ellis and Bjarne Stroustrup.
The Annotated C++ Reference Manual.
Addison-Wesley, Reading, MA, 1990.
ISBN 0-201-51459-1.
-
[FCO90]
- John T. Feo, David Cann, and Rod R. Oldehoeft.
A report on the Sisal language project.
Journal of Parallel and Distributed Computing,
10(4):349-365, December 1990.
-
[Fin96]
- Raphael A. Finkel.
Advanced Programming Language Design.
Addison-Wesley, Menlo Park, CA, 1996.
ISBN 0-8053-1191-2.
-
[GG97]
- Ralph E. Griswold and Madge T. Griswold.
The Icon Programming Language.
Peer-to-Peer Communications, San Jose, CA, third edition, 1997.
ISBN 1-573-98001-3.
Previous editions published by Prentice-Hall.
-
[GJS96]
- James Gosling, Bill Joy, and Guy L. Steele Jr.
The Java Language Specification.
The Java Series.
Addison-Wesley, Reading, MA, edition 1.0, 1996.
ISBN 0-201-63451-1.
Available in hypertext at
http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html.
-
[GPP71]
- Ralph E. Griswold, J. F. Poage, and I. P. Polonsky.
The Snobol4 Programming Language.
Prentice-Hall, Englewood Cliffs, NJ, second edition, 1971.
ISBN 0-13-815373-6.
-
[GR89]
- Adele Goldberg and David Robson.
Smalltalk-80: The Language.
Addison-Wesley Series in Computer Science.
Addison-Wesley, Reading, MA, 1989.
ISBN 0-201-13688-0.
-
[Har92]
- Samuel P. Harbison.
Modula-3.
Prentice-Hall, Englewood Cliffs, NJ, 1992.
ISBN 0-13-596404-0.
-
[HMRC88]
- Richard C. Holt, Philip A. Matthews, J. Alan Rosselet, and
James R. Cordy.
The Turing Programming Language: Design and Definition.
Prentice-Hall, Englewood Cliffs, NJ, 1988.
ISBN 0-13-933136-0.
-
[Hoa78]
- Charles Antony Richard Hoare.
Communicating Sequential Processes.
Communications of the ACM, 21(8):666-677, August 1978.
-
[IBFW91]
- Jean Ichbiah, John G. P. Barnes, Robert J. Firth, and Mike
Woodger.
Rationale for the Design of the Ada Programming Language.
Ada Companion Series.
Cambridge University Press, Cambridge, England, 1991.
ISBN 0-521-39267-5.
-
[IBM87]
- IBM Corporation.
APL2 Programming: Language Reference, 1987.
SH20-9227.
-
[Ins91]
- Institute of Electrical and Electronics Engineers, New York, NY.
IEEE/ANSI Standard for the Scheme Programming Language, 1991.
IEEE 1178-1990.
-
[Int90]
- International Organization for Standardization, Geneva,
Switzerland.
Information Technology--Programming Languages--Pascal, 1990.
ISO/IEC 7185:1990 (revision and redesignation of ANSI/IEEE 770X).
-
[Int95a]
- International Organization for Standardization, Geneva,
Switzerland.
Information Technology--Programming Languagess--Ada, 1995.
ISO/IEC 8652:1995 (E).
Available in hypertext at
http://www.adahome.com/rm95/.
-
[Int95b]
- International Organization for Standardization, Geneva,
Switzerland.
Information Technology--Programming Languages--Prolog--Part
1: General Core, 1995.
ISO/IEC 13211-1:1995.
-
[Int96]
- International Organization for Standardization, Geneva,
Switzerland.
Information Technology--Programming Languages--Part 1:
Modula-2, Base Language, 1996.
ISO/IEC 10514-1:1996.
-
[Int98a]
- International Organization for Standardization, Geneva,
Switzerland.
Programming Language--C, August 1998.
WG14/N843 Committee Draft revision of ISO 9899-1990.
Available at
http://wwwold.dkuug.dk/jtc1/sc22/open/n2794/.
-
[Int98b]
- International Organization for Standardization, Geneva,
Switzerland.
Programming Languages--C++, 1998.
ISO/IEC 14882:1998.
-
[Ive62]
- Kenneth E. Iverson.
A Programming Language.
John Wiley and Sons, New York, NY, 1962.
-
[JG89]
- Geraint Jones and Michael Goldsmith.
Programming in occam2.
Prentice-Hall International Series in Computer Science.
Prentice-Hall, Englewood Cliffs, NJ, second edition, 1989.
ISBN 0-13-730334-3.
-
[JW91]
- Kathleen Jensen and Niklaus Wirth.
Pascal User Manual and Report: ISO Pascal Standard.
Springer-Verlag, New York, NY, fourth edition, 1991.
Revised by Andrew B. Mickel and James F. Miner.
ISBN 0-387-97649-3.
-
[KCR98]
- Richard Kelsey, William Clinger, and Jonathan Rees, editors.
Revised 5 report on the algorithmic language Scheme.
ACM SIGPLAN Notices, 33(9):26-76, September 1998.
With H. Abelson, N. I. Adams IV, D. H. Bartley, G. Brooks, R. K. Dybvig,
D. P. Friedman, R. Halstead, C. Hanson, C. T. Haynes, E. Kohlbecker,
D. Oxley, K. M. Pitman, G. J. Rozas, G. L. Steele Jr., G. J. Sussman,
and M. Wand.
Available as
ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/standards/r5rs-html.tar.gz.
-
[Kee89]
- Sonya E. Keene.
Object-Oriented Programming in Common Lisp: A Programmer's Guide to
CLOS.
Addison-Wesley, Reading, MA, 1989.
Contributions by Dan Gerson.
ISBN 0-201-17589-4.
-
[KR78]
- Brian W. Kernighan and Dennis M. Ritchie.
The C Programming Language.
Prentice-Hall Software Series.
Prentice-Hall, Englewood Cliffs, NJ, 1978.
ISBN 0-13-110163-3.
-
[LG86]
- Barbara Liskov and John Guttag.
Abstraction and Specification in Program Development.
MIT Electrical Engineering and Computer Science Series.
MIT Press, Cambridge, MA, 1986.
ISBN 0-07-037996-3.
-
[LHL+77]
- Butler W. Lampson, J. J. Horning, R. L. London, J. G. Mitchell,
and G. J. Popek.
Report on the programming language Euclid.
ACM SIGPLAN Notices, 12(2):1-79, February 1977.
-
[LR80]
- Butler W. Lampson and David D. Redell.
Experience with processes and monitors in Mesa.
Communications of the ACM, 23(2):105-117,
February 1980.
-
[LSAS77]
- Barbara Liskov, Alan Snyder, Russel Atkinson, and J. Craig
Schaffert.
Abstraction mechanisms in CLU.
Communications of the ACM, 20(8):564-576, August 1977.
-
[Lv77]
- C. H. Lindsey and S. G. van der Meulen.
Informal Introduction to ALGOL 68.
North-Holland, Amsterdam, The Netherlands, revised edition, 1977.
ISBN 0-720-40504-1.
-
[LY97]
- Tim Lindholm and Frank Yellin.
The Java Virtual Machine Specification.
The Java Series.
Addison-Wesley, Reading, MA, 1997.
ISBN 0-201-63452-X.
-
[MAE+65]
- John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy
P. Hart, and Michael I. Levin.
LISP 1.5 Programmer's Manual.
MIT Press, Cambridge, MA, second edition, 1965.
-
[McC60]
- John McCarthy.
Recursive functions of symbolic expressions and their computation by
machine, Part I.
Communications of the ACM,
3(4):184-195, April 1960.
-
[McG82]
- James R. McGraw.
The VAL language: Description and analysis.
ACM Transactions on Programming Languages and Systems,
4(1):44-82, January 1982.
-
[Mey92]
- Bertrand Meyer.
Eiffel: The Language.
Prentice-Hall Object-Oriented Series.
Prentice-Hall, Englewood Cliffs, NJ, 1992.
ISBN 0-13-247925-7.
-
[Mic91]
- Microsoft Corporation, Redmond, WA.
Microsoft Visual Basic Language Reference, 1991.
Document DB20664-0491.
-
[Moo78]
- David A. Moon.
MacLisp Reference Manual.
MIT Artificial Intelligence Laboratory, 1978.
-
[MR96]
- Michael Metcalf and John Reid.
Fortran 90/95 Explained.
Oxford University Press, London, England, 1996.
ISBN 0-19-851-888-9.
-
[MSA+85]
- James R. McGraw, S. K. Skedzielewski, S. J. Allan, Rod
R. Oldehoeft, J. Glauert, C. Kirkham, W. Noyce, and R. Thomas.
Sisal: Streams and Iteration in a Single Assignment Language:
Reference Manual Version 1.2.
Lawrence Livermore National Laboratory, Livermore,
CA, March 1985.
Manual M-146, Revision 1.
-
[MTHM97]
- Robin Milner, Mads Tofte, Robert Harper, and David MacQueen.
The Definition of Standard ML--Revised.
MIT Press, Cambridge, MA, 1997.
ISBN 0-262-63181-4.
-
[NBB+63]
- Peter Naur (ed.), J. W. Backus, F. L. Bauer, J. Green, C. Katz,
J. McCarthy, A. J. Perlis, H. Rutishauser, K. Samelson, B. Vauquois,
J. H. Wegstein, A. van Wijngaarden, and M. Woodger.
Revised report on the algorithmic language ALGOL 60.
Communications of the ACM,
6(1):1-23, January 1963.
Original version appeared in the May 1960 issue.
-
[ND78]
- Kristen Nygaard and Ole-Johan Dahl.
The development of the Simula languages.
In Richard L. Wexelblat, editor, Proceedings of the
ACM SIGPLAN History of Programming Languages Conference, ACM Monograph
Series, 1981, pages 439-493, Los Angeles, CA, June 1978.
Academic Press, New York, NY.
In ACM SIGPLAN Notices, 13(8), August 1978.
-
[Pag76]
- Frank G. Pagan.
A Practical Guide to Algol 68.
Wiley Series in Computing.
John Wiley and Sons, London, England, 1976.
ISBN 0-471-65746-8.
-
[PHA+99]
- Simon L. Peyton Jones (ed.), John Hughes (ed.), Lennart
Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel,
Kevin Hammond, Ralf Hinze, Paul Hudak, Thomas Johnsson, Mark Jones, John
Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman,
and Philip Wadler.
Haskell 98: A Non-strict, Purely Functional Language,
February 1999.
Available in hypertext at
http://haskell.cs.yale.edu/onlinereport.
-
[RW92]
- Martin Reiser and Niklaus Wirth.
Programming in Oberon--Steps Beyond Pascal and Modula.
Addison-Wesley, Reading, MA, 1992.
ISBN 0-201-54428-8.
-
[Sit72]
- Richard L. Sites.
Algol W reference manual.
Technical Report STAN-CS-71-230, Computer Science Department,
Stanford University,
Stanford, CA, February 1972.
-
[Sta92]
- Ryan D. Stansifer.
ML Primer.
Prentice-Hall, Englewood
Cliffs, NJ, 1992.
ISBN 0-13-561721-9.
-
[Ste90]
- Guy L. Steele Jr.
Common Lisp--The Language.
Digital Press, Bedford, MA, second edition, 1990.
ISBN 1-555-58042-4.
Available in hypertext at several sites, including
http://ringer.cs.utsa.edu/research/AI/cltl/clm/clm.html.
-
[Str97]
- Bjarne Stroustrup.
The C++ Programming Language.
Addison-Wesley, Reading, MA, third edition, 1997.
ISBN 0-201-88954-4.
-
[SZBH86]
- Daniel C. Swinehart, Polle T. Zellweger, Richard J. Beach,
and Robert B. Hagmann.
A structural view of the Cedar programming environment.
ACM Transactions on Programming Languages and Systems,
8(4):419-490, October 1986.
-
[TM81]
- Warren Teitelman and Larry Masinter.
The Interlisp programming environment.
IEEE Computer, 14(4):25-33, April 1981.
-
[Tur86]
- David A. Turner.
An overview of Miranda.
ACM SIGPLAN Notices, 21(12):158-166, December 1986.
-
[Uni60]
- United States Department of Defense.
COBOL, Initial Specifications for a Common Business Oriented Language,
1960.
Revised in 1961 and again in 1962.
-
[vMP+75]
- A. van Wijngaarden, B. J. Mailloux, J. E. L. Peck,
C. H. A. Koster, M. Sintzoff, C. H. Lindsey, L. G. L T. Meertens, and
R. G. Fisker.
Revised report on the algorithmic language ALGOL 68.
Acta Informatica, 5(1-3):1-236, 1975.
Also ACM SIGPLAN Notices,
12(5):1-70, May 1977.
-
[WH66]
- Niklaus Wirth and Charles Antony Richard Hoare.
A contribution to the development of ALGOL.
Communications of the ACM, 9(6):413-431,
June 1966.
-
[Wir71]
- Niklaus Wirth.
The programming language Pascal.
Acta Informatica, 1(1):35-63, 1971.
-
[Wir77]
- Niklaus Wirth.
Modula: A language for modular multiprogramming.
Software--Practice and Experience, 7(1):3-35, January-February 1977.
-
[Wir85]
- Niklaus Wirth.
Programming in Modula-2.
Texts and Monographs in Computer Science.
Springer-Verlag, New York, NY, third, corrected edition, 1985.
ISBN 0-387-15078-1.
-
[Wir88a]
- Niklaus Wirth.
From Modula to Oberon.
Software--Practice and Experience, 18(7):661-670, July 1988.
-
[Wir88b]
- Niklaus Wirth.
The programming language Oberon.
Software--Practice and Experience, 18(7):671-690, July 1988.
-
[Wir88c]
- Niklaus Wirth.
Type extensions.
ACM Transactions on Programming Languages and Systems,
10(2):204-214, April 1988.
Relevant correspondence appears in Volume 13, Number 4.
-
[WS91]
- Larry Wall and Randal L. Schwartz.
Programming Perl.
O'Reilly and Associates, Sebastopol, CA, 1991.
ISBN 0-937-17564-1.
Back to the book home page
Last Change:
29 October 2005 /