Programming languages are (generally) human-friendly means of getting a computer to do something interesting on a human's behalf. Some languages may be friendlier than others; where opinions will genuinely differ as to which are friendlier, there are some that deliberately seek to be as obtuse and unreadable as possible, and those are usually called "esoteric" programming languages and fit into their own category of madness.

See also Language Places and PLZoo

See also language reading and language development

Language collection/explorations

It may be fair to suggest that any language is a transformation, but there is a special meaning to the term "program transformation" -- see here for more details. Spoofax is one of these.

"Every configuration file becomes a Turing-complete language eventually." --James Gosling

Every simple language will eventually end up Turing complete

Language concepts

"The 7 ur-languages", captured here: ALGOL, Lisp, ML, Self, Forth, APL, Prolog


Toward a better programming

"Programming Paradigms for Dummies: What Every Programmer Should Know"; includes a chart of the major programming paradigms:

Declarative, imperative, functional, constraint, logic, relational, concurrent, dataflow, synchronous, mesage-passing, event-loop, object-oriented, stateful, shared-state

My ontology:

"Programming Language Explorations" suggested tags: declarative, imperative, applicative, functional, logic, von Neumann, object-oriented, expression-oriented, persistent, concurrent, reactive, dataflow, stack, free-form, curly brace, visual, compiled, interpreted, very high-level, system, scripting, glue, intermediate, esoteric, toy, educational, domain-specific

Memory management

Languages often break down to automatically-managed memory vs. manually-managed, but most of the time that means heap management; static and stack allocation are (almost?) always automatically managed by virtue of their allocation schemes.

Language execution types

Note that the lines are significantly blurring; several "interpreted" languages internally compile the source into an AST or bytecode format for faster execution, and several "compiled" languages are available to run at the command-line a la shell scripts or REPLs by internally taking source through their compilation pipeline and executing the result.

In the long run, the key differentiator around "compiled vs interpreted" may be solely whether the tool/language does ahead-of-time error-checking.


A type system (a system in which one can define and/or declare types) is the mechanism by which the language detects errors either ahead of time (during compilation) or at runtime.

Runtime Introspection and Modification

Types can often be inspected at runtime regardless of the type-safe or type-checked nature of the language/platform; in many languages/platforms, the process of inspection is known as "reflection".

If the types can be manipulated/changed at runtime, then the language is often said to be a "MetaObject Protocol" language, meaning that it can operate at a "meta-object" level. These tend to be dynamically-type-checked/weakly-type-safe interpreted languages, since it is hard to enforce type-safety when types changing up at runtime.


From ; need to edit and integrate

Programming languages Lists

Please read contribution guidelines before contributing.




Explicit logical parallelism

Multi paradigm




From; need to edit and integrate


GitHub forks
GitHub stars
GitHub contributors


A (38):

B (36):

C (52):

D (24):

E (32):

F (42):

G (29):

H (21):

I (12):

J (15):

K (17):

L (24):

M (47):

N (25):

O (21):

P (45):

Q (7):

R (33):

S (41):

T (23):

U (6):

V (15):

W (11):

X (10):

Y (4):

Z (6):

See also:

Detail Pages:

Last modified 05 February 2024