OBJ is a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
family introduced by
Joseph Goguen
__NOTOC__
Joseph Amadee Goguen ( ; June 28, 1941 – July 3, 2006) was an American computer scientist. He was professor of Computer Science at the University of California and University of Oxford, and held research positions at IBM and SRI In ...
in 1976, and further worked on by
Jose Meseguer.
Overview
It is a family of
declarative "ultra high-level" languages. It features
abstract types,
generic modules,
subsorts (subtypes with
multiple inheritance
Multiple inheritance is a feature of some object-oriented computer programming languages in which an object or class can inherit features from more than one parent object or parent class. It is distinct from single inheritance, where an object or ...
),
pattern-matching
In computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually has to be exact: "either it will or will not be ...
modulo equations, E-strategies (user control over
laziness
Laziness (also known as indolence) is disinclination to activity or exertion despite having the ability to act or to
exert oneself. It is often used as a pejorative; terms for a person seen to be lazy
include "couch potato", "slacker", and "b ...
), module expressions (for combining modules), theories and views (for describing
module interfaces) for the massively parallel RRM (
rewrite rule machine).
Members of the OBJ family of languages include
CafeOBJ,
Eqlog,
FOOPS,
Kumo,
Maude,
OBJ2 OBJ is a programming language family introduced by Joseph Goguen in 1976, and further worked on by Jose Meseguer.
Overview
It is a family of declarative "ultra high-level" languages. It features abstract types, generic modules, subsorts (subty ...
, and
OBJ3 OBJ is a programming language family introduced by Joseph Goguen in 1976, and further worked on by Jose Meseguer.
Overview
It is a family of declarative programming, declarative "ultra high-level" languages. It features Abstract data type, abstract ...
.
The OBJ family
/ref>
OBJ2
OBJ2 is a programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
with Clear-like parametrised modules and a functional system based on equations.
OBJ3
OBJ3 is a version of OBJ based on order
Order, ORDER or Orders may refer to:
* Categorization, the process in which ideas and objects are recognized, differentiated, and understood
* Heterarchy, a system of organization wherein the elements have the potential to be ranked a number of d ...
-sorted rewriting
In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a well-formed formula, formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewr ...
. OBJ3 is agent
Agent may refer to:
Espionage, investigation, and law
*, spies or intelligence officers
* Law of agency, laws involving a person authorized to act on behalf of another
** Agent of record, a person with a contractual agreement with an insuranc ...
-oriented and runs on Kyoto Common Lisp
Kyoto Common Lisp (KCL) is an implementation of Common Lisp by Taichi Yuasa and Masami Hagiya, written in C to run under Unix-like operating systems. KCL is compiled to ANSI C. It conforms to Common Lisp as described in the 1984 first editio ...
AKCL.
See also
* Automated theorem proving
Automated theorem proving (also known as ATP or automated deduction) is a subfield of automated reasoning and mathematical logic dealing with proving mathematical theorems by computer programs. Automated reasoning over mathematical proof was a maj ...
* Formal methods
In computer science, formal methods are mathematically rigorous techniques for the specification, development, and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expec ...
References
* J. A. Goguen
Higher-Order Functions Considered Unnecessary for Higher-Order Programming
In ''Research Topics in Functional Programming'' (June 1990). pp. 309–351.
*"Principles of OBJ2", K. Futatsugi et al., 12th POPL, ACM 1985, pp. 52–66.
*
External links
The OBJ archive
Information and OBJ3 manual
PostScript
PostScript (PS) is a page description language in the electronic publishing and desktop publishing realm. It is a dynamically typed, concatenative programming language. It was created at Adobe Systems by John Warnock, Charles Geschke, Doug Br ...
format
Academic programming languages
Functional languages
Logic in computer science
Formal specification languages
Theorem proving software systems
Term-rewriting programming languages
{{compu-lang-stub