The notable programming languages listed here are grouped by their notable language attribute. As a language can have multiple attributes, the same language can appear 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.
Clojure F# GOAL SARL
Array languages
Array programming (also termed vector or multidimensional) languages generalize operations on scalars to apply transparently to vectors, matrices, and higher-dimensional arrays.
A+ Ada Analytica APL Chapel Dartmouth BASIC Fortran (As of Fortran 90) FreeMat GAUSS Interactive Data Language (IDL) J Julia K MATLAB Octave
PL/I Q R Raku S Scilab S-Lang SequenceL Speakeasy Wolfram Mathematica (Wolfram language) X10 ZPL
Aspect-oriented programming languages
Aspect-oriented programming enables developers to add new functions to code, known as advice, without modifying that code. Instead, it uses a pointcut to implement the advice into code blocks.
Ada AspectJ Groovy Nemerle Raku
Assembly languages
Assembly languages directly correspond to a machine language (see below), 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.
Darwin Information Typing Architecture (DITA) Lasso PILOT TUTOR Authorware
Command-line interface languages
Command-line interface (CLI) languages are also called batch languages or job control languages. Examples:
4DOS (shell for IBM PCs) 4OS2 (shell for IBM PCs) Batch files for DOS and Windows COMMAND.COM command language for DOS and pre-Windows NT Windows cmd.exe command language for Windows NT sh ksh bash zsh CLIST (MVS Command List) CMS EXEC csh tcsh Hamilton C shell DIGITAL Command Language CLI for OpenVMS EXEC 2 Expect fish Nushell Windows PowerShell rc Rexx TACL (programming language)
Compiled languages
These are languages typically processed by compilers, though theoretically any language can be compiled or interpreted.
ArkTS ActionScript Ada ALGOL 58 JOVIAL NELIAC ALGOL 60 SMALL ALGOL 68 Ballerina (bytecode runtime) BASIC (including the first version of Dartmouth BASIC) BCPL C C++ C# (into CIL runtime) Ceylon (into JVM bytecode) CHILL Clipper 5.3 CLEO for Leo computers Clojure (into JVM bytecode) COBOL Cobra Common Lisp Crystal Curl D DASL→Java, JavaScript (JS), JSP, Flex.war Delphi (Borland's Object Pascal development system) DIBOL Dylan Eiffel Sather Ubercode Elm Emacs Lisp Emerald Erlang Factor Fortran GAUSS Go Gosu (into JVM bytecode) Groovy (into JVM bytecode) Haskell Harbour HolyC Inform (usually story files for Glulx or Z-code) Java (into JVM bytecode, also supports GraalVM Native Image for native binaries) JOVIAL Julia (on the fly to machine code) Kotlin (into JVM bytecode, also supports Kotlin/Native which uses LLVM to produce binaries) LabVIEW Mercury Mesa Nemerle (into intermediate language bytecode) Nim Objective-C P Pascal (most implementations) PL/I Plus Pony Python (to intermediate VM bytecode) RPG (Report Program Generator) Red Rust Scala (into JVM bytecode)) Scheme (e.g. Gambit) SequenceL Simula Smalltalk platform independent VM bytecode Swift ML Standard ML (SML) Alice OCaml F# (into CIL, generates runtime) Turing V (Vlang) Vala Visual Basic (CIL JIT runtime) Visual FoxPro Visual Prolog Xojo Zig
Concatenative programming languages
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.
Factor Forth jq (function application is also supported) Joy PostScript Raku
Concurrent languages
Message passing 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 (CSP) or the π-calculus.
Ada Alef Ateji PX Ballerina C++ (since C++11) ChucK Cilk Cω (through asynchronous communication) Clojure Chapel Co-array Fortran Concurrent Pascal Curry E Eiffel (through the SCOOP mechanism, Simple Concurrent Object-Oriented Computation) Elixir Emerald (through threads and monitors) Erlang (through asynchronous message passing with nothing shared) Gambit Scheme (using the Termite library) Gleam Go Haskell (through concurrent, distributed, and parallel programming across multiple machines) Java Join Java X10 Julia Joule (through message passing) LabVIEW Limbo MultiLisp (through extended parallelism capabilities) OCaml occam occam-π Orc Oz (through shared-state and message-passing concurrency, and futures, and Mozart Programming System cross-platform Oz) P Pony Pict Python (through thread-based parallelism and process-based parallelismDocumentation » The Python Standard Library » Concurrent Execution) Raku Rust Scala SequenceL SR V (Vlang) Unified Parallel C XProc
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.
Claire Constraint Handling Rules CHIP ECLiPSe Kaleidoscope Oz Raku
Contract languages Design by contract (or contract programming) is programming using defined preconditions, postconditions, and invariants.
Ada (since Ada 2012) Ciao Clojure Cobra C++ (since C++26) D Dafny Eiffel Fortress Kotlin Mercury Oxygene (formerly Chrome and Delphi Prism) Racket (including higher order contracts, and emphasizing that contract violations must blame the guilty party and must do so with an accurate explanationFindler, Felleisen Contracts for Higher-Order Functions) Sather ScalaStrong typing as another "contract enforcing" in Scala, see discussion at scala-lang.org/. SPARK (via static analysis of Ada programs) Vala Vienna Development Method (VDM)
Curly bracket languages 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 (1966), and was popularized by C. Many curly bracket languages descend from or are strongly influenced by C. Examples:
ABCL/c+ Alef AWK ArkTS B bc BCPL Ballerina C C++ C# Ceylon Chapel ChucK Cilk Cyclone D Dart DASL – based on Java E ECMAScript AssemblyScript ActionScript ECMAScript for XML JavaScript JScript TypeScript GLSL Go HLSL Java Processing Groovy Join Java Kotlin Tea X10 Limbo LPC MEL Nemerle (curly braces optional) Objective-C PCASTL Perl PHP Pico Pike PowerShell R Raku Rust S-Lang Scala (curly-braces optional) sed Solidity SuperCollider Swift Tcl UnrealScript V (Vlang) Yorick YASS Zig
Dataflow languages Dataflow programming languages rely on a (usually visual) representation of the flow of data to specify the program. Often used to react to discrete events or to process streams of data. Dataflow languages include:
Analytica Ballerina Binary Modular Dataflow Machine (BMDFM) CMS Pipelines G (used in LabVIEW) Lucid Max Oz Prograph Pure Data Reaktor StreamBase StreamSQL EventFlow Swift (parallel scripting language) VEE VHDL VisSim Vvvv WebMethods Flow
Data-oriented languages Data-oriented languages provide powerful ways to search and manipulate the relations that have been described as entity relationship tables, which map one set of things into other sets. Data-oriented languages include:
Associative Programming Language Clarion Clipper dBase Gremlin MUMPS Caché ObjectScript RETRIEVE RDQL SPARQL SQL Visual FoxPro Wolfram Mathematica (Wolfram language)
Decision table languages Decision tables 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:
Filetab
Declarative languages
Declarative languages express the logic of a computation without describing its control flow in detail. Declarative programming stands in contrast to imperative programming via imperative programming languages, where control flow is specified by serial orders (imperatives). (Pure) functional and logic-based programming languages are also declarative, and constitute the major subcategories of the declarative category. This section lists additional examples not in those subcategories.
Analytica Ant (combine declarative programming and imperative programming) Curry Cypher Datalog Distributed Application Specification Language (DASL) (combine declarative programming and imperative programming) ECL Gremlin Inform (combine declarative programming and imperative programming) Lustre Mercury Metafont MetaPost Modelica Nix Prolog QML Oz RDQL SequenceL SPARQL SQL (Only DQL, not DDL, DCL, and DML) Soufflé VHDL (supports declarative programming, imperative programming, and functional programming) Wolfram Mathematica (Wolfram language) WOQL (TerminusDB) xBase XSL Transformations
Embeddable languages
In source code Source embeddable languages embed small pieces of executable code inside a piece of free-form text, often a web page.
Client-side embedded languages are limited by the abilities of the browser or intended client. They aim to provide dynamism to web pages without the need to recontact the server.
Server-side embedded languages are much more flexible, since almost any language can be built into a server. The aim of having fragments of server-side code embedded in a web page is to generate additional markup dynamically; the code itself disappears when the page is served, to be replaced by its output.
Server side PHP VBScript Tcl – server-side in NaviServer and an essential component in electronics industry systems
The above examples are particularly dedicated to this purpose. A large number of other languages, such as Erlang, Scala, Perl and Ruby can be adapted (for instance, by being made into Apache modules).
Client side ActionScript JavaScript (aka ECMAScript or JScript) VBScript (Windows only)
In object code A wide variety of dynamic or scripting languages can be embedded in compiled executable code. Basically, object code for the language's interpreter needs to be linked into the executable. Source code fragments for the embedded language can then be passed to an evaluation function as strings. Application control languages can be implemented this way, if the source code is input by the user. Languages with small interpreters are preferred.
AngelScript Ch EEL Io jq (C and Go) Julia Lua Luau Python Ruby (via mruby) Squirrel Tcl
Educational programming languages
Languages developed primarily for the purpose of teaching and learning of programming.
Alice Blockly Catrobat COMAL Elan Emerald Ezhil Hedy Logo Modula-2 Pascal PL/C Racket Scheme Scratch Snap! SP/k Turing Wolfram Mathematica (Wolfram language)
Esoteric languages