What counts as a programming language?

This is the hardest question in the field. There is no universal definition, and every boundary is contested. Our working definition is:

A programming language is a formal notation with defined syntax and semantics, capable of expressing computations, and intended to be executed or transformed by a machine.

Under this definition, we include:

What we do not include

The claim of 8,945+ languages documented in our headline is based on the total count in the historical record including Sammet (1969), Wexelblat (1981), the HOPL database, and our own cataloguing. The A–Z directory currently shows a curated subset of well-documented entries.

Status labels

Every entry carries one or more status labels. These are editorial judgements based on available evidence, not automated classifications.

Mainstream
Mainstream
In active industrial use by large numbers of professional developers. Appears consistently in TIOBE Top 20, Stack Overflow surveys, and major job boards.
Active
Active
Has had a commit, release, or community activity within the last 24 months. Not necessarily mainstream but genuinely alive.
Historical
Historical
No longer in active development but was once used in production. FORTRAN 66, COBOL 74, and early BASICs are historical versions of living languages.
Dead
Dead
No known active users, no maintenance, no community. The language has ceased to exist as a practical tool.
Academic
Academic
Primarily used in research and teaching. May have excellent properties but has not crossed into industrial use. Coq, Agda, and many theorem provers qualify.
Esoteric
Esoteric
Designed as an experiment, art project, or joke rather than for practical programming. Brainfuck, Malbolge, Piet, and Whitespace are esoteric languages.
DSL
Domain-Specific
Designed for a specific problem domain — SQL for relational data, GLSL for shaders, Gherkin for test specifications, TeX for typesetting.

Confidence levels

Historical records on programming languages are often incomplete, contradictory, or lost entirely. We assign every entry one of three confidence levels:

LevelMeaningSource requirement
✓ VerifiedCore facts (name, year, creator, paradigm) are confirmed by at least two independent primary or secondary sources.Academic paper, official documentation, or contemporaneous publication
~ PartialAt least one reliable source confirms the entry, but some details (exact year, creator name, or paradigm classification) are uncertain or disputed.One reliable source; secondary facts from curated databases
? Needs reviewThe entry is based on a single source, a community database entry, or internal knowledge without independent verification. Treat with caution.Single source, Wikipedia, or community database only

Primary sources

References and databases consulted

Paradigm classification

Paradigm classification is inherently editorial. Most modern languages support multiple paradigms — Python is procedural, object-oriented, and functional. We classify by primary paradigm (what the language was designed around or is most commonly used as) with secondary paradigms noted where relevant.

Our paradigm taxonomy follows the classifications established in the HOPL database and Sebesta's Concepts of Programming Languages, with additions for paradigms that emerged after those publications (reactive, dataflow, array, actor-model).

Dates and creator attribution

We use the date of first public implementation or publication, not the date a language was formally standardised. For languages developed internally before public release, we note the earliest confirmed date in the historical record. Creator attribution follows the primary inventor or design team; for committee-designed languages (COBOL, Ada, SQL), we note the committee and key individuals.

What we are working on

Corrections and contributions

If you find an error, a missing language, or a disputed fact, we want to know. Our editorial standard is accuracy above completeness — we would rather have fewer well-sourced entries than more poorly-sourced ones.

The dataset behind this site will eventually be open. Until then, contact us via the information on the homepage.