ABAP (Advanced Business Application Programming, originally Allgemeiner Berichts-Aufbereitungs-Prozessor, German for "general report creation processor") is a high-level programming language created by the German software company SAP SE.
In computer science, an abstract data type (ADT) is a mathematical model for data types, where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations.
The abstract factory pattern provides a way to encapsulate a group of individual factories that have a common theme without specifying their concrete classes.
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.
In software engineering and computer science, abstraction is.
Ada is a structured, statically typed, imperative, and object-oriented high-level computer programming language, extended from Pascal and other languages.
In software engineering, the adapter pattern is a software design pattern (also known as Wrapper, an alternative naming shared with the Decorator pattern) that allows the interface of an existing class to be used as another interface.
Addison-Wesley is a publisher of textbooks and computer literature.
Adele Goldberg (born July 7, 1945) is a computer scientist who participated in developing the programming language Smalltalk-80 and various concepts related to object-oriented programming while a researcher at the Xerox Palo Alto Research Center (PARC), in the 1970s.
Adobe ColdFusion is a commercial rapid web application development platform created by J. J. Allaire in 1995.
Alan Curtis Kay (born May 17, 1940 published by the Association for Computing Machinery 2012) is an American computer scientist.
Alexander Alexandrovich Stepanov (Алекса́ндр Алекса́ндрович Степа́нов), born November 16, 1950 in Moscow, is a Russian computer programmer, best known as an advocate of generic programming and as the primary designer and implementer of the C++ Standard Template Library, which he started to develop around 1992 while employed at HP Labs.
ALGOL (short for "Algorithmic Language") is a family of imperative computer programming languages, originally developed in the mid-1950s, which greatly influenced many other languages and was the standard method for algorithm description used by the ACM in textbooks and academic sources for more than thirty years.
In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems.
In computer programming, an anonymous function (function literal, lambda abstraction, or lambda expression) is a function definition that is not bound to an identifier.
Apache Groovy is a Java-syntax-compatible object-oriented programming language for the Java platform.
Artificial intelligence (AI, also machine intelligence, MI) is intelligence demonstrated by machines, in contrast to the natural intelligence (NI) displayed by humans and other animals.
On many computing platforms everything is a file, but in contrast on the AS/400 everything is an object.
The Association for Computing Machinery (ACM) is an international learned society for computing.
BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use.
In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns.
Bertrand Meyer (born 21 November 1950) is a French academic, author, and consultant in the field of computer languages.
Bjarne Stroustrup (born 30 December 1950) is a Danish computer scientist, who is most notable for the creation and development of the widely used C++ programming language.
Boston is the capital city and most populous municipality of the Commonwealth of Massachusetts in the United States.
Brad Cox is a computer scientist known mostly for creating the Objective-C programming language with his business partner Tom Love and for his work in software engineering (specifically software reuse) and software componentry.
The bridge pattern is a design pattern used in software engineering that is meant to "decouple an abstraction from its implementation so that the two can vary independently", introduced by the Gang of Four.
The Builder is a design pattern designed to provide a flexible solution to various object creation problems in object-oriented programming.
In the 1970s, Burroughs Corporation was organized into three divisions with very different product line architectures for high-end, mid-range, and entry-level business computer systems.
Byte was an American microcomputer magazine, influential in the late 1970s and throughout the 1980s because of its wide-ranging editorial coverage.
C (as in the letter ''c'') is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.
C# (/si: ʃɑːrp/) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.
C++ ("see plus plus") is a general-purpose programming language.
CADES (Computer Aided Design and Evaluation System) was a software engineering repository system produced to support the development of the VME/B Operating System for the ICL New Range - subsequently 2900 - computers.
In object-oriented design, the chain-of-responsibility pattern is a design pattern consisting of a source of command objects and a series of processing objects.
In computer and machine-based telecommunications terminology, a character is a unit of information that roughly corresponds to a grapheme, grapheme-like unit, or symbol, such as in an alphabet or syllabary in the written form of a natural language.
Chris Date (born 1941) is an independent author, lecturer, researcher, and consultant, specializing in relational database theory.
The circle-ellipse problem in software development (sometimes termed the square-rectangle problem) illustrates several pitfalls which can arise when using subtype polymorphism in object modelling.
In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods).
In object-oriented programming with classes, a class variable is a variable defined in a class of which a single copy exists, regardless of how many instances of the class exist.
Class-based programming, or more commonly class-orientation, is a style of object-oriented programming (OOP) in which inheritance is achieved by defining classes of objects, as opposed to the objects themselves (compare prototype-based programming).
Clojure (like "closure") is a dialect of the Lisp programming language.
CLU is a programming language created at the Massachusetts Institute of Technology (MIT) by Barbara Liskov and her students between 1974 and 1975.
COBOL (an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use.
Cocoa is Apple's native object-oriented application programming interface (API) for their operating system macOS.
Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior.
Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software, following the reusability principles.
In object-oriented programming, the command pattern is a behavioral design pattern in which an object is used to encapsulate all information needed to perform an action or trigger an event at a later time.
Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 (R2004) (formerly X3.226-1994 (R1999)).
The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp.
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms.
This comparison of programming languages compares how object-oriented programming languages such as C++, Java, Smalltalk, Object Pascal, Perl, Python, and others manipulate data structures.
This article attempts to set out the various similarities and differences between the various programming paradigms as a summary in both graphical and tabular format with links to the separate discussions concerning these similarities and differences in extant Wikipedia articles.
A compiler is computer software that transforms computer code written in one programming language (the source language) into another programming language (the target language).
Component-based software engineering (CBSE), also called as component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a given software system.
In software engineering, the composite pattern is a partitioning design pattern.
Composition over inheritance (or composite reuse principle) in object-oriented programming (OOP) is the principle that classes should achieve polymorphic behavior and code reuse by their composition (by containing instances of other classes that implement the desired functionality) rather than inheritance from a base or parent class.
Computer is an IEEE Computer Society practitioner-oriented magazine issued to all members of the society.
Computer simulation is the reproduction of the behavior of a system using a computer to simulate the outcomes of a mathematical model associated with said system.
In computer science, conditional statements, conditional expressions and conditional constructs are features of a programming language, which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false.
In class-based object-oriented programming, a constructor (abbreviation: ctor) is a special type of subroutine called to create an object.
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated.
In software engineering, coupling is the degree of interdependence between software modules; a measure of how closely connected two routines or modules are;ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary the strength of the relationships between modules.
Craig Larman (1958) is a Canadian-born computer scientist, author, and organizational development consultant.
In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.
Daniel Henry Holmes Ingalls Jr. (born 1944) is a pioneer of object-oriented computer programming and the principal architect, designer and implementer of five generations of Smalltalk environments.
Dart is a general-purpose programming language originally developed by Google and later approved as a standard by Ecma (ECMA-408).
Data is a set of values of qualitative or quantitative variables.
Data security means protecting digital data, such as those in a database, from destructive forces and from the unwanted actions of unauthorized users, such as a cyberattack or a data breach.
In computer science, a data structure is a data organization and storage format that enables efficient access and modification.
In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data.
In object-oriented programming, the decorator pattern is a design pattern that allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class.
Delegation, in computing or computer programming, refers generally to one entity passing something to another entity, and narrowly to various specific forms of relationships.
Delphi is an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, developed by Embarcadero Technologies.
In object-oriented design, the dependency inversion principle refers to a specific form of decoupling software modules.
Design by contract (DbC), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software.
Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing software design patterns.
Distributed Component Object Model (DCOM) is a proprietary Microsoft technology for communication between software components on networked computers.
Distributed Data Management Architecture (DDM) is IBM's open, published software architecture for creating, managing and accessing data on a remote computer.
The Document Object Model (DOM) is a cross-platform and language-independent application programming interface that treats an HTML, XHTML, or XML document as a tree structure wherein each node is an object representing a part of the document.
In software engineering, don't repeat yourself (DRY) is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions, or repetition of the same data, using data normalization to avoid redundancy.
Distributed Relational Database Architecture (DRDA) is a database interoperability standard from The Open Group.
Duplicate code is a computer programming term for a sequence of source code that occurs more than once, either within a program or across different programs owned or maintained by the same entity.
In computer science, dynamic dispatch is the process of selecting which implementation of a polymorphic operation (method or function) to call at run time.
Dynamic programming is both a mathematical optimization method and a computer programming method.
Dynamic programming language, in computer science, is a class of high-level programming languages which, at runtime, execute many common programming behaviors that static programming languages perform during compilation.
ECMAScript (or ES) is a trademarked scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262.
Eiffel is an object-oriented programming language designed by Bertrand Meyer (an object-orientation proponent and author of Object-Oriented Software Construction) and Eiffel Software.
Emerald is a distributed, object-oriented programming language developed in the 1980s by Andrew P. Black, Norman C. Hutchinson, Eric B. Jul, and Henry M. Levy, in the Department of Computer Science at the University of Washington.
In object oriented programming languages, encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof.
In mathematics, when the elements of some set S have a notion of equivalence (formalized as an equivalence relation) defined on them, then one may naturally split the set S into equivalence classes.
Eric Steven Raymond (born December 4, 1957), often referred to as ESR, is an American software developer, author of the widely cited 1997 essay and 1999 book The Cathedral and the Bazaar and other works, and open-source software advocate.
Erich Gamma (born 1961 in Zürich) is a Swiss computer scientist and co-author of the influential software engineering textbook, Design Patterns: Elements of Reusable Object-Oriented Software.
Erlang is a general-purpose, concurrent, functional programming language, as well as a garbage-collected runtime system.
ETH Zurich (Swiss Federal Institute of Technology in Zurich; Eidgenössische Technische Hochschule Zürich) is a science, technology, engineering and mathematics STEM university in the city of Zürich, Switzerland.
In computer programming, event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs/threads.
In mathematics, specifically in category theory, an F-coalgebra is a structure defined according to a functor F. For both algebra and coalgebra, a functor is a convenient and general way of organizing a signature.
The facade pattern (also spelled as façade) is a software-design pattern commonly used with object-oriented programming.
In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created.
In computer science, data that has several parts, known as a record, can be divided into fields.
In the Java programming language, the final keyword is used in several contexts to define an entity that can only be assigned once.
Flavors, an early object-oriented extension to Lisp developed by Howard Cannon at the MIT Artificial Intelligence Laboratory for the Lisp machine and its programming language Lisp Machine Lisp, was the first programming language to include mixins.
In computer programming, flyweight is a software design pattern.
Fortran (formerly FORTRAN, derived from Formula Translation) is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.
FoxPro was a text-based procedurally oriented programming language and database management system (DBMS), and it is also an object-oriented programming language, originally published by Fox Software and later by Microsoft, for MS-DOS, Windows, Macintosh, and UNIX.
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
In computer science, garbage collection (GC) is a form of automatic memory management.
Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters.
Gerald Jay Sussman (born February 8, 1947) is the Panasonic Professor of Electrical Engineering at the Massachusetts Institute of Technology (MIT).
Go (often referred to as Golang) is a programming language created at Google in 2009 by Robert Griesemer, Rob Pike, and Ken Thompson.
The graphical user interface (GUI), is a type of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation, instead of text-based user interfaces, typed command labels or text navigation.
General responsibility assignment software patterns (or principles), abbreviated GRASP, consist of guidelines for assigning responsibility to classes and objects in object-oriented design.
In computing, a hash table (hash map) is a data structure that implements an associative array abstract data type, a structure that can map keys to values.
Hypertext Markup Language (HTML) is the standard markup language for creating web pages and web applications.
IBM mainframes are large computer systems produced by IBM since 1952.
The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978.
The IBM System/370 (S/370) was a model range of IBM mainframe computers announced on June 30, 1970 as the successors to the System/360 family.
IDEF4, or Integrated DEFinition for Object-Oriented Design, is an object-oriented design modeling language for the design of component-based client/server systems.
In object-oriented and functional programming, an immutable object (unchangeable object) is an object whose state cannot be modified after it is created.
In computer science, imperative programming is a programming paradigm that uses statements that change a program's state.
In computer science, information hiding is the principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed.
In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object (prototypal inheritance) or class (class-based inheritance), retaining the same implementation.
In object-oriented programming (OOP), an instance is a concrete occurrence of any object, existing usually during the runtime of a computer program.
In object-oriented programming with classes, an instance variable is a variable defined in a class (i.e. a member variable), for which each instantiated object of the class has a separate copy, or instance.
In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers.
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development.
The iAPX 432 (Intel Advanced Performance ArchitectureSometimes intel Advanced Processor architecture) was a computer architecture introduced in 1981.
An interface description language or interface definition language (IDL), is a specification language used to describe a software component's application programming interface (API).
The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.
In computer science, an interpreter is a computer program that directly executes, i.e. performs, instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.
In computer programming, the interpreter pattern is a design pattern that specifies how to evaluate sentences in a language.
In knowledge representation, object-oriented programming and design (see object-oriented program architecture), is-a (is_a or is a) is a subsumption relationship between abstractions (e.g. types, classes), wherein one class A is a subclass of another class B (and so B is a superclass of A).
In object-oriented programming, the iterator pattern is a design pattern in which an iterator is used to traverse a container and access the container's elements.
ITT Inc., formerly ITT Corporation, is an American worldwide manufacturing company based in White Plains, New York.
Ivan Edward Sutherland (born May 16, 1938) is an American computer scientist and Internet pioneer, widely regarded as the "father of computer graphics." His early work in computer graphics as well as his teaching with David C. Evans in that subject at the University of Utah in the 1970s was pioneering in the field.
JADE is a proprietary object-oriented software development and deployment platform product from the New Zealand-based Jade Software Corporation, first released in 1996.
Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Java Data Objects (JDO) is a specification of Java object persistence.
Jeroo is a cross-platform educational tool for learning object oriented programming concepts.
Joseph "Joe" Leslie Armstrong (27 December 1950 in Bournemouth, England) is a computer scientist working in the area of fault-tolerant distributed systems.
John Clifford Mitchell is professor of computer science and (by courtesy) electrical engineer at Stanford University.
John Matthew Vlissides (August 2, 1961 - November 24, 2005) was a software scientist known mainly as one of the four authors (referred to as the Gang of Four) of the book Design Patterns: Elements of Reusable Object-Oriented Software.
John Wiley & Sons, Inc., also referred to as Wiley, is a global publishing company that specializes in academic publishing.
KISS is an acronym for "Keep it simple, stupid" as a design principle noted by the U.S. Navy in 1960.
Kristen Nygaard (27 August 1926 – 10 August 2002) was a Norwegian computer scientist, programming language pioneer and politician.
Late binding, or dynamic binding, is a computer programming mechanism in which the method being called upon an object or the function being called with arguments is looked up by name at runtime.
LePUS3 is a language for modelling and visualizing object-oriented (Java, C++, C#) programs and design patterns.
Linn Products is an engineering company that manufactures hi-fi and audio equipment.
Substitutability is a principle in object-oriented programming stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of the program (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy.
Lisp (historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.
Lisp machines are general-purpose computers designed to efficiently run Lisp as their main software and programming language, usually via hardware support.
In computer science, a list or sequence is an abstract data type that represents a countable number of ordered values, where the same value may occur more than once.
In computer science, a lookup table is an array that replaces runtime computation with a simpler array indexing operation.
Lua (from meaning moon) is a lightweight, multi-paradigm programming language designed primarily for embedded use in applications.
Luca Andrea Cardelli FRS is an Italian computer scientist who is an Assistant Director at Microsoft Research in Cambridge, UK.
macOS (previously and later) is a series of graphical operating systems developed and marketed by Apple Inc. since 2001.
Mainframe computers (colloquially referred to as "big iron") are computers used primarily by large organizations for critical applications; bulk data processing, such as census, industry and consumer statistics, enterprise resource planning; and transaction processing.
Massachusetts, officially known as the Commonwealth of Massachusetts, is the most populous state in the New England region of the northeastern United States.
The Massachusetts Institute of Technology (MIT) is a private research university located in Cambridge, Massachusetts, United States.
MATLAB (matrix laboratory) is a multi-paradigm numerical computing environment and proprietary programming language developed by MathWorks.
McGraw-Hill Education (MHE) is a learning science company and one of the "big three" educational publishers that provides customized educational content, software, and services for pre-K through postgraduate education.
In software engineering, the mediator pattern defines an object that encapsulates how a set of objects interact.
In object-oriented programming, a member variable (sometimes called a member field) is a variable that is associated with a specific object, and accessible for all its methods (member functions).
The memento pattern is a software design pattern that provides the ability to restore an object to its previous state (undo via rollback).
In computer science, a metaobject is an object that manipulates, creates, describes, or implements objects (including itself).
A method in object-oriented programming (OOP) is a procedure associated with a message and an object.
Microsoft Press is the publishing arm of Microsoft, usually releasing books dealing with various current Microsoft technologies.
The MIT Computation Center was organized in 1956 as a 10-year joint venture between the Massachusetts Institute of Technology and IBM to provide computing resources for New England universities.
The MIT Press is a university press affiliated with the Massachusetts Institute of Technology (MIT) in Cambridge, Massachusetts (United States).
In object-oriented programming languages, a Mixin is a class that contains methods for use by other classes without having to be the parent class of those other classes.
Modula-2 is a computer programming language designed and developed between 1977 and 1985 by Niklaus Wirth at the Swiss Federal Institute of Technology in Zurich (ETH Zurich) as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith.
Modular programming is a software design technique that emphasizes separating the functionality of a programme into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.
Monte Carlo methods (or Monte Carlo experiments) are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results.
Multiple dispatch or multimethods is a feature of some programming languages in which a function or method can be dynamically dispatched based on the run-time (dynamic) type or, in the more general case some other attribute, of more than one of its arguments.
Multiple inheritance is a feature of some object-oriented computer programming languages in which an object or class can inherit characteristics and features from more than one parent object or parent class.
In programming languages, name binding is the association of entities (data and/or code) with identifiers.
In computing, a namespace is a set of symbols that are used to organize objects of various kinds, so that these objects may be referred to by name.
Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist, best known for designing several programming languages, including Pascal, and for pioneering several classic topics in software engineering.
Norwegian Computing Center (NR, in Norwegian: Norsk Regnesentral) is a private, independent, non-profit research foundation founded in 1952.
A noun (from Latin nōmen, literally meaning "name") is a word that functions as the name of some specific thing or set of things, such as living creatures, objects, places, actions, qualities, states of existence, or ideas.
Oberon is a general-purpose programming language created in 1986 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages (Euler, Algol-W, Pascal, Modula, and Modula-2).
In computer science, an object can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier.
In computer science, object composition (not to be confused with function composition) is a way to combine simple objects or data types into more complex ones.
An object database is a database management system in which information is represented in the form of objects as used in object-oriented programming.
The Object Management Group (OMG) is an international, open membership, not-for-profit technology '''standards''' consortium.
Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Delphi.
The term "object-based language" may be used in a technical sense to describe any programming language that uses the idea of encapsulating state and operations inside "objects".
An object-modeling language is a standardized set of symbols used to model a software system using an object-oriented framework.
Object-oriented analysis and design (OOAD) is a popular technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the development life cycles to foster better stakeholder communication and product quality.
Object-Oriented Software Construction is a book by Bertrand Meyer, widely considered a foundational text of object-oriented programming.
The object-relational impedance mismatch is a set of conceptual and technical difficulties that are often encountered when a relational database management system (RDBMS) is being served by an application program (or multiple application programs) written in an object-oriented programming language or style, particularly because objects or class definitions must be mapped to database tables defined by a relational schema.
Object-relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages.
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.
Ole-Johan Dahl (12 October 1931 – 29 June 2002) was a Norwegian computer scientist.
Oliver Sims (born 1943, died in 2015) was a British computer scientist, former IBM employee, and enterprise architecture consultant, known for his work on business objects Object-oriented programming, and service-oriented architecture (SOA).
Open-source software (OSS) is a type of computer software whose source code is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose.
In object-oriented programming, the open/closed principle states "software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification"; that is, such an entity can allow its behaviour to be extended without modifying its source code.
In science and philosophy, a paradigm is a distinct set of concepts or thought patterns, including theories, research methods, postulates, and standards for what constitutes legitimate contributions to a field.
In programming languages and type theory, parametric polymorphism is a way to make a language more expressive, while still maintaining full static type-safety.
PARC (Palo Alto Research Center; formerly Xerox PARC) is a research and development company in Palo Alto, California, with a distinguished reputation for its contributions to information technology and hardware systems.
Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 1968–69 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal. Pascal was developed on the pattern of the ALGOL 60 language. Wirth had already developed several improvements to this language as part of the ALGOL X proposals, but these were not accepted and Pascal was developed separately and released in 1970. A derivative known as Object Pascal designed for object-oriented programming was developed in 1985; this was used by Apple Computer and Borland in the late 1980s and later developed into Delphi on the Microsoft Windows platform. Extensions to the Pascal concepts led to the Pascal-like languages Modula-2 and Oberon.
Paul Graham (born 13 November 1964) is an English born computer scientist, entrepreneur, venture capitalist, author, and essayist.
The PDP-10 is a mainframe computer family manufactured by Digital Equipment Corporation (DEC) from 1966 into the 1980s.
Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages, Perl 5 and Perl 6.
PHP: Hypertext Preprocessor (or simply PHP) is a server-side scripting language designed for Web development, but also used as a general-purpose programming language.
Physical modelling synthesis refers to sound synthesis methods in which the waveform of the sound to be generated is computed using a mathematical model, a set of equations and algorithms to simulate a physical source of sound, usually a musical instrument.
In computer science, a pointer is a programming language object that stores the memory address of another value located in computer memory.
In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a single interface to entities of different types.
PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language.
Prentice Hall is a major educational publisher owned by Pearson plc.
Procedural programming is a programming paradigm, derived from structured programming, based upon the concept of the procedure call.
Programming paradigms are a way to classify programming languages based on their features.
The prototype pattern is a creational design pattern in software development.
Prototype-based programming is a style of object-oriented programming in which behaviour reuse (known as inheritance) is performed via a process of reusing existing objects via delegation that serve as prototypes.
In computer programming, the proxy pattern is a software design pattern.
Python is an interpreted high-level programming language for general-purpose programming.
Ralph E. Johnson is a Research Associate Professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign.
Random-access memory (RAM) is a form of computer data storage that stores data and machine code currently being used.
In computer science, a record (also called a structure, struct, or compound data) is a basic data structure.
In computer programming languages, a recursive data type (also known as a recursively-defined, inductively-defined or inductive data type) is a data type for values that may contain other values of the same type.
Rekursiv was a computer processor designed by David M. Harland in the mid-1980s for Linn Smart Computing in Glasgow, Scotland.
A relational database is a digital database based on the relational model of data, as proposed by E. F. Codd in 1970.
A relational database management system (RDBMS) is a database management system (DBMS) based on the relational model invented by Edgar F. Codd at IBM's San Jose Research Laboratory.
The Research Laboratory of Electronics (RLE) at the Massachusetts Institute of Technology (MIT) was founded in 1946 as the successor to the famed MIT Radiation Laboratory (Rad Lab) of World War II.
Responsibility-driven design is a design technique in object-oriented programming, which improves encapsulation by using the client–server model.
Robert "Rob" C. Pike (born 1956) is a Canadian programmer and author.
Robert William "Bob" Harper, Jr. is a computer science professor at Carnegie Mellon University who works in programming language research.
The numeric system represented by Roman numerals originated in ancient Rome and remained the usual way of writing numbers throughout Europe well into the Late Middle Ages.
Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language.
Ruby on Rails, or Rails, is a server-side web application framework written in Ruby under the MIT License.
Scala is a general-purpose programming language providing support for functional programming and a strong static type system.
In computer programming, the scope of a name binding – an association of a name to an entity, such as a variable – is the region of a computer program where the binding is valid: where the name can be used to refer to the entity.
Self is an object-oriented programming language based on the concept of prototypes.
In programming language theory, semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages.
In computer science, separation of concerns (SoC) is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern.
SIMSCRIPT is a free-form, English-like general-purpose simulation language conceived by Harry Markowitz and Bernard Hausner at the RAND Corporation in 1963.
Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard.
The single responsibility principle is a computer programming principle that states that every module or class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class.
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object.
Sketchpad (a.k.a. Robot Draftsman) was a revolutionary computer program written by Ivan Sutherland in 1963 in the course of his PhD thesis, for which he received the Turing Award in 1988, and the Kyoto Prize in 2012.
Smalltalk is an object-oriented, dynamically typed, reflective programming language.
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
In object-oriented computer programming, the term SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.
The Soviet Union, officially the Union of Soviet Socialist Republics (USSR) was a socialist state in Eurasia that existed from 1922 to 1991.
Springer Science+Business Media or Springer, part of Springer Nature since 2015, is a global publishing company that publishes books, e-books and peer-reviewed journals in science, humanities, technical and medical (STM) publishing.
The state pattern is a behavioral software design pattern that implements a state machine in an object-oriented way.
Steve Yegge is a programmer and blogger who is known for writing about programming languages, productivity and software culture through his "Stevey's Drunken Blog Rants" site, followed by "Stevey's Blog Rants." He stopped blogging about programming topics in 2011.
In computer programming, the strategy pattern (also known as the policy pattern) is a behavioral software design pattern that enables selecting an algorithm at runtime.
In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable.
In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships between entities.
Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection (if/then/else) and repetition (while and for), block structures, and subroutines in contrast to using simple tests and jumps such as the go to statement, which can lead to "spaghetti code" that is potentially difficult to follow and maintain.
In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit.
In programming language theory, subtyping (also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which a subtype is a datatype that is related to another datatype (the supertype) by some notion of substitutability, meaning that program elements, typically subroutines or functions, written to operate on elements of the supertype can also operate on elements of the subtype.
Sun Microsystems, Inc. was an American company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the Network File System (NFS), and SPARC.
Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux.
In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express.
In the branch of mathematical logic known as type theory, System F<:, pronounced "F-sub", is an extension of system F with subtyping.
Tcl (pronounced "tickle" or tee cee ell) is a high-level, general-purpose, interpreted, dynamic programming language.
In software engineering, the template method pattern is a behavioral design pattern that defines the program skeleton of an algorithm in an operation, deferring some steps to subclasses.
The Third Manifesto (1995) is Christopher J. Date's and Hugh Darwen's proposal for future database management systems, a response to two earlier Manifestos with the same purpose.
this, self, and Me are keywords used in some computer programming languages to refer to the object, class, or other entity of which the currently running code is a part.
In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.
TIOBE programming community index is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands.
Sir Charles Antony Richard Hoare (born 11 January 1934), is a British computer scientist.
In computer programming, a trait is a concept used in object-oriented programming, which represents a set of methods that can be used to extend the functionality of a class.
In programming languages, a type system is a set of rules that assigns a property called type to the various constructs of a computer program, such as variables, expressions, functions or modules.
Types and Programming Languages,, is a book by Benjamin C. Pierce on type systems published in 2002.
The symbol underscore (_), also called underline, low line or low dash, is a character that originally appeared on the typewriter and was primarily used to underline words.
The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering, that is intended to provide a standard way to visualize the design of a system.
The UNIVAC I (UNIVersal Automatic Computer I) was the first commercial computer produced in the United States.
Unix (trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, development starting in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.
Ural (Урал) is a series of mainframe computers built in the former Soviet Union.
In software and systems engineering, a use case is a list of actions or event steps typically defining the interactions between a role (known in the Unified Modeling Language as an actor) and a system to achieve a goal.
UTF-8 is a variable width character encoding capable of encoding all 1,112,064 valid code points in Unicode using one to four 8-bit bytes.
In computer programming, a variable or scalar is a storage location (identified by a memory address) paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value.
A verb, from the Latin verbum meaning word, is a word (part of speech) that in syntax conveys an action (bring, read, walk, run, learn), an occurrence (happen, become), or a state of being (be, exist, stand).
In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates.
Visual Basic is a third-generation event-driven programming language and integrated development environment (IDE) from Microsoft for its Component Object Model (COM) programming model first released in 1991 and declared legacy during 2008.
Visual Basic.NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the.NET Framework.
Visual FoxPro is a discontinued data-centric, object-oriented, procedural, programming language produced by Microsoft.
Wirth's law, also known as Page's law, Gates' law and May's law, is a computing adage which states that software is getting slower more rapidly than hardware becomes faster.
Extensible Hypertext Markup Language (XHTML) is part of the family of XML markup languages.
In computing, Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.
.NET Framework (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows.
Checking type instead of membership, Criticism of object-oriented programming, Dot notation (object-oriented programming), History of object oriented programming, OOPL, Obect-oriented programming, Object Orientated, Object Oriented, Object Oriented Programming, Object decoupling, Object orentation, Object orientated, Object orientated programming, Object oriented, Object oriented language, Object oriented programing, Object oriented programming, Object oriented programming language, Object system, Object technology, Object-Oriented Programming, Object-Oriented programming, Object-orientated programming, Object-oriented, Object-oriented (programming), Object-oriented Programming, Object-oriented SQL, Object-oriented code, Object-oriented computer programming, Object-oriented computing, Object-oriented language, Object-oriented languages, Object-oriented programming language, Object-oriented programming languages, Object-oriented programming system, Object-oriented technology, Objected-oriented programming language, Principles of OOP.