List of programming languages by type


This is a list of notable programming languages, grouped by notable language attribute. As a language can have multiple attributes, the same language can be in multiple groupings.

Agent-oriented programming languages

Agent-oriented programming allows the developer to build, extend and use software agents, which are abstractions of objects that can message other agents.
languages generalize operations on scalars to apply transparently to vectors, matrices, and higher-dimensional arrays.
Aspect-oriented programming enables developers to add new functionality to code, known as "advice", without modifying that code itself; rather, it uses a pointcut to implement the advice into code blocks.
s directly correspond to a machine language, so machine code instructions appear in a form understandable by humans, although there may not be a one-to-one mapping between an individual statement and an individual instruction. Assembly languages let programmers use symbolic addresses, which the assembler converts to absolute or relocatable addresses. Most assemblers also support macros and symbolic constants.

Authoring languages

An authoring language is a programming language designed for use by a non-computer expert to easily create tutorials, websites, and other interactive computer programs.
Command-line interface languages are also called batch languages or job control languages. Examples:
These are languages typically processed by compilers, though theoretically any language can be compiled or interpreted.
A concatenative programming language is a point-free computer programming language in which all expressions denote functions, and the juxtaposition of expressions denotes function composition.
languages provide language constructs for concurrency. The predominant paradigm for concurrency in mainstream languages such as Java is shared memory concurrency. Concurrent languages that make use of message passing have generally been inspired by process calculi such as communicating sequential processes or the π-calculus.
  • Ada – multi-purpose language
  • Alef – concurrent language with threads and message passing, used for systems programming in early versions of Plan 9 from Bell Labs
  • Ateji PX – an extension of the Java language for parallelism
  • Ballerina – a language designed for implementing and orchestrating micro-services. Provides a message based parallel-first concurrency model.
  • C++
  • ChucKdomain specific programming language for audio, precise control over concurrency and timing
  • Cilk – a concurrent C
  • – C Omega, a research language extending C#, uses asynchronous communication
  • Clojure – a dialect of Lisp for the Java virtual machine
  • Chapel
  • Co-array Fortran
  • Concurrent Pascal
  • Curry
  • E – uses promises, ensures deadlocks cannot occur
  • Eiffel
  • Elixir
  • Emerald – uses threads and monitors
  • Erlang – uses asynchronous message passing with nothing shared
  • Gambit Scheme – using the Termite library
  • Gleam
  • Go
  • Haskell – supports concurrent, distributed, and parallel programming across multiple machines
  • Java
  • * Join Java – concurrent language based on Java
  • * X10
  • Julia
  • Joule – dataflow language, communicates by message passing
  • LabVIEW
  • Limbo – relative of Alef, used for systems programming in Inferno
  • MultiLisp – Scheme variant extended to support parallelism
  • OCaml
  • occam – influenced heavily by Communicating Sequential Processes
  • * occam-π – a modern variant of occam, which incorporates ideas from Milner's π-calculus
  • Orc
  • Oz – multiparadigm language, supports shared-state and message-passing concurrency, and futures, and Mozart Programming System cross-platform Oz
  • P
  • Pony
  • Pict – essentially an executable implementation of Milner's π-calculus
  • Python – uses thread-based parallelism and process-based parallelism
  • Raku
  • Rust
  • Scala – implements Erlang-style actors on the JVM
  • SequenceL – purely functional, automatically parallelizing and race-free
  • SR – research language
  • V
  • Unified Parallel C
  • XProc – XML processing language, enabling concurrency

    Constraint programming languages

A constraint programming language is a declarative programming language where relationships between variables are expressed as constraints. Execution proceeds by attempting to find values for the variables which satisfy all declared constraints.
is programming using defined preconditions, postconditions, and invariants.
A curly bracket or curly brace language has syntax that defines a block as the statements between curly brackets, a.k.a. braces, . This syntax originated with BCPL, and was popularized by C. Many curly bracket languages descend from or are strongly influenced by C. Examples:
languages rely on a representation of the flow of data to specify the program. Frequently used for reacting to discrete events or for processing streams of data. Examples of dataflow languages include:
Data-oriented languages provide powerful ways of searching and manipulating the relations that have been described as entity relationship tables which map one set of things into other sets. Examples of data-oriented languages include:
s can be used as an aid to clarifying the logic before writing a program in any language, but in the 1960s a number of languages were developed where the main logic is expressed directly in the form of a decision table, including: