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: 13 October 2001 / scott@cs.rochester.edu