Charles Babbage, sometimes referred to as the "father of computing".
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!".
Ada Lovelace published the first algorithm intended for processing on a computer.
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 language theory is a subfield of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages.

- Programming language

Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and their individual features.

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

8 related topics with Alpha

Overall

A data structure known as a hash table.

Data structure

1 links

A data structure known as a hash table.

In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data.

Some formal design methods and programming languages emphasize data structures, rather than algorithms, as the key organizing factor in software design.

Flowchart of an algorithm (Euclid's algorithm) for calculating the greatest common divisor (g.c.d.) of two numbers a and b in locations named A and B. The algorithm proceeds by successive subtractions in two loops: IF the test B ≥ A yields "yes" or "true" (more accurately, the number b in location B is greater than or equal to the number a in location A) THEN, the algorithm specifies B ← B − A (meaning the number b − a replaces the old b). Similarly, IF A > B, THEN A ← A − B. The process terminates when (the contents of) B is 0, yielding the g.c.d. in A. (Algorithm derived from Scott 2009:13; symbols and drawing style from Tausworthe 1977).

Algorithm

1 links

Flowchart of an algorithm (Euclid's algorithm) for calculating the greatest common divisor (g.c.d.) of two numbers a and b in locations named A and B. The algorithm proceeds by successive subtractions in two loops: IF the test B ≥ A yields "yes" or "true" (more accurately, the number b in location B is greater than or equal to the number a in location A) THEN, the algorithm specifies B ← B − A (meaning the number b − a replaces the old b). Similarly, IF A > B, THEN A ← A − B. The process terminates when (the contents of) B is 0, yielding the g.c.d. in A. (Algorithm derived from Scott 2009:13; symbols and drawing style from Tausworthe 1977).
Ada Lovelace's diagram from "note G", the first published computer algorithm
Logical NAND algorithm implemented electronically in 7400 chip
Flowchart examples of the canonical Böhm-Jacopini structures: the SEQUENCE (rectangles descending the page), the WHILE-DO and the IF-THEN-ELSE. The three structures are made of the primitive conditional GOTO (IF test THEN GOTO step xxx, shown as diamond), the unconditional GOTO (rectangle), various assignment operators (rectangle), and HALT (rectangle). Nesting of these structures inside assignment-blocks result in complex diagrams (cf. Tausworthe 1977:100, 114).
The example-diagram of Euclid's algorithm from T.L. Heath (1908), with more detail added. Euclid does not go beyond a third measuring and gives no numerical examples. Nicomachus gives the example of 49 and 21: "I subtract the less from the greater; 28 is left; then again I subtract from this the same 21 (for this is possible); 7 is left; I subtract this from 21, 14 is left; from which I again subtract 7 (for this is possible); 7 is left, but 7 cannot be subtracted from 7." Heath comments that "The last phrase is curious, but the meaning of it is obvious enough, as also the meaning of the phrase about ending 'at one and the same number'."(Heath 1908:300).
A graphical expression of Euclid's algorithm to find the greatest common divisor for 1599 and 650.
"Inelegant" is a translation of Knuth's version of the algorithm with a subtraction-based remainder-loop replacing his use of division (or a "modulus" instruction). Derived from Knuth 1973:2–4. Depending on the two numbers "Inelegant" may compute the g.c.d. in fewer steps than "Elegant".
Alan Turing's statue at Bletchley Park

In mathematics and computer science, an algorithm is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation.

Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).

Structure of the syntactically well-formed, although nonsensical, English sentence, "Colorless green ideas sleep furiously" (historical example from Chomsky 1957).

Formal language

1 links

Structure of the syntactically well-formed, although nonsensical, English sentence, "Colorless green ideas sleep furiously" (historical example from Chomsky 1957).
This diagram shows the syntactic divisions within a formal system. Strings of symbols may be broadly divided into nonsense and well-formed formulas. The set of well-formed formulas is divided into theorems and non-theorems.

In logic, mathematics, computer science, and linguistics, a formal language consists of words whose letters are taken from an alphabet and are well-formed according to a specific set of rules.

In computer science, formal languages are used among others as the basis for defining the grammar of programming languages and formalized versions of subsets of natural languages in which the words of the language represent concepts that are associated with particular meanings or semantics.

Argument terminology used in logic

Logic

1 links

Study of correct reasoning or good arguments.

Study of correct reasoning or good arguments.

Argument terminology used in logic
Aristotle, 384–322 BCE.
A depiction from the 15th century of the square of opposition, which expresses the fundamental dualities of syllogistic.

Logic is studied in and applied to various fields, such as philosophy, mathematics, computer science, and linguistics.

Intuitionistic logic is of great interest to computer scientists, as it is a constructive logic and sees many applications, such as extracting verified programs from proofs and influencing the design of programming languages through the formulae-as-types correspondence.

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.

Programming language theory

0 links

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.

Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages and of their individual features.

Semantics (computer science)

0 links

In programming language theory, semantics is the rigorous mathematical study of the meaning of programming languages.

It has close links with other areas of computer science such as programming language design, type theory, compilers and interpreters, program verification and model checking.

An artistic representation of a Turing machine. Turing machines are frequently used as theoretical models for computing.

Theory of computation

0 links

Branch that deals with what problems can be solved on a model of computation, using an algorithm, how efficiently they can be solved or to what degree .

Branch that deals with what problems can be solved on a model of computation, using an algorithm, how efficiently they can be solved or to what degree .

An artistic representation of a Turing machine. Turing machines are frequently used as theoretical models for computing.
Set inclusions described by the Chomsky hierarchy
A representation of the relation among complexity classes

Perhaps the most important open problem in all of computer science is the question of whether a certain broad class of problems denoted NP can be solved efficiently.

Regular expressions, for example, specify string patterns in many contexts, from office productivity software to programming languages.

Type system

0 links

In computer science, particularly programming languages, a type system is a logical system comprising a set of rules that assigns a property called a type to every "term", usually the various constructs of a computer program, such as variables, expressions, functions or modules.