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:
- General-purpose languages — C, Python, Java, Haskell, and any language designed without a fixed application domain
- Domain-specific languages (DSLs) — SQL, MATLAB, GLSL, Gherkin, and languages designed for a specific problem space
- Assembly languages — x86, MIPS, ARM — because they are distinct languages, not merely encodings
- Esoteric and joke languages — Brainfuck, Malbolge, Shakespeare — because they advance our understanding of what computation can be expressed as
- Intermediate representations — LLVM IR, JVM bytecode — when they are themselves used as languages by other languages
- Historical languages — languages that are no longer in use but were formally specified and had real users
- Experimental and research languages — languages from academic papers that were implemented, even if never widely used
What we do not include
- Markup languages — HTML and XML are not programming languages; they have no computational semantics beyond structure
- Configuration formats — JSON, YAML, TOML are not languages; they have no computational semantics (though CUE, Dhall, and Jsonnet, which add computation, are included)
- Template systems — Jinja2 and Handlebars on their own are not languages (though Jinja2 combined with Python logic may qualify at the edges)
- Proprietary internal languages — internal languages with no public specification and no external users
- Proposed but unimplemented languages — a language must have had a working implementation to be listed
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.
Confidence levels
Historical records on programming languages are often incomplete, contradictory, or lost entirely. We assign every entry one of three confidence levels:
| Level | Meaning | Source requirement |
|---|---|---|
| ✓ Verified | Core facts (name, year, creator, paradigm) are confirmed by at least two independent primary or secondary sources. | Academic paper, official documentation, or contemporaneous publication |
| ~ Partial | At 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 review | The 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
- HOPL — History of Programming Languages (hopl.info) — the most comprehensive academic database of programming language history, curated by researchers
- Sammet, Jean E. (1969) — Programming Languages: History and Fundamentals. Prentice-Hall. The first systematic survey.
- Wexelblat, Richard L. (ed., 1981) — History of Programming Languages. Academic Press. Transcripts of the first HOPL conference.
- Sebesta, Robert W. — Concepts of Programming Languages. Multiple editions covering paradigm classifications.
- Proceedings of HOPL I (1978), HOPL II (1993), HOPL III (2007), HOPL IV (2020) — Primary sources for language origin stories from creators
- TIOBE Index — Monthly industry usage rankings based on search engine queries
- Stack Overflow Developer Survey — Annual survey of ~90,000 developers covering language use, love, and job market
- GitHub Octoverse — Repository and pull request data by language
- IEEE Spectrum Top Programming Languages — Annual ranking combining multiple weighted metrics
- Wikipedia — List of programming languages — Used as a cross-reference, not a primary source
- Official language documentation and specification documents — For technical details on type systems, memory models, and paradigm classification
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
- Adding confidence levels and status labels to every A–Z entry
- Individual language pages with full profiles, hello-world examples, and influence graphs
- A contributor review system for corrections and additions
- Downloadable dataset in JSON and CSV formats
- Last-verified dates on all entries
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.