Programming Languages - O

Sample Program

O2 - ("Object-Oriented"). Object-oriented database language used in the Altair project. Implemented as an interpreter. GIP Altair, Versailles, France. Francois Bancilhon et al, in Advances in Object-Oriented Database Systems, K.R. Dittrich ed, LNCS 334, Springer 1988. (See CO2).

Oaklisp - K. Lang and B. Perlmutter. A portable object-oriented Scheme, syntactically a Scheme superset. Based on generic operations rather than functions. Anonymous classes. "Oaklisp: An Object-Oriented Scheme with First-Class Types", K. Lang et al, SIGPLAN Notices 21(11):30-37 (Nov 1986) (OOPSLA '86). for Amiga

OBE - Office By Example. Moshe Zloof, IBM, early 1980's. Sequel to QBE, descriptions published but apparently never implemented.

Oberon - Wirth, 1988. A descendant of Modula-2 eliminating many things: variant records, enumeration types, subranges, lower array indices and 'for' loops. Additions are extensible record types, multidimensional open arrays and garbage collection. "The Programming Language Oberon", N. Wirth, Soft Prac & Exp 18(7):671-690 (July 1988). "Programming in Oberon: Steps Beyond Pascal and Modula", M. Reiser & N. Wirth, A-W 1992. for MacII, MS-DOS // for MS-DOS // for Amiga

Oberon-2 - H. Moessenboeck, 1991. A superset of Oberon-1 to include object-orientation. A redesign of Object Oberon. Type-bound procedures (equivalent to methods), read-only export of variables and record fields, open array variables, and a 'with' statement with variants. The 'for' statement is reintroduced. Second Intl Modula-2 Conf, Sept 1991.* Version 4 doc: //

Oberon-V - (formerly Seneca). R. Griesemer, 1990. Descendant of Oberon designed for numerical applications on supercomputers, especially vector or pipelined architectures. Includes array constructors and an ALL statement (like a parallel for loop). For the Cray Y-MP. "Seneca - A Language for Numerical Applications on Vectorcomputers", Proc CONPAR 90 - VAPP IV Conf. "A Programming Language for Vector Computers", R. Griesemer, Diss Nr. 10277, ETH Zurich, 1993.

OBJ - Joseph Goguen 1976. A family of declarative "ultra high level" languages. Abstract types, generic modules, subsorts (subtypes with multiple inheritance), pattern-matching modulo equations, E-strategies (user control over laziness), module expressions (for combining modules), theories and views (for describing module interfaces). For the massively parallel RRM (Rewrite Rule Machine). "Higher-Order Functions Considered Unnecessary for Higher-Order Programming", J.A. Goguen, in Research Topics in Functional Programming. OBJ0 - Tardo. Based on unsorted equational logic. OBJT - Tardo. Error algebras plus an image construct. OBJ1 -

OBJ2 - Clear-like parametrized modules. A functional system based on equations. "Principles of OBJ2", K. Futatsugi et al, 12th POPL, ACM 1985, pp.52-66.

OBJ3 - SRI. Based on order-sorted rewriting. Agent-oriented. "Introducing OBJ3", J. Goguen et al, SRI-CSL-88-9, SRI Intl (1988). Runs on AKCL. info:

Object CHILL - "Object CHILL - An Object Oriented Language for Systems Implementation", J. Winkler et al, ACM Comp Sci Conf 1992, pp.139-147.

Object Lisp - LMI. An object-oriented Lisp. "ObjectLISP User Manual", G. Dreschere, LMI 1987.

ObjectLOGO - A variant of LOGO with object-oriented extensions. Lexical scope. Version 2.6, for the Mac. Paradigm Software <> (617)576-7675.

Object Oberon - H. Moessenboeck & J. Templ, 1989. Adds classes and methods to Oberon. "Object Oberon - An Object-Oriented Extension of Oberon", H. Moessenboeck et al, ETH TR 109 (Apr 1990). "Object Oberon - A Modest Object-Oriented Language", H. Moessenboeck & J. Templ, in Structured Programming 10(4), 1989. (See Oberon-2).

Object-CHILL - Proposed object-oriented extension of CHILL. G. Diesl et al, "Object-CHILL: The Road to Object Oriented Programming with CHILL", CHILL - CCITT High Level Language, Prceedings of the 5th CHILL Conference, Rio de Janeiro, Brazil, March 1990, pp.135-142.

Object-COBOL - Micro Focus. Largely compatible, but a subset of, the proposed object-oriented COBOL standard. "Object-COBOL: Object Orientation for Business", Raymond Obin, Micro Focus Press.

Object-Oriented Turing - R.C. Holt <>, U Toronto, 1991. Extension of Turing, and a replacement for Turing Plus. Imperative, object-oriented, concurrent. Modules, classes, single inheritance, processes, exception handling, optional machine-dependent programming. Integrated environment under X windows. Described in "A Conceptual Framework for Software Development", Mancoridis et al, eds, ACM SIGSCE Conference, Feb 1993, Indianapolis. Versions for Sun4, MIPS, RS-6000, etc. "Turing Reference Manual", 1992, ISBN 0-921598-15-7. (demo version) info: <>

ObjectPAL - Object-oriented database language, part of Borland's MS-Windows version of Paradox.

Object Pascal - Developed jointly by Apple Computer and Niklaus Wirth. An object-oriented Pascal. "Object Pascal Report", Larry Tesler, Structured Language World 9(3):10-17 (1985).

Object-Z - U Queensland. "The Object-Z Specification Language: Version 1", TR 91-1, Software Verification Res Ctr, U Queensland, 1991. "Object-Z", G. Rose, in Object Orientation in Z, S. Stepney et al eds, Springer 1992. fp:

Objective C - Brad Cox, Productivity Products. An object-oriented superset of ANSI C, incorporating many ideas from Smalltalk. Implemented as a preprocessor for C. No operator overloading, no multiple inheritance, no class variables. Does have run-time binding. Used as the system programming language on the NeXT. "Object-Oriented Programming: An Evolutionary Approach", Brad Cox, A-W 1986. Versions for MS-DOS, Macs, VAX/VMS and Unix workstations. Language versions by Stepstone, NeXT and GNU are slightly different. Stepstone Corp, (203) 426-1875.

Objlog - CNRS, Marseille. Frame-based language combining objects and Prolog II. "The Inheritance Processes in Prolog", C. Chouraki et al, GRTC/187bis/Mars 1987 (CNRS).

ObjVlisp - 1984. An object-oriented extension of Vlisp. Reflective architecture. "Metaclasses are First Class: The ObjVlisp Model", P. Cointe, SIGPLAN Notices 22(121):156-167 (Dec 1987) (OOPSLA '87).

ObjVProlog - Logic programming and object-orientation, an adaptation of the ObjVlisp model to Prolog. "ObjVProlog: Metaclasses in Logic", J. Malenfant, ECOOP '89, Cambridge U Press 1989, pp.257-269.

Obliq - Luca Cardelli, 1993. A distributed object-oriented scripting language. Small, statically scoped, untyped, higher order, and concurrent. State is local to an address space, while computation can migrate over the network. The distributed computation mechanism is based on Modula-3 network objects.

Oblog - Object-oriented extension to Prolog. Small, portable. info: Margaret McDougall, EdCAAD, Dept Arch, U Edinburgh, EH1 1JZ.

OBSCURE - "A Formal Description of the Specification Language OBSCURE", J. Loeckx, TR A85/15, U Saarlandes, Saarbrucken, 1985.

Oc - ("Oh see!") Parallel logic language. "Self-Description of Oc and its Applications", M. Hirata, Proc 2nd Natl Conf Japan Soc Soft Sci Tech, pp.153-156 (1984).

OCAL - On-Line Cryptanalytic Aid Language. "OCAS: On-line Cryptanalytic Aid System", D.J. Edwards, MAC-TR-27, MIT Project MAC, May 1966. Sammet 1969, p.642.

occam - (named for the English philosopher William of Occam (1300-1349)) Now known as "occam 1". David May et al, 1982. Concurrent algorithms, based on CSP and EPL. Designed for the INMOS transputer and vice versa. Expressions are processes, which may be combined in serial and parallel. Processes communicate via named unidirectional channels. There is no operator precedence. "Occam", D. May, SIGPLAN Notices 18(4):69-79 (1983). simulator for VAX, Tahoe list:

occam 2 - 1987. An extension of occam1. Occam 2 adds floating point, functions and a type system. "occam 2 Reference Manual", INMOS, P-H 1988, ISBN 0-13-629312-3. portable simulator for Unix

occam 3 - under development

OCL - Operator Control Language. Batch language for the IBM System/36, used specifically with the RPG II compiler. (See CL).

OCODE - Assembly language for a stack-based virtual machine, used as the intermediate language of the Cambridge BCPL compiler. "The Portability of the BCPL Compiler", M. Richards, Soft Prac & Exp 1(2) (1971).

Octave - High-level language primarily for numerical computations. Real and complex scalars and matrices, solution nonlinear algebraic equations, ordinary differential equations. Implemented in g++ and Fortran.

odl - Fine-grained active object oriented design/programming language. Part of the Diamonds project for software engineering on heterogeneous distributed systems. info: Gary L. Craig <>


1. "The Architecture of the FAIM-1 Symbolic Multiprocessing System", A. Davis et al, 9th Intl Joint Conf in Artif Intell, 1985, pp.32-38.

2. Operator Identification Language. Used for overload resolution by the Eli compiler-writing system.

OISC - One Instruction Set Computer. Assembly language for a machine based on the single instruction "subtract and jump if negative", constructed as a proof of principle by Ross Cuniff <>. Emulator with source code, includes a macro assembler and nontrivial example programs.

OLC - On-Line Computer system. UCSB ca. 1966. Predecessor of Culler-Fried System. Sammet 1969, p.253.

OLDAS - On-line Digital Analog Simulator. Interactive version of MIMIC, for IBM 360. "OLDAS: An On-line Continuous System Simulation Language", R.P. Cullen, in Interactive Systems for Experimental Applied Mathematics, A-P 1968.

OLGA - Ouf! un Langage pour les Grammaires Attribuees. Inria, 1985. Language for specification of attribute grammars, used as the input language of the compiler writing system FNC-2. Applicative, strongly typed, polymorphic, pattern-matching, modules.

Omega - Prototype-based object-oriented language. Austria. "Type-Safe Object-Oriented Programming with Prototypes - The Concept of Omega", G. Blaschek, Structured Programming 12:217-225 (1991).

OMNICODE - Thompson, 1956. Ran on IBM 650. Sammet 1969, p.5.

OMNIFAX - Alternate name for NYU OMNIFAX? Early system on UNIVAC I or II. Listed in CACM 2(5):16 (May 1959).

OMNITAB - Statistical analysis and desk calculator. "OMNITAB II User's Reference Manual", NBS Tech Note 552 (Oct 1971). Sammet 1969, pp.296-299. Version: OMNITAB II.

Ondine - "Concurrency Introduction to an Object-Oriented Language System Ondine", T. Ogihara et al, 3rd Natl Conf Record A-5-1, Japan Soc for Soft Sci Tech, Japan 1986.

Ontic - Object-oriented language for an inference system. LISP-like appearance, but based on set theory. "Ontic: A Knowledge Representation System for Mathematics", D.A. McAllester, MIT Press 1989.

OO-CHILL - Proposed object-oriented extension to CHILL. A. Scortese, "OO- CHILL: Integrating the Object Pradigm Into CHILL", CHILL - CCITT High Level Language, Prceedings of the 5th CHILL Conference, Rio de Janeiro, Brazil, March 1990, pp.127-133.

OOF - Object-Oriented Fortran. Data items can be grouped into objects, which can be instantiated and executed in parallel. Available now for Suns, Iris, iPSC, soon for nCUBE. info:

OOPS - "OOPS: A Knowledge Representation Language", D. Vermeir, Proc 19th Intl Hawaii Conf on System Sciences, IEEE (Jan 1986) pp.156-157.

OOT - Object-oriented Turing.

OOZE - Object oriented extension of Z. "Object Orientation in Z", S. Stepney et al eds, Springer 1992.

OPAL-0 - Predecessor of OPAL[5].


1. DSP language. "OPAL: A High Level Language and Environment for DSP boards on PC", J.P. Schwartz et al, Proc ICASSP-89, 1989.

2. Previous name of Smalltalk DB.

3. Simulation language with provision for stochastic variables. An extension of Autostat. "C-E-I-R OPAL", D. Pilling, Internal Report, C.E.I.R. Ltd (1963).

4. Language for compiler testing said to be used internally by DEC.

5. Technical University of Berlin. Strongly-typed, higher-order, strict applicative language, with algebraic specification. Uses parameterized structures rather than polymorphism. "OPAL: Design and Implementation of an Algebraic Programming Language", available by ftp. info:

O-plan - Distributed language.


1. On-line Process Synthesizer. M. Greenberger, MIT ca. 1964. Discrete simulation under CTSS. Sammet 1969, p.660. Versions: OPS-3, OPS-4. "On- line Computation and Simulation: The OPS-3 System", M. Greenberger et al, MIT Press 1965.

2. Official Production System. CMU, 1970. The first production-system (i.e. rule-based) programming language, used for building expert systems. Written originally in Franz Lisp, later ported to other LISP dialects.

OPS5 - Charles L. Forgy. 1977 version of OPS[2], publicly available from the author <>. First implemented in Lisp, later in BLISS. "Programming Expert Systems in OPS5", L. Brownston et al, A-W 1985. "An OPS5 Primer", Sherman et al, comes with OPS5 for DOS. Other versions: OPS4, OPS5+, OPS83. Inference Engine Tech, Cambridge MA. an OPS5 interpreter in Common LISP. C5 - An OPS5 implementation in C. "Rule-Based Programming in the Unix System", G.T. Vesonder, AT&T Tech J 67(1), 1988.

OPTRAN - R. Wilhelm, U Saarlandes, early 1980's. Specification language for attributed tree transformation. "POPSY and OPTRAN Manual", ESPRIT PROSPECTRA Project Item S.1.6-R.3.0, U Saarlandes (Mar 1986).

Orca - Vrije Universiteit, Amsterdam, 1986. Similar to Modula-2, but with support for distributed programming using shared data objects, like Linda. A 'graph' data type removes the need for pointers. Version for the Amoeba OS, comes with Amoeba. "Orca: A Language for Distributed Processing", H.E. Bal <> et al, SIGPLAN Notices 25(5):17-24 (May 1990).

OREGANO - "On the Design and Specification of the Programming Language OREGANO", D.M. Berry. UCLA-ENG-7388, 1973.

Orient84/K - Y. Ishikawa, Keio U, Yokohama. "A Concurrent Object-Oriented Knowledge Representation Language Orient84/K", Y. Ishikawa et al, SIGPLAN Notices 21(11):232-241 (OOPSLA '86) (Nov 1986).

ORTHOCARTAN - A. Krasinski, Warsaw, early 80's. Symbolic math, especially General Relativity.

Orwell - Lazy functional language, Miranda-like. List comprehensions and pattern matching. "Introduction to Orwell 5.00", P.L. Wadler et al, Programming Research Group, Oxford U, 1988.


1. Oregon State Conversational Aid to Research. Interactive numerical calculations, vectors, matrices, complex arithmetic, string operations, for CDC 3300. "OSCAR: A User's Manual with Examples", J.A. Baughman et al, CC, Oregon State U.

2. Object-oriented language used in the COMANDOS Project. "OSCAR: Programming Language Manual", TR, COMANDOS Project, Nov 1988.

O'small - Small object-oriented language intended for teaching.*

OSQL - Object-oriented Structured Query Language. Functional language, superset of SQL, used in Hewlett-Packard's OpenODB database system. info:

OSSL - Operating Systems Simulation Language. "OSSL - A Specialized Language for Simulating Computer Systems", P.B. Dewan et al, Proc SJCC 40, AFIPS (Spring 1972).

Ottawa Euclid - Variant of Euclid.

OWHY - Early functional language? "A Type-Theoretical Alternative to CUCH, ISWIM, OWHY", Dana Scott, Oxford U 1969.

OWL - Original name of Trellis.

Ox - Language for specification of attribute grammars. "User Manual for Ox: An Attribute-Grammar Compiling System based on Yacc, Lex and C", K.M. Bischoff, TR92-30, Iowa State U, Dec 1992.

Oz - U Saarbrucken. Object-oriented concurrent constraint language. Based on constraint communication, a new form of asynchronous communication using logic variables. Partial information about the values of variables is imposed concurrently and incrementally. Supports higher order programming and object-orientation including multiple inheritance. "Object-Oriented Concurrent Constraint Programming in Oz", G. Smolka et al.