Abstraction (computer science)

Data abstraction levels of a database system

In software engineering and computer science, abstraction is:

- Abstraction (computer science)

152 related topics

Relevance

Lambda calculus

Hilbert in 1912

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.

Software architecture

Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems.

Software_Architecture_Activities
4+1 architectural view model.

Macroscopic system structure: this refers to architecture as a higher-level abstraction of a software system that consists of a collection of computational components together with connectors that describe the interaction between these components.

Programming language

Any set of rules that converts strings, or graphical program elements in the case of visual programming languages, to various kinds of machine code output.

The source code for a simple computer program written in the C programming language. The gray lines are comments that help explain the program to humans in a natural language. When compiled and run, it will give the output "Hello, world!".
A selection of programming language textbooks; only a few of the thousands available.
Parse tree of Python code with inset tokenization
Syntax highlighting is often used to aid programmers in recognizing elements of source code. The language above is Python.

Programming languages usually contain abstractions for defining and manipulating data structures or controlling the flow of execution. The practical necessity that a programming language support adequate abstractions is expressed by the abstraction principle. This principle is sometimes formulated as a recommendation to the programmer to make proper use of such abstractions.

Scripting language

Programming language for a runtime system that automates the execution of tasks that would otherwise be performed individually by a human operator.

The source code for a simple computer program written in the C programming language. The gray lines are comments that help explain the program to humans in a natural language. When compiled and run, it will give the output "Hello, world!".

Scripting languages typically use abstraction, a form of information hiding, to spare users the details of internal variable types, data storage, and memory management.

Object-oriented programming

Programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods).

UML notation for a class. This Button class has variables for data, and functions. Through inheritance a subclass can be created as subset of the Button class. Objects are instances of a class.
The TIOBE programming language popularity index graph from 2002 to 2018. In the 2000s the object-oriented Java (blue) and the procedural C (black) competed for the top position.

At ETH Zürich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier).

C++

General-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes".

Bjarne Stroustrup, the creator of C++, in his AT&T New Jersey office c. 2000
A quiz on C++11 features being given in Paris in 2015
Scene during the C++ standards committee meeting in Stockholm in 1996
The draft "Working Paper" standard that became approved as C++98; half of its size was devoted to the C++ Standard Library.

C++ introduces object-oriented programming (OOP) features to C. It offers classes, which provide the four features commonly present in OOP (and some non-OOP) languages: abstraction, encapsulation, inheritance, and polymorphism.

Semantics (computer science)

Field concerned with the rigorous mathematical study of the meaning of programming languages.

The lowercase Greek letter λ (lambda) is an unofficial symbol of the field of programming-language theory. This usage derives from the lambda calculus, a model of computation introduced by Alonzo Church in the 1930s and widely used by programming-language researchers. It graces the cover of the classic text Structure and Interpretation of Computer Programs, and the title of the so-called Lambda Papers of 1975 to 1980, written by Gerald Jay Sussman and Guy Steele, the developers of the Scheme programming language.

It is also possible to relate multiple semantics through abstractions via the theory of abstract interpretation.

Abstract data type

Abstract data type is a mathematical model for data types.

Charles Babbage, sometimes referred to as the "father of computing".

The notion of abstract data types is related to the concept of data abstraction, important in object-oriented programming and design by contract methodologies for software development.

View (SQL)

Result set of a stored query on the data, which the database users can query just as they would in a persistent database collection object.

An SQL select statement and its result

Just as a function (in programming) can provide abstraction, so can a database view.

Leaky abstraction

The TEAF Matrix of Views and Perspectives.

In software development, a leaky abstraction is an abstraction that leaks details that it is supposed to abstract away.