Ambiguity is a type of meaning in which several interpretations are plausible.
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.
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 computer science, coinduction is a technique for defining and proving properties of systems of concurrent interacting objects.
Composability is a system design principle that deals with the inter-relationships of components.
Computational linguistics is an interdisciplinary field concerned with the statistical or rule-based modeling of natural language from a computational perspective, as well as the study of appropriate computational approaches to linguistic questions.
Computational semiotics is an interdisciplinary field that applies, conducts, and draws on research in logic, mathematics, the theory and practice of computation, formal and natural language studies, the cognitive sciences generally, and semiotics proper.
Computer science deals with the theoretical foundations of information and computation, together with practical techniques for the implementation and application of these foundations.
In formal language theory and computer programming, string concatenation is the operation of joining character strings end-to-end.
Concurrent computing is a form of computing in which several computations are executed during overlapping time periods—concurrently—instead of sequentially (one completing before the next starts).
In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument.
A filter is a computer program or subroutine to process a stream, producing another stream.
In computer science, a programming language is said to have first-class functions if it treats functions as first-class citizens.
In functional programming, fold (also termed reduce, accumulate, aggregate, compress, or inject) refers to a family of higher-order functions that analyze a recursive data structure and through use of a given combining operation, recombine the results of recursively processing its constituent parts, building up a return value.
Forth is an imperative stack-based computer programming language and environment originally designed by Charles "Chuck" Moore.
In mathematics, a function was originally the idealization of how a varying quantity depends on another quantity.
In mathematics, function composition is the pointwise application of one function to the result of another to produce a third function.
In mathematics, functional decomposition is the process of resolving a functional relationship into its constituent parts in such a way that the original function can be reconstructed (i.e., recomposed) from those parts by function composition.
Haskell is a standardized, general-purpose compiled purely functional programming language, with non-strict semantics and strong static typing.
In mathematics and computer science, a higher-order function (also functional, functional form or functor) is a function that does at least one of the following.
In computer programming, homoiconicity (from the Greek words homo meaning the same and icon meaning representation) is a property of some programming languages in which the program structure is similar to its syntax, and therefore the program's internal representation can be inferred by reading the text's layout.
In computer science, imperative programming is a programming paradigm that uses statements that change a program's state.
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 functional programming, an iteratee is a composable abstraction for incrementally processing sequentially presented chunks of input data in a purely functional fashion.
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.
Lambda calculus (also written as λ-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.
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.
Mathematics (from Greek μάθημα máthēma, "knowledge, study, learning") is the study of such topics as quantity, structure, space, and change.
In functional programming, a monad is a design pattern that defines how functions, actions, inputs, and outputs can be used together to build generic types, with the following organization.
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.
Perl 6 is a member of the Perl family of programming languages.
In software engineering, a pipeline consists of a chain of processing elements (processes, threads, coroutines, functions, etc.), arranged so that the output of each element is the input of the next; the name is by analogy to a physical pipeline.
In Unix-like computer operating systems, a pipeline is a sequence of processes chained together by their standard streams, so that the output of each process (stdout) feeds directly as input (stdin) to the next one.
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.
In mathematics, semantics, and philosophy of language, the principle of compositionality is the principle that the meaning of a complex expression is determined by the meanings of its constituent expressions and the rules used to combine them.
Python is an interpreted high-level programming language for general-purpose programming.
Rakudo Perl 6 (or simply "Rakudo") is a Perl 6 compiler targeting MoarVM, and the Java Virtual Machine, that implements the Perl 6 specification.
Referential transparency and referential opacity are properties of parts of computer programs.
Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language.
In computer science, run time, runtime or execution time is the time during which a program is running (executing), in contrast to other program lifecycle phases such as compile time, link time and load time.
Scheme is a programming language that supports multiple paradigms, including functional programming and imperative programming, and is one of the two main dialects of Lisp.
A stack-oriented programming language is one that relies on a stack machine model for passing parameters.
In computer science, a stream is a sequence of data elements made available over time.
In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit.
The annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL) is an academic conference in the field of computer science, with focus on fundamental principles in the design, definition, analysis, and implementation of programming languages, programming systems, and programming interfaces.
The Art of Unix Programming by Eric S. Raymond is a book about the history and culture of Unix programming from its earliest days in 1969 to 2003 when it was published, covering both genetic derivations such as BSD and conceptual ones such as Linux.
In computer science, an operator or function is variadic if it can take a varying number of arguments; that is, if its arity is not fixed.
Virtual inheritance is a C++ technique that ensures only one copy of a base class's member variables are inherited by grandchild derived classes.