Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!caen!kuhub.cc.ukans.edu!hawk!billk Newsgroups: comp.lang.misc Subject: The Language List, Version 1.1 (Part 1 of 5) Message-ID: <1991Apr28.153544.4615@hawk.cs.ukans.edu> From: billk@hawk.cs.ukans.edu (Bill Kinnersley) Date: Sun, 28 Apr 1991 15:35:44 GMT Organization: University of Kansas Computer Science Dept Lines: 746 ---- The Language List Version 1.1 Collected information on over 900 languages, past and present. Last Modified: April 27, 1991 Bill Kinnersley Computer Science Department University of Kansas Lawrence, KS 66045 billk@hawk.cs.ukans.edu First release: March 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 Introduction: This document is intended to become among the longest lists of computer programming language names ever assembled or compiled. (But not interpreted! HHOJ) It is more for fun than to be any sort of scholarly, definitive list. As of this writing, about 50 netters have contributed to it. Their names and e-mail addresses appear at the end. It is my dream that this can become a living document with at least one definitive reference work included for each entry. Most entries should ultimately contain the following information: Name: An explanation of the language name, which, in perhaps 80% of the cases, is some form of acronym or abbreviation. Date of first implementation: When possible, a year in parentheses indicates when a language first appeared. Since the design, implementation, and wide acceptance of a language can take place over a several year period, such dates should be considered approximate. Definitive reference work or publisher: At least one reference work on the language, in theory as definitive or as official as possible, should be included. In the case of a commercial product, the software publisher and city is often listed. Few people who see a language in this file should ever have to ask: "How can I get more information on that language?" "See also:" Related languages or terms that may also be of interest. Some various comments or criticisms: "YOU LEFT OUT LANGUAGE ___!" - If this is the case, e-mail the relevant information to whoever is maintaining this list. (It may not be me by the time you read this.) A citing of at least one published reference to the language will help determine authenticity. "Clutter" - When in doubt, languages are included. To compensate for this "clutter" effect, more widespread languages such as C or FORTRAN should have longer entries. The "Published" Rule - In order to reduce clutter somewhat, a language should be "published" to be included in this list. There is no precise criterion here. To state a rough example, a language devised solely for a PhD thesis would not necessarily be included. However, if material on that language was published in a technical journal or otherwise distributed, or if it formed the basis for additional research, it should be included. In case it is unclear, a language does NOT have to be implemented (actually running on at least one computer) to be included. Many theoretical languages appearing in the ACM SIGPLAN Notices fall into this category. One gray area, however, is Internet/Usenet or RBBS distribution. In general, when in doubt, an entry will be included. (Future builders of this list may be able to include a wider range of academic "theory" languages. I do not have the research resources for this. At minimum the author's name, university or company, and date should be listed.) 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. Languages vs. dialects - Again, when in doubt, a term was included. Thus, languages with many variants or flavors will have many extra entries. This is intended to make the document more useful to beginners, not to make common languages appear more popular or "better." (In defense of this practice, any two implementations of a given language almost invariably have at least a few differences. Some have suggested that if there are various command line arguments, each permutation of command line arguments could also be considered a distinct language! Note also that some names ("ML", "Vulcan") have been used for two or more distinct languages. Languages vs. versions - There has been criticism that there are separate entries for ALGOL 58, ALGOL 60, etc, but not for C++ 1.0, C++ 1.2, C++ 2.0, etc. This was simply an oversight on my part. (I personally feel it is easier to have separate entries for each, however.) Any language that has some sort of ANSI or IEEE standard should include the dates and versions approved. Also, for specific brands such as Turbo Pascal the versions and release dates could be added within that entry. Classification - This document makes no attempt at classification except by name. However, the following broad categories seem to apply: assemblers, general purpose languages, specialized languages, query languages, 4GL's, application sub-languages, specification languages, experimental languages, and theoretical languages. The precise definitions of these categories can be debated elsewhere. Editorial Comments: Warning - as in the many Usenet jargon files, some entries here contain remarks that could be construed as editorial in nature. For instance, if one happened to called Pascal "ALGOL-like," it might manage to offend both some ALGOL and some Pascal users. Also, some historical origin questions are disputed to this day. This document is intended to aid the student or researcher, not to ignite flame wars among old-time hackers. The reader is encouraged to refer to other sources for more definitive discussions of any particular language. When in doubt, "supposedly" or a "(?)" may appear to warn that the material is uncertain. Phrasing like "somewhat" or "roughly" is also used liberally. Brand names - Some entries, such as "Turbo Pascal" have drawn early concern. However, since many packages offer non-standard extensions to the base language, it can be argued that from a BNF grammar point of view, Microsoft C and Turbo C (for example) are two distinct languages. On the other hand, this is not intended to become a catalog of commercial programming products. Material in "[ ]" brackets clearly needs editorial work or research. * * * * * * * 473L Query - English-like query system for Air Force 473L system. Sammet 1969, p.665. 9 PAC - Early report generator, ca. 1961. Sammet 1969, p.314. 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. ABC - Simple interactive language for beginners. Infinite precision arithmetic, multiple workspaces. Indentation is significant. "The ABC Programmer's Manual", Leo Geurts et al, P-H 1989. ftp: hp4nl.nluug.nl UNIX source, MSDOS and Mac executables. list: abc-list@cwi.nl maintained by Steven Pemberton . ABCL/+ - Family of languages from Aki Yonesawa, Tokyo. 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) (Nov 1978) p.56. ACOM - Early system on IBM 705. Listed in CACM 2(5):16 (May 1959). ACT ONE - Specification language. ACTUS - Language for the Illiac IV computer, derived from Glypnir. Descendants include Parallel Pascal, Vector C, and most recently CMU's 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, arguably the world's first computer programmer. Designed by Jean Ichbiah for the U.S. Department of Defense. Ada is a large, complex block-structured language. Aimed primarily at embedded computer applications, Ada 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) repository - wsmr-simtel20.army.mil Ada 9x - Revision of Ada currently under development. ADAM - A DAta Management system. Adaplex - An extension of Ada to incorporate the functional data model for 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. ADES - Early system on IBM 704. Listed in CACM 2(5):16 (May 1959). Version: ADES II. AED - 1. Automated Engineering Design. Systems implementation language with features similar to PL/I. "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. 2. ALGOL Extended for Design. MIT ca. 1965. Mentioned in the "DYNAMO User's Manual". AED-JR - Subset of AED? AESOP - An Evolutionary System for On-line Programming. On-line query system used with light pen. Sammet 1969. AFAC - Early system on IBM 704. Listed in CACM 2(5):16 (May 1959). AIMACO - AIr MAterial Command compiler. Modification of FLOW-MATIC. Supplanted by COBOL. Sammet 1969. ALCOR - Subset of ALGOL. Sammet 1969, p.180. Aldat - Based on extended Algebra. Listed by M.P. Atkinson & J.W. Schmidt in a tutorial in Zurich, 1989. ALEPH - A Language Encouraging Proram Hierarchy. "On the Design of ALEPH", D. Grune, CWI, Netherlands 1986. Alfl - Functional, weakly typed. For the Alfalfa system on the Intel iPSC. "Alfl Reference Manual and Programmer's Guide", P. Hudak, Res Report YALEU/DCS/RR-322, Yale U, Oct 1984. ALGEBRAIC - Early system on 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, SIGPLAN Notices 12(1) 1977, with erratum in Computer J 21(3):282 applicable 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. A. 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 and semaphores. Generators heap and loc for dynamic allocation. ALGOL 68 Revised - "Revised Report on the Algorithmic Language ALGOL 68," Aad Van Wijngaarden et al, Acta Informatica 5:1-236 (1975), also Springer 1976, and SIGPLAN Notices 12(5):1-70 (May 1977). 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, ALGOL Y - General term for several proposed successors to ALGOL 60, Sammet 1969, p.194. ALGY - Early language for formal algebra. Sammet 1969. ALJABR - Symbolic math. Fort Pond Research. ALLOY - "The Design and Implementation of ALLOY, a Parallel Higher Level Programming Language", Thanasis Mitsolides , PhD Thesis NYU 1990. ftp: cs.nyu.edu:pub/local/alloy. ALPAK - Related to ALTRAN? Sammet 1969. Alphard - Pascal-like. "Abstraction and Verification in Alphard: Defining and Specifying Iteration and Generators", M. Shaw, CACM 20(8):553-563 (Aug 1977) ALTAC - An extended FORTRAN II for Philco 2000, built on TAC. Sammet 1969, p.146. ALTRAN - W.S. Brown ca. 1968. An extension of FORTRAN for formal rational- function algebra. "The ALTRAN System for Rational Function Manipulation - A Survey", A.D. Hall, CACM 14(8):517-521 (Aug 1971). Amber - 1. Derived from ML and Galileo. Concurrency, multiple inheritance. Programs must be written in two type faces, roman and italics! Mac implementation. Both static and dynamic types. "Amber", L. Cardelli, TR Bell Labs 1984. 2. An object-oriented distributed programming language based on a subset of C++. U Washington, late 80's. AMBIT - Algebraic Manipulation by Identity Translation. String handling. AMBIT/L - Acronym May Be Ignored Totally. 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) 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). AMP - Symbolic math? AMTRAN - Automatic Mathematical TRANslation. System allowing input of equations in seminatural format. ANCP - Early system on Datatron 200 series. Listed in CACM 2(5):16 (May 1959). Animated Movie - Preparing animated movies. 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 FORTH - Soon-to-be-adopted standard. APL - A Programming Language. Ken Iverson & Adin Falkoff, 1962 for the concise expression of mathematical algorithms. In fact APL programs tend to be too concise. APL is an interacive array-oriented language with many innovative features, and 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. Applesoft BASIC - Version of BASIC on Apple computers. 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). Argus - Distributed successor to CLU, under development. LCS, MIT. 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. ARTSPEAK - Simple language for drawing artistic diagrams on a plotter. "The Art of Programming, ARTSPEAK", Henry Mullish, Courant Inst (Nov 1974). ASHMEDAI - Symbolic manipulation, mentioned as an influence on SMP. ASL - A kernel language for algebraic specifications. "An Introduction to ASL", E. Astesiano et al in Program Specification and Transformation, Elsevier 1987. ASP - Query language? Sammet 1969, p.702. ASPOL - A Simulation Process-Oriented Language. An ALGOL-like language for computer simulation. "Process and Event Control in ASPOL", M.H. MacDougall, Proc Symp on Simulation of Computer Systems, NBS (Aug 1975). ASPEN - Toy language for teaching compiler construction. "ASPEN Language Specifications", T.R. Wilcox SIGPLAN Notices 12(11):70-87 (Nov 1977). ASPIK - Specification language. ASSEMBLY - Early system on IBM 702. Listed in CACM 2(5):16 (May 1959). ASTAP - Advanced STatistical Analysis Program. Analyzing electronic circuits and other networks. "Advanced Statistical Analysis Program (ASTAP) Program Reference Manual", SH-20-1118, IBM, 1973. Astral - Based on Pascal, never implemented. "ASTRAL: A Structured and Unified Approach to Database Design and Manipulation", T. Amble et al, in Proc of the Database Architecure Conf, Venice, June 1979. AT-3 - Original name of MATH-MATIC. Sammet 1969, p.135. ATLAS - Abbreviated Test Language for All Systems. _THE_ mil-spec language for programs to control automatic test equipment. Replaced/upgraded Gaelic and several other test languages. "IEEE Standard ATLAS Test Language", IEEE Std 416-1976. Atlas Autocode - Ferranti Atlas may have been first commercial machine with hardware-paged virtual memory. Aurora - "The Aurora Or-Parallel Prolog System", E. Lusk et al, Intl Conf on 5th Generation Comp Systems. 1988 ICOT, A-W 1988. AUTOCODE - Early system on Ferranti Pegasus. Listed in CACM 2(5):16 (May 1959). AUTOCODER - Assembly languages on IBM 702, IBM 705. Listed in CACM 2(5):16 (May 1959). AUTOCODING - Early system on Ferranti Mercury. Listed in CACM 2(5):16 (May 1959). AUTOGRAF - Describing bar charts. "User's Manual for AUTOGRAF", Cambridge Computer Assoc (Dec 1972). AUTOGRP - AUTOmated GRouPing system. Interactive statistical analysis. An extension of CML. "AUTOGRP: An Interactive Computer System for the Analysis of Health Care Data", R.E. Mills et al, Medical Care 14(7) (Jul 1976). Autolisp - Dialect of LISP used by the Autocad CAD package, Autodesk, Sausalito, CA. AUTOMATH - Eindhoven, Netherlands. "The Mathematical Language AUTOMATH, Its Usage and Some of its Extensions", N.G. deBruijn, in Symp on Automatic Demonstration, LNM v.125, Springer 1970. AUTO-PROMPT - Numerical control language from IBM for 3-D milling. Sammet 1969, p.606. Avalon/C++ - Fault-tolerant distributed systems. AWK - Aho Weinberger Kernigan. Simple yet powerful text processing/macro language. "AWK - A Pattern Scanning and Processing Language," A. Aho, B. Kernigan, P. Weinberger, Bell Labs, Sep 1978. B - Ken Thompson, 1970. Systems language written for UNIX on the PDP-11. Derived from BCPL, and very similar to it except for syntax. B was the predecessor of C. "The Programming Language B", S.C. Johnson & B.W. Kernighan, CS TR 8, Bell Labs (Jan 1973). B-0 - Original name of FLOW-MATIC, Remington Rand. UNIVAC I or II ca. 1958. BABEL - Mentioned in "The Psychology of Computer Programming," Weinberg, 1971 ed, p.241. BACAIC - Boeing Airplane Company Algebraic Interpreter Coding system. Pre-FORTRAN system on the IBM 701, IBM 650. BAL - What most people called IBM 360 assembler. BALGOL - ALGOL on Burroughs 220. Sammet 1969, p.174. BALITAC - Early system on IBM 650. Listed in CACM 2(5):16 (May 1959). BALM - Extensible language with LISP-like features but ALGOL-like syntax. "The Balm Programming Language", Malcolm Harrison, Courant Inst (May 1973). BAP - Early system on IBM 701. Listed in CACM 2(5):16 (May 1959). BASEBALL - Query system tied to baseball database. bash - UNIX command shell? BASIC - Beginner's All-purpose Symbolic Instruction Code. John G. Kemeny & Thomas E. Kurtz, mid 1960's. Quick and easy programming by students and beginners. BASIC exists in many dialects, and is popular on microcomputers with sound and graphics support. Most micro versions are interactive and interpreted, but others are compiled, including the original Dartmouth BASIC. BASIC AUTOCODER - Early system on IBM 7070. Listed in CACM 2(5):16 (May 1959). Basic COBOL - Subset of COBOL from COBOL-60 standards. Sammet 1969, p.339. Basic FORTRAN - Subset of FORTRAN. Sammet 1969, p.150. Basic JOVIAL - Subset of JOVIAL, ca. 1965. Sammet 1969, p.529. BAWK - Variant of AWK. BC NELIAC - Version of NELIAC, post 1962. Sammet 1969, p.197. BCPL - Basic Combined Programming Language. M. Richards. British systems language, a predecessor of C. BCPL is low-level, block-structured and typeless, and provides only one-dimensional arrays. A variety of flow control: if-then, test-then-else, unless-do, while-do, until-do, repeat, repeatwhile, repeatuntil, for-to-by-do, loop, break and switchon-into. BCPL has conditional expressions, pointers, and manifest constants. Parameters are call-by-value. Program segments communicate via the global vector where system and user variables are stored in fixed numerical locations in a single array. "BCPL - The Language and its Compiler", Martin Richards & Colin Whitby-Stevens, Cambridge U Press 1979. BDL - Block Diagram Compiler. A block-diagram simulation tool, with associated language. "A Software Environment for Digital Signal-Processing Simulations," D.H. Johnson & R.E. Vaughan, Circuits Systems and Signal Processing 6(1):31-43, (1987). BELL - Early system on IBM 650 and Datatron 200 series. [Is Datatron version the same?] Listed in CACM 2(5):16 (May 1959). Versions: BELL L2, BELL L3. BETA - The successor of SIMULA. BIOR - Early system on UNIVAC I or II. Listed in CACM 2(5):16 (May 1959). Bison - The GNU project's implementation of Yacc. [How different from Yacc?] BLAZE - Single assignment language for parallel processing. "The BLAZE Language: A Parallel Language for Scientific Programming", P. Mehrotra et al, J Parallel Comp 5(3):339-361 (Nov 1987). BLAZE 2 - Object-oriented successor to BLAZE. "Concurrent Object Access in BLAZE 2", P. Mehrotra et al, SIGPLAN Notices 24(4):40-42 (Apr 1989). BLISS - Basic Language for Implementation of System Software. Developed at CMU for the PDP-10. A low-level block-structured language, typeless, expression-oriented, with exception handling facilities. Gained fame from its lack of a goto. "BLISS: A Language for Systems Programming", W.A. Wulf et al, CACM 14(12):780-790 (Dec 1971). Versions: BLISS-11 for PDP-11, BLISS-32 for VAX/VMS. Blosim - Block-Diagram Simulator. A block-diagram simulator. "A Tool for Structured Functional Simulation", D.G. Messerschmitt, "IEEE J on Selected Areas in Comm", SAC-2(1):137-147, 1984. BLUE - A proposed language to meet the DoD Ironman requirements which led to Ada. "On the BLUE Language Submitted to the DoD", E.W. Dijkstra, SIGPLAN Notices 13(10):10-15 (Oct 1978). BMDP - Statistical language, from UCLA. BNF - Backus Normal Form later renamed Backus-Naur Form. Meta language to define computer languages. BOEING - Early system on IBM 1103 or 1103A. Listed in CACM 2(5):16 (May 1959). BOSS - Bridgport Operating System Software. Derivative of the ISO 1054 numerical machine control language for milling, etc. BRIDGE - Component of ICES for civil engineers. Sammet 1969, p.616. BSL - Variant of IBM's PL/S systems language. Versions: BSL1, BSL2. BUGSYS - Pattern recognition and preparing animated movies. "BUGSYS: A Programming System for Picture Processing - Not for Debugging", R.A. Ledley et al, CACM 9(2) (Feb 1966). C - Dennis Ritchie, Bell Labs, ca. 1972. Originally the systems language for UNIX on the PDP-11, and briefly named NB. Influenced by BCPL through B. Terse, low-level and permissive. Preprocessor. Has rapidly become the most widely used language for software implementation. "The C Programming Language", Brian Kernighan & Dennis Ritchie, P-H 1978. C* - No details. C++ - Stroustrup. An object-oriented superset of C. In C++ a class is a user-defined type, syntactically a struct with member functions. Constructors and destructors are member functions called to create or destroy instances. A friend is a nonmember function that is allowed to access the private portion of a class. C++ allows implicit type conversion, function inlining, overloading of operators and function names, and default function arguments. It has streams for I/O and references. "The C++ Programming Language", Bjarne Stroustrup, A-W, 1986. C-10 - Improved version of COLINGO. Sammet 1969. C-Linda - No details. C-Scheme - No details. CADET - Computer Aided Design Experimental Translator. Sammet 1969, p.683. CAGE - Early system on IBM 704. Listed in CACM 2(5):16 (May 1959). CAL - Dialect of JOSS. Sammet 1969, p.217. CAMAL - CAMbridge ALgebra system. Computer algebra system used in Celestial Mechanics and General Relativity. Implemented in BCPL. "CAMAL User's Manual", John P. Fitch, Cambridge U, England (1975). "The Design of the Cambridge Algebra System", S.R. Bourne et al, Proc 2nd Symp of Symb & Alg Manip, SIGSAM 1971. CAMIL - Computer Assisted/Managed Instructional Language. Used for CAI at Lowry AFB, CO. "The CAMIL Programming Language", David Pflasterer, SIGPLAN Notices 13(11):43 (Nov 1978). CAML - Categorical Abstract Machine Language. Lazy version of ML built on the categorical abstract machine. ftp: nuri.inria.fr CASE SOAP III - Version of SOAP assembler for IBM 650. Listed in CACM 2(5):16 (May 1959). CAYLEY - Computer algebra system for group theory. John Cannon, U Sydney, Australia, 1976. "An Introduction to the Group Theory Language CAYLEY", J. Cannon, Computational Group Theory, M.D. Atkinson ed, Academic Press 1984, pp.148-183. Version: V3.7 info: cayley@maths.su.oz.au CBASIC - A BASIC compiler. CCalc - Symbolic math? CCS - A specification language. [Denmark?] CDL - 1. Computer Definition Language. A language for describing and designing computer architecture. "Computer Organization and Microprogramming", Y. Chu, P-H 1970. 2. Command Defintion Language. Portion of ICES used to implement commands. Sammet 1969, p.618-620. Cedar - A superset of Mesa, adding garbage collection, dynamic types and a universal pointer type (REF ANY). A large complex language designed for custom Xerox hardware and the Cedar OS/environment. Data types: atoms, lists, ropes ("industrial strength" strings), condition. Multiprocessing features include threads, monitors, signals and catch phrases. "A Description of the Cedar Language", Butler Lampson, Xerox PARC, CSL-83-15 (Dec 1983) CELLSIM - Modeling populations of biological cells. "CELLSIM II User's Manual", C.E. Donaghey, U Houston (Sep 1975). CESSL - CEll Space Simulation Language. Simulating cellular space models. "The CESSL Programming Language", D.R. Frantz, 012520-6-T, CS Dept, U Michigan (Sept 1971) CHARYBDIS - LISP program to display math expressions. Related to MATHLAB. Sammet 1969, p.522. CHASM - CHeap ASseMbler. MS-DOS shareware assembler. CHILI - A PL/I-like language for systems proramming. "CHILI, An Algorithmic Language for Systems Programming", CHI-1014, Chi Corp (Sep 1975). CHILL - CCITT HIgh-Level Language. 1988. Standard in the telecomms community, roughly Ada-like in scope but different in almost any detail you might think of. CHIP - Early system on IBM 1103 or 1103A. Listed in CACM 2(5):16 (May 1959). CIP-L - ? CITRAN - Caltech's answer to MIT's JOSS. Sammet 1969, p.217. CLAM - Computer algebra system specialized in General Relativity. R. d'Inverno & Russell-Clark in the early 70's. Implemented in ATLAS assembler first, LISP later. Clarion - MS-DOS 4GL. CLEAR - A specification language based on initial algebras. "An Informal Introduction to Specification Using CLEAR", R.M. Burstall in The Correctness Problem in Computer Science, R.S. Boyer et al eds, Academic Press 1981, pp.185-213. CLIP - Compiled Language for Information Processing. Based on ALGOL 58. Influenced JOVIAL. Sammet 1969. Clipper - Compiled dialect of MS-DOS dBASE from Nantucket Corp, Los Angeles. Versions: Winter 85, Spring 86, Autumn 86, Summer 87, 4.5 (Japanese Kanji), 5.0. CLIPS - An expert system language, NASA JSC. CLOS - Common LISP Object System. Object-oriented extension to Common LISP. X3J13 Doc 88-002R, D.G. Bobrow et al. SIGPLAN Notices 23 (spec issue) Sep 1988. CLP - Cornell List Processor. Extension of CORC for list processing. Sammet 1969. CLP-R - Constraint Language Programming - Real. Contains a built-in constraint solver over the domain of real numbers. PROLOG-like syntax but quite different semantics. CLU - CLUster. Late 70's. CLU is an object-oriented language of the Pascal family designed to support data abstraction, similar to Alphard. Introduced the iterator: a coroutine yielding the elements of a data object, to be used as the sequence of values in a for loop. A CLU program consists of separately compilable procedures, clusters and iterators, no nesting. A cluster is a module naming an abstract type and its operations, its internal representation and implementation. Clusters and iterators may have parameters. Supplying actual constant values for the parameters instantiates the module. There are no implicit type conversions. In a cluster, the explicit type conversions 'up' and 'down' change between the abstract type and the representation. There is a universal type 'any', and a procedure force[] to check that an object is a certain type. Objects may be mutable or immutable. Exceptions are raised using 'signal' and handled with 'except'. Assignment is by sharing, similar to the sharing of data objects in LISP. Arguments are passed by call-by-sharing, similar to call by value, except that the arguments are objects and can be changed only if they are mutable. CLU has own variables and multiple assignment. --- End of Part 1 -- --Bill Kinnersley billk@hawk.cs.ukans.edu 226 Transfer complete.