{{Short description|List of programming languages types and the languages that meet its description}} {{Cleanup|date=April 2026|reason=Descriptions of languages are not needed in this list. Only list the language and additional relevant information if it is not obvious what makes it constitute a type of programming language.}} {{Programming language lists}} This is a list of notable [[programming language]]s, grouped by notable language attribute. As a language can have multiple attributes, the same language can be in multiple groupings.

== Agent-oriented programming languages == {{main|Agent-oriented programming}}

Agent-oriented programming allows the developer to build, extend and use [[software agent]]s, which are abstractions of objects that can message other agents.

* [[Clojure]] * [[F Sharp (programming language)|F#]] * [[GOAL agent programming language|GOAL]] * [[SARL (programming language)|SARL]]

== Array languages == {{Main category|Array programming languages}}

[[Array programming]] (also termed ''vector'' or ''multidimensional'') languages generalize operations on [[Scalar (mathematics)|scalars]] to apply transparently to [[Vector (mathematics)|vector]]s, [[Matrix (mathematics)|matrices]], and [[higher-dimensional array]]s.

{{div col|colwidth=8em}} * [[A+ (programming language)|A+]] * [[Ada (programming language)|Ada]] * [[Analytica (software)|Analytica]] * [[APL (programming language)|APL]] * [[Chapel (programming language)|Chapel]] * [[Dartmouth BASIC]] * [[Fortran]] (As of [[Fortran 90]]) * [[FreeMat]] * [[GAUSS (software)|GAUSS]] * [[Interactive Data Language]]&nbsp;(IDL) * [[J (programming language)|J]] * [[Julia (programming language)|Julia]] * [[K (programming language)|K]] * [[MATLAB]] * [[GNU Octave|Octave]] <!-- [[Python (programming language)|Python]] maybe with Numpy, but not Python alone: * --> * [[PL/I]] * [[Q (programming language from Kx Systems)|Q]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.raku.org/language/operators#Operators |title=Operators |access-date=2024-05-13}}</ref> * [[S (programming language)|S]] * [[Scilab]] * [[S-Lang]] * [[SequenceL]] * [[Speakeasy (computational environment)|Speakeasy]] * [[Wolfram Mathematica]] ([[Wolfram language]]) * [[X10 (programming language)|X10]] * [[ZPL (programming language)|ZPL]] {{div col end}}

== Aspect-oriented programming languages == {{main|Aspect-oriented programming}}

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 (programming language)|Ada]] * [[AspectJ]] * [[Apache Groovy|Groovy]] * [[Nemerle]] * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.raku.org/routine/wrap |title=wrap}}</ref><ref>{{cite web|url=https://conf.raku.org/talk/142 |title="Aspects in Raku"}}</ref>

== Assembly languages ==

{{main|Assembly language}} {{Main list| Comparison of assemblers}}

[[Assembly language]]s directly correspond to a [[machine language]] (see [[#Machine languages|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 [[Assembly language assembler|assembler]] converts to absolute or [[Relocation (computing)|relocatable]] addresses. Most assemblers also support [[Macro (computer science)|macros]] and [[Constant (computer programming)|symbolic constant]]s.

== Authoring languages ==

{{Main|Authoring language}}

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 (programming language)|Lasso]] * [[PILOT]] * [[TUTOR]] * [[Adobe Authorware|Authorware]]

== Command-line interface languages ==

{{main|Command-line interface}} {{Disputed section|CLI ¬= scripting|date=July 2025}}

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 file]]s for [[DOS]] and [[Microsoft Windows|Windows]] ** [[COMMAND.COM]] command language for DOS and pre-Windows NT Windows ** [[cmd.exe]] command language for [[Windows NT]] * [[Bourne shell|sh]] ** [[KornShell|ksh]] ** [[Bash (Unix shell)|bash]] ** [[Z shell|zsh]] * [[CLIST]] (MVS Command List) * [[CMS EXEC]] * [[C shell|csh]] ** [[tcsh]] ** [[Hamilton C shell]] * [[DIGITAL Command Language]] CLI for OpenVMS * [[EXEC 2]] * [[Expect]] * [[Fish (Unix shell)|fish]] * [[Nushell]] * [[Windows PowerShell]] * [[Rc (Unix shell)|rc]] * [[Rexx]] * [[TACL (programming language)]]

== Compiled languages == {{Main|Compiled language}} These are languages typically processed by [[compiler]]s, though theoretically any language can be compiled or interpreted.

{{div col|colwidth=15em}} * [[ArkTS]] * [[ActionScript]] * [[Ada (programming language)|Ada]] * [[ALGOL 58]] ** [[JOVIAL]] ** [[NELIAC]] * [[ALGOL 60]] ** [[SMALL]] * [[ALGOL 68]] * [[Ballerina (programming language)|Ballerina]] ([[bytecode]] runtime) * [[BASIC]] (including the first version of Dartmouth BASIC) * [[BCPL]] * [[C (programming language)|C]] * [[C++]] * [[C Sharp (programming language)|C#]] (into [[Common Intermediate Language|CIL]] runtime) * [[Ceylon (programming language)|Ceylon]] (into [[JVM bytecode]]) * [[CHILL]] * [[Clipper (programming language)|Clipper 5.3]] * [[LEO (computer)|CLEO]] for Leo computers * [[Clojure]] (into [[JVM bytecode]]) * [[COBOL]] * [[Cobra (programming language)|Cobra]] * [[Common Lisp]] * [[Crystal (programming language)|Crystal]] * [[Curl (programming language)|Curl]] * [[D (programming language)|D]] * DASL→Java, [[JavaScript]] (JS), JSP, Flex.war * [[Delphi (software)|Delphi]] ([[Borland]]'s [[Object Pascal]] development system) * [[DIBOL]] (Digital COBOL) * [[Dylan (programming language)|Dylan]] * [[Eiffel (programming language)|Eiffel]] ** [[Sather]] ** [[Ubercode]] * [[Elm (programming language)|Elm]] * [[Emacs Lisp]] * [[Emerald (programming language)|Emerald]] * [[Erlang (programming language)|Erlang]] * [[Factor (programming language)|Factor]] * [[Fortran]] * [[GAUSS (software)|GAUSS]] * [[Go (programming language)|Go]] * [[Gosu (programming language)|Gosu]] (into [[JVM bytecode]]) * [[Apache Groovy|Groovy]] (into [[JVM bytecode]]) * [[Haskell]] * [[Harbour (software)|Harbour]] * [[TempleOS|HolyC]] * [[Inform]] (usually story files for [[Glulx]] or [[Z-machine|Z-code]]) * [[Java (programming language)|Java]] (into [[JVM bytecode]], also supports [[GraalVM]] Native Image for native binaries) * [[JOVIAL]] * [[Julia (programming language)|Julia]] (on the fly to machine code) * [[Kotlin]] (into [[JVM bytecode]], also supports Kotlin/Native which uses [[LLVM]] to produce binaries) * [[LabVIEW]] * [[Mercury (programming language)|Mercury]] * [[Mesa (programming language)|Mesa]] * [[Nemerle]] (into intermediate language bytecode) * [[Nim (programming language)|Nim]] * [[Objective-C]] * [[P (programming language)|P]] * [[Pascal (programming language)|Pascal]] (most implementations) * [[PL/I]] * [[Plus (programming language)|Plus]] * [[Pony (programming language)|Pony]] * [[Python (programming language)|Python]] (to intermediate [[Virtual machine|VM]] [[bytecode]]) * [[IBM RPG|RPG]] (Report Program Generator) * [[Red (programming language)|Red]] * [[Rust (programming language)|Rust]] * [[Scala (programming language)|Scala]] (into [[JVM bytecode]])) * [[Scheme (programming language)|Scheme]] (e.g. Gambit) * [[SequenceL]] * [[Simula]] * [[Smalltalk]] platform independent [[virtual machine|VM]] [[bytecode]] * [[Swift (programming language)|Swift]] * [[ML (programming language)|ML]] ** [[Standard ML]] (SML) *** [[Alice (programming language)|Alice]] ** [[OCaml]] ** [[F Sharp (programming language)|F#]] (into [[Common Intermediate Language|CIL]], generates runtime) * [[Turing (programming language)|Turing]] * [[V (programming language)|V (Vlang)]] * [[Vala (programming language)|Vala]] * [[Visual Basic]] ([[Common Intermediate Language|CIL]] JIT runtime) * [[Visual FoxPro]] * [[Visual Prolog]] * [[Xojo]] * [[Zig (programming language)|Zig]] {{div col end}}

== Concatenative programming languages ==

{{main|Concatenative programming language}}

A [[concatenative programming language]] is a [[Point-free programming|point-free]] computer [[programming language]] in which all expressions denote [[Function (mathematics)|functions]], and the [[juxtaposition]] of [[Expression (computer science)|expressions]] denotes [[function composition]].

* [[Factor (programming language)|Factor]] * [[Forth (programming language)|Forth]] * [[jq (programming language)|jq]] (function application is also supported) * [[Joy (programming language)|Joy]] * [[PostScript]] * [[Raku (programming language)|Raku]]

== Concurrent languages == {{Main category|Concurrent programming languages}} {{Main list|List of concurrent and parallel programming languages}}

[[Message passing]] languages provide language constructs for [[concurrency (computer science)|concurrency]]. The predominant paradigm for concurrency in mainstream languages such as [[Java (programming language)|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]].

{{div col|colwidth=15em}} * [[Ada (programming language)|Ada]] * [[Alef (programming language)|Alef]] * [[Ateji PX]] * [[Ballerina (programming language)|Ballerina]] * [[C++]] (since [[C++11]]) * [[ChucK]] * [[Cilk]] * [[Cω]] (through asynchronous communication) * [[Clojure]] * [[Chapel (programming language)|Chapel]] * [[Co-array Fortran]] * [[Concurrent Pascal]] * [[Curry (programming language)|Curry]] * [[E (programming language)|E]] * [[Eiffel (programming language)|Eiffel]] (through the [[SCOOP (software)|SCOOP]] mechanism, Simple Concurrent Object-Oriented Computation) * [[Elixir (programming language)|Elixir]] * [[Emerald (programming language)|Emerald]] (through threads and monitors) * [[Erlang (programming language)|Erlang]] (through asynchronous message passing with nothing shared) * [[Gambit (scheme implementation)|Gambit Scheme]] (using the Termite library) * [[Gleam (programming language)|Gleam]] * [[Go (programming language)|Go]] * [[Haskell]] (through concurrent, distributed, and parallel programming across multiple machines) * [[Java (programming language)|Java]] ** [[Join Java]] ** [[X10 (programming language)|X10]] * [[Julia (programming language)|Julia]] * [[Joule (programming language)|Joule]] (through message passing) * [[LabVIEW]] * [[Limbo (programming language)|Limbo]] * [[MultiLisp]] (through extended parallelism capabilities) * [[OCaml]] * [[occam (programming language)|occam]] ** [[occam-π]] * [[Orc (programming language)|Orc]] * [[Oz (programming language)|Oz]] (through shared-state and message-passing concurrency, and futures, and Mozart Programming System [[cross-platform]] Oz) * [[P (programming language)|P]] * [[Pony (programming language)|Pony]] * [[Pict (programming language)|Pict]] * [[Python (programming language)|Python]] (through thread-based parallelism and process-based parallelism<ref>[https://docs.python.org/3/library/concurrency.html Documentation » The Python Standard Library » Concurrent Execution]</ref>) * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.perl6.org/language/concurrency |title=Channels and other mechanisms}}</ref> * [[Rust (programming language)|Rust]] * [[Scala (programming language)|Scala]] * [[SequenceL]] * [[SR (programming language)|SR]] * [[V (programming language)|V (Vlang)]] * [[Unified Parallel C]] * [[XProc]] {{div col end}}

== Constraint programming languages == {{Main|Constraint programming}}

A [[constraint programming]] language is a [[declarative programming]] language where relationships between variables are expressed as [[Constraint (mathematics)|constraints]]. Execution proceeds by attempting to find values for the variables which satisfy all declared constraints.

* [[Claire (programming language)|Claire]] * [[Constraint Handling Rules]] * [[CHIP (programming language)|CHIP]] * [[ECLiPSe]] * [[Kaleidoscope (programming language)|Kaleidoscope]] * [[Oz (programming language)|Oz]] * [[Raku (programming language)|Raku]]<ref>{{cite web |title=ProblemSolver |url=https://raku.land/github:FCO/ProblemSolver |language=en-US}}</ref>

== Contract languages == [[Design by contract]] (or contract programming) is programming using defined [[precondition]]s, [[postcondition]]s, and [[Invariant (computer science)|invariant]]s.

{{div col|colwidth=15em}} * [[Ada (programming language)|Ada]] (since Ada 2012) * [[Ciao (programming language)|Ciao]] * [[Clojure]] * [[Cobra (programming language)|Cobra]] * [[C++]] (since [[C++26]]) * [[D (programming language)|D]]<ref name="d-contract-programming"> {{cite web | last = Bright | first = Walter | title = D Programming Language, Contract Programming | publisher = Digital Mars | date = 2014-11-01 | url = http://dlang.org/contracts.html | access-date = 2014-11-10 }} </ref> * [[Dafny (programming language)|Dafny]] * [[Eiffel (programming language)|Eiffel]] * [[Fortress (programming language)|Fortress]] * [[Kotlin]] * [[Mercury (programming language)|Mercury]] * [[Oxygene (programming language)|Oxygene]] (formerly Chrome and Delphi Prism<ref>{{cite web |url=http://edn.embarcadero.com/article/39398 |title=Write Cleaner, Higher Quality Code with Class Contracts in Delphi Prism |publisher=Embarcadero Technologies |access-date=20 January 2016 |author=Hodges, Nick |archive-date=26 April 2021 |archive-url=https://web.archive.org/web/20210426163433/https://edn.embarcadero.com/article/39398 |url-status=dead}}</ref>) * [[Racket (programming language)|Racket]] (including higher order contracts, and emphasizing that contract violations must blame the guilty party and must do so with an accurate explanation<ref>Findler, Felleisen [http://www.eecs.northwestern.edu/~robby/pubs/papers/ho-contracts-icfp2002.pdf Contracts for Higher-Order Functions]</ref>) * [[Sather]] * [[Scala (programming language)|Scala]]<ref name="scala-assertions-dbc"> {{cite web | title = Scala Standard Library Docs - Assertions | publisher = EPFL | url = https://www.scala-lang.org/api/current/scala/Predef$.html | access-date = 2019-05-24 }} </ref><ref>[[Strong typing]] as another "contract enforcing" in Scala, see discussion at [https://www.scala-lang.org/old/node/6958 scala-lang.org/].</ref> * [[SPARK (programming language)|SPARK]] (via [[static code analysis|static analysis]] of [[Ada (programming language)|Ada]] programs) * [[Vala (programming language)|Vala]] * [[Vienna Development Method]] (VDM) {{div col end}}

== Curly bracket languages{{anchor|curly-brace}} == A '''curly bracket''' or '''curly brace''' language has syntax that defines a block as the statements between [[Braces (punctuation)|curly brackets, a.k.a. braces, <code>{}</code>]]. This syntax originated with [[BCPL]] (1966), and was popularized by [[C (programming language)|C]]. Many curly bracket languages [[List of C-family programming languages|descend from or are strongly influenced by C]]. Examples:

{{div col|colwidth=15em}} * [[Actor-Based Concurrent Language|ABCL/c+]] * [[Alef (programming language)|Alef]] * [[AWK]] * [[ArkTS]] * [[B (programming language)|B]] * [[bc (programming language)|bc]] * [[BCPL]] * [[Ballerina (programming language)|Ballerina]] * [[C (programming language)|C]] * [[C++]] * [[C Sharp (programming language)|C#]] * [[Ceylon (programming language)|Ceylon]] * [[Chapel (programming language)|Chapel]] * [[ChucK]] * [[Cilk]] * [[Cyclone (programming language)|Cyclone]] * [[D (programming language)|D]] * [[Dart (programming language)|Dart]] * DASL – based on Java * [[E (programming language)|E]] * [[ECMAScript]] ** [[AssemblyScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] ** [[TypeScript]] * [[OpenGL Shading Language|GLSL]] * [[Go (programming language)|Go]] * [[High-Level Shading Language|HLSL]] * [[Java (programming language)|Java]] ** [[Processing (programming language)|Processing]] ** [[Apache Groovy|Groovy]] ** [[Join Java]] ** [[Kotlin]] ** [[Tea (programming language)|Tea]] ** [[X10 (programming language)|X10]] * [[Limbo (programming language)|Limbo]] * [[LPC (programming language)|LPC]] * [[Maya Embedded Language|MEL]] * [[Nemerle]] (curly braces optional)<ref name="nemerle-offside">{{Cite web|url=https://github.com/rsdn/nemerle/wiki/Indentation-based-syntax |title=Indentation based syntax · rsdn/nemerle Wiki |website=GitHub|access-date=2022-03-18}}</ref> * [[Objective-C]] * [[PCASTL]] * [[Perl]] * [[PHP]] * [[Pico (programming language)|Pico]] * [[Pike (programming language)|Pike]] * [[PowerShell]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]] * [[Rust (programming language)|Rust]] * [[S-Lang]] * [[Scala (programming language)|Scala]] (curly-braces optional) * [[sed]] * [[Solidity (programming language)|Solidity]]<ref>{{Cite web |url=https://docs.soliditylang.org/en/v0.8.11/ |title=Solidity: Solidity 0.8.11 documentation}}</ref> * [[SuperCollider]] * [[Swift (programming language)|Swift]] * [[Tcl (programming language)|Tcl]] * [[UnrealScript]] * [[V (programming language)|V (Vlang)]] * [[Yorick (programming language)|Yorick]] * [[Zenith Parsing Engine|YASS]] * [[Zig (programming language)|Zig]] {{div col end}} <!-- It was possible, indeed trivial, to use automated methods to recognize BEGIN blocks in, e.g., ALGOL 60, well before BCPL or C -->

== 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:

{{div col}} * [[Analytica (software)|Analytica]] * [[Ballerina (programming language)|Ballerina]] * [[Binary Modular Dataflow Machine]] (BMDFM) * [[CMS Pipelines]] * G (used in [[LabVIEW]]) * [[Lucid (programming language)|Lucid]] * [[Max (software)|Max]] * [[Oz (programming language)|Oz]] * [[Prograph]] * [[Pure Data]] * [[Reaktor]] * [[StreamBase Systems#StreamSQL EventFlow Language|StreamBase StreamSQL EventFlow]] * [[Swift (parallel scripting language)]] * [[Keysight VEE|VEE]] * [[VHDL]] * [[VisSim]] * [[Vvvv]] * [[WebMethods Flow]] {{div col end}}

== 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.{{citation needed|date=January 2018}} Data-oriented languages include:

{{div col}} * [[Associative Programming Language]] * [[Clarion (programming language)|Clarion]] * [[Clipper (programming language)|Clipper]] * [[dBase]] * [[Gremlin (programming language)|Gremlin]] * [[MUMPS]] * [[Caché ObjectScript]] * [[RETRIEVE]] * [[RDQL]] * [[SPARQL]] * [[SQL]] * [[Visual FoxPro]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Decision table languages == [[Decision table]]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:

* [[Filetab]]

== Declarative languages == {{Main category|Declarative programming languages}}

[[Declarative programming|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 languages|functional]] and [[#Logic-based languages|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.

{{div col|colwidth=15em}} * [[Analytica (software)|Analytica]] * [[Apache Ant|Ant]] (combine [[declarative programming]] and [[imperative programming]]) * [[Curry (programming language)|Curry]] * [[Cypher (query language)|Cypher]] * [[Datalog]] * Distributed Application Specification Language (DASL) (combine [[declarative programming]] and [[imperative programming]]) * [[ECL (data-centric programming language)|ECL]] * [[Gremlin (programming language)|Gremlin]] * [[Inform]] (combine [[declarative programming]] and [[imperative programming]]) * [[Lustre (programming language)|Lustre]] * [[Mercury (programming language)|Mercury]] * [[Metafont]] * [[MetaPost]] * [[Modelica]] * [[Nix (package manager)#Implementation|Nix]] * [[Prolog]] * [[QML]] * [[Oz (programming language)|Oz]] * [[RDQL]] * [[SequenceL]] * [[SPARQL]] * [[SQL]] (Only DQL, not DDL, DCL, and DML) * [[Soufflé (programming language)|Soufflé]] * [[VHDL]] (supports [[declarative programming]], [[imperative programming]], and [[functional programming]]) * [[Wolfram Mathematica]] ([[Wolfram language]]) * [[WOQL]] ([[TerminusDB]]) * [[xBase]] * [[XSL Transformations]] {{div col end}}

== 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 (programming language)|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 (programming language)|Erlang]], [[Scala (programming language)|Scala]], [[Perl]] and [[Ruby (programming language)|Ruby]] can be adapted (for instance, by being made into [[Apache HTTP Server|Apache]] modules).

==== Client side ==== * [[ActionScript]] * [[JavaScript|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 (computing)|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.

{{div col}} * [[AngelScript]] * [[Ch (computer programming)|Ch]] * EEL * [[Io (programming language)|Io]] * [[Jq (programming language)|jq]] (C and Go) * [[Julia (programming language)|Julia]] * [[Lua]] * [[Luau (programming language)|Luau]] * [[Python (programming language)|Python]] * [[Ruby (programming language)|Ruby]] (via [[mruby]]) * [[Squirrel (programming language)|Squirrel]] * [[Tcl (programming language)|Tcl]] {{div col end}}

== Educational programming languages == {{Main list|List of educational programming languages}}

Languages developed primarily for the purpose of teaching and learning of programming.

{{div col}} * [[Alice (software)|Alice]] * [[Blockly]] * [[Catrobat]] * [[COMAL]] * [[ELAN (programming language)|Elan]] * [[Emerald (programming language)|Emerald]] * [[Ezhil (programming language)|Ezhil]] * [[Hedy (programming language)|Hedy]] * [[Logo (programming language)|Logo]] * [[Modula-2]] * [[Pascal (programming language)|Pascal]] * [[PL/C]] * [[Racket (programming language)|Racket]] * [[Scheme (programming language)|Scheme]] * [[Scratch (programming language)|Scratch]] * [[Snap! (programming language)|Snap!]] * [[SP/k]] * [[Turing (programming language)|Turing]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Esoteric languages == {{Main category|Esoteric programming languages}}

An [[esoteric programming language]] is a programming language designed as a test of the boundaries of computer programming language design, as a proof of concept, or as a joke.

{{div col}} * [[Beatnik (programming language)|Beatnik]] * [[Befunge]] * [[Brainfuck]] * [[Chef (programming language)|Chef]] * [[INTERCAL]] * [[LOLCODE]] * [[Malbolge]] * [[Piet (programming language)|Piet]] * [[Shakespeare (programming language)|Shakespeare]] * [[Whitespace (programming language)|Whitespace]] * [[BracketLang (programming language)|BracketLang]] {{div col end}}

== Extension languages == [[Extension programming language]]s are languages embedded into another program and used to harness its features in extension scripts. {{div col|colwidth=15em}} * [[AutoLISP]] (specific to [[AutoCAD]]) * [[BeanShell]] * [[Cakewalk (sequencer)#Features|CAL]] * [[C/AL]] (C/SIDE) * [[GNU Guile|Guile]] * [[Emacs Lisp]] * [[JavaScript]] and some dialects, e.g., [[JScript]] * [[Lua]] (embedded in many games) * [[OpenCL]] (extension of C and C++ to use the GPU and parallel extensions of the CPU) * [[OptimJ]] (extension of Java with language support for writing optimization models and powerful abstractions for bulk data processing) * [[Perl]] * [[Pike (programming language)|Pike]] * [[PowerShell]] * [[Python (programming language)|Python]] (embedded in Maya, Blender, and other 3-D animation packages) * [[Rexx]] * [[Ruby (programming language)|Ruby]] (Google SketchUp) * [[S-Lang]] * [[SQL]] * [[Squirrel (programming language)|Squirrel]] * [[Tcl (programming language)|Tcl]] * [[Vim script]] (vim) * [[Visual Basic for Applications]] (VBA) {{div col end}}

== Fourth-generation languages == {{Main category|Fourth-generation programming languages}}

[[Fourth-generation programming language]]s are [[high-level programming language]]s built around [[database]] systems. They are generally used in commercial environments.

{{div col|colwidth=15em}} * [[1C:Enterprise programming language]] * [[ABAP]] * [[CorVision]] * [[Computer Sciences Corporation|CSC]]'s GraphTalk * [[DATACOM/DB|CA-IDEAL]] (Interactive Development Environment for an Application Life) for use with CA-[[DATACOM/DB]] * [[Easytrieve]] report generator (now CA-Easytrieve Plus) * [[FOCUS]] * [[IBM Informix-4GL]] * [[LINC 4GL]] * [[LiveCode]] (Not based on a database; still, the goal is to work at a higher level of abstraction than 3GLs.) * [[MAPPER]] ([[Unisys|Unisys/Sperry]]) (now part of BIS) * [[MARK IV (software)|MARK-IV]] ([[Sterling Software|Sterling/Informatics]]) now VISION:BUILDER of CA * [[NATURAL]] * [[Progress 4GL]] * [[PV-Wave]] * [[RETRIEVE]] * [[SAS (software)|SAS]] * [[SQL]] * [[Ubercode]] (VHLL, or Very-High-Level Language) * [[Uniface (programming language)|Uniface]] * [[Visual DataFlex]] * [[Visual FoxPro]] * [[xBase]] {{div col end}}

== Functional languages == {{Main category|Functional languages}}

[[Functional programming]] languages define programs and subroutines as mathematical functions and treat them as first-class. Many so-called functional languages are "impure", containing imperative features. Many functional languages are tied to mathematical calculation tools. Functional languages include:

=== Pure === {{div col|colwidth=10em}} * [[Agda (programming language)|Agda]] * [[Clean (programming language)|Clean]] * [[Cuneiform (programming language)|Cuneiform]] * [[Curry (programming language)|Curry]] * [[Elm (programming language)|Elm]] * [[Futhark (programming language)|Futhark]] * [[Haskell]] * [[Hope (programming language)|Hope]] * [[Idris (programming language)|Idris]] * [[Joy (programming language)|Joy]] * [[jq (programming language)|jq]] (functions are 2nd class) * [[Kent Recursive Calculator|KRC]] * [[Lean (proof assistant)|Lean]] * [[Mercury (programming language)|Mercury]] * [[Miranda (programming language)|Miranda]] * [[Pure (programming language)|Pure]] * [[PureScript]] * [[Rocq]] (former name: ''Coq'') * [[SAC programming language|SAC]] * [[SASL (programming language)|SASL]] * [[SequenceL]] * [[Ur (programming language)|Ur]] {{div col end}}

=== Impure === {{div col|colwidth=15em}} * [[APL (programming language)|APL]] ** [[J (programming language)|J]] ** [[Q (programming language from Kx Systems)]] * [[ATS (programming language)|ATS]] * [[CAL (programming language)|CAL]] * [[C++]] (since [[C++11]]) * [[C Sharp (programming language)|C#]] * [[VB.NET]] * [[Ceylon (programming language)|Ceylon]] * [[Curl (programming language)|Curl]] * [[D (programming language)|D]] * [[Dart (programming language)|Dart]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] ** [[Source (programming language)|Source]] ** [[ArkTS]] ** [[TypeScript]] * [[Erlang (programming language)|Erlang]] ** [[Elixir (programming language)|Elixir]] ** [[Gleam (programming language)|Gleam]] ** [[LFE (programming language)|LFE]] * [[Fexl (programming language)|Fexl]] * [[Flix (programming language)|Flix]] * [[LabVIEW|G (used in LabVIEW)]] * [[Apache Groovy|Groovy]] * [[Hop (software)|Hop]] * [[Java (programming language)|Java]] (since version 8) * [[Julia (programming language)|Julia]] * [[Kotlin]] * [[Lisp (programming language)|Lisp]] ** [[Clojure]] ** [[Common Lisp]] ** [[Dylan (programming language)|Dylan]] ** [[Emacs Lisp]] ** [[LFE (programming language)|LFE]] ** [[Little b (programming language)|Little b]] ** [[Logo (programming language)|Logo]] ** [[Racket (programming language)|Racket]] ** [[Scheme (programming language)|Scheme]] *** [[GNU Guile|Guile]] ** [[Tea (programming language)|Tea]] * [[ML (programming language)|ML]] ** [[Standard ML]] (SML) *** [[Alice (programming language)|Alice]] ** [[OCaml]] ** [[F Sharp (programming language)|F#]] * [[Nemerle]] * [[Nim (programming language)|Nim]] * [[Opal (programming language)|Opal]] * [[OPS5]] * [[Perl]] ** [[Raku (programming language)|Raku]] * [[PHP]] * [[PL/pgSQL]] * [[Python (programming language)|Python]] * [[Q (equational programming language)]] * [[R (programming language)|R]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Ruby (programming language)|Ruby]] * [[REFAL]] * [[Rust (programming language)|Rust]] * [[Scala (programming language)|Scala]] * [[Swift (programming language)|Swift]] * [[Spreadsheet]]s * [[V (programming language)|V (Vlang)]] * [[Tcl (programming language)|Tcl]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Hardware description languages == {{Main list|List of hardware description languages}}

In electronics, a [[hardware description language]] (HDL) is a specialized computer language used to describe the structure, design, and operation of electronic circuits, and most commonly, digital logic circuits. The two most widely used and well-supported HDL varieties used in industry are [[Verilog]] and [[VHDL]]. Hardware description languages include:

=== HDLs for analog circuit design === * [[Verilog-AMS]] (Verilog for Analog and Mixed-Signal) * [[VHDL-AMS]] (VHDL with Analog/Mixed-Signal extension)

=== HDLs for digital circuit design === {{div col}} * [[Advanced Boolean Expression Language]] * [[Altera Hardware Description Language]] * [[Bluespec]] * [[Confluence]] * [[ELLA (programming language)|ELLA]] * [[Handel-C]] * [[Impulse C]] * [[Lola (computing)|Lola]] * [[MyHDL]] * [[PALASM]] * [[Ruby (hardware description language)]] * [[SystemC]] * [[SystemVerilog]] * [[Verilog]] * [[VHDL]] (VHSIC HDL) {{div col end}}

== Imperative languages == Imperative programming languages may be multi-paradigm and appear in other classifications. Here is a list of programming languages that follow the [[imperative paradigm]]:

{{div col|colwidth=10em}} * [[Ada (programming language)|Ada]] * [[ALGOL 58]] ** [[JOVIAL]] ** [[NELIAC]] * [[ALGOL 60]] (very influential language design) * [[ALGOL 68]] * [[Assembly language]]s * [[BASIC]] * [[C (programming language)|C]] * [[C++]] * [[C Sharp (programming language)|C#]] * [[Ceylon (programming language)|Ceylon]] * [[CHILL]] * [[COBOL]] * [[D (programming language)|D]] * [[Dart (programming language)|Dart]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] ** [[Source (programming language)|Source]] * [[FORTRAN]] * [[GAUSS (software)|GAUSS]] * [[Go (programming language)|Go]] * [[Apache Groovy|Groovy]] * [[Icon (programming language)|Icon]] * [[Java (programming language)|Java]] * [[Julia (programming language)|Julia]] * [[Lua]] * [[MATLAB]] * [[Machine code|Machine languages]] * [[Modula-2]], [[Modula-3]] * [[MUMPS]] * [[Nim (programming language)|Nim]] * [[OCaml]] * [[Oberon (programming language)|Oberon]] * [[Object Pascal]] * [[Object REXX|Open Object Rexx]] (ooRexx) * [[Open Programming Language]] (OPL) * [[OpenEdge Advanced Business Language]] (ABL) * [[Pascal (programming language)|Pascal]] * [[Perl]] * [[PHP]] * [[PL/I]] * [[IBM PL/S|PL/S]] * [[PowerShell]] * [[PROSE modeling language|PROSE]] * [[Python (programming language)|Python]] * [[Raku (programming language)|Raku]] * [[Rexx]] * [[Ruby (programming language)|Ruby]] * [[Rust (programming language)|Rust]] * [[SETL]] * [[Speakeasy (computational environment)|Speakeasy]] * [[Swift (programming language)|Swift]] * [[Tcl (programming language)|Tcl]] * [[V (programming language)|V (Vlang)]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Interactive mode languages == Known as [[Read–eval–print loop|REPL]] - Interactive mode languages act as a kind of shell: expressions or statements can be entered one at a time, and the result of their evaluation seen immediately.

{{div col|colwidth=15em}} * [[APL (programming language)|APL]] * [[BASIC]] (some dialects) * [[Clojure]] * [[Common Lisp]] * [[Dart (programming language)|Dart]] (with Observatory or Dartium's developer tools) * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] ** [[Source (programming language)|Source]] ** [[ArkTS]] * [[Erlang (programming language)|Erlang]] * [[Elixir (programming language)|Elixir]] (with iex) * [[F Sharp (programming language)|F#]] * [[Fril]] * [[GAUSS (software)|GAUSS]] * [[Apache Groovy|Groovy]] * [[GNU Guile|Guile]] * [[Haskell]] (with the GHCi or Hugs interpreter) * [[IDL (programming language)|IDL]] * [[J (programming language)|J]] * [[Java (programming language)|Java]] (since version 9) * [[Julia (programming language)|Julia]] * [[Lua]] * [[MUMPS]] (an ANSI standard general-purpose language) * [[Maple (software)|Maple]] * [[MATLAB]] * [[ML (programming language)|ML]] * [[Nim (programming language)|Nim]] (with INim) * [[OCaml]] * [[Perl]] * [[PHP]] * [[Pike (programming language)|Pike]] * [[PostScript]] * [[PowerShell]] ([[.NET]]-based CLI) * [[Prolog]] * [[Python (programming language)|Python]] * [[PROSE modeling language|PROSE]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Rexx]] * [[Ruby (programming language)|Ruby]] (with [[Interactive Ruby Shell|IRB]]) * [[Scala (programming language)|Scala]] * [[Scheme (programming language)|Scheme]] * [[Smalltalk]] (anywhere in a Smalltalk environment) * [[S-Lang]] (with the S-Lang shell, slsh) * [[Speakeasy (computational environment)|Speakeasy]] * [[Swift (programming language)|Swift]] * [[Tcl (programming language)|Tcl]] (with the Tcl shell, tclsh) * [[Unix shell]] * [[Visual FoxPro]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Interpreted languages == [[Interpreted language]]s are programming languages in which programs may be executed from source code form, by an interpreter. Theoretically, any language can be compiled or interpreted, so the term ''interpreted language'' generally refers to languages that are usually interpreted rather than compiled.

{{div col|colwidth=15em}} * [[Apache Ant|Ant]] * [[APL (programming language)|APL]] * [[AutoHotkey]] scripting language * [[AutoIt]] scripting language * [[BASIC]] (some dialects) * [[Programming Language for Business]] (PL/B, formerly DATABUS, later versions added optional compiling) * [[Eiffel (programming language)|Eiffel]] (via ''Melting Ice Technology'' in [[EiffelStudio]]) * [[Emacs Lisp]] * [[FOCAL (programming language)|FOCAL]] * [[GameMaker Studio|GameMaker Language]] * [[Apache Groovy|Groovy]] * [[J (programming language)|J]] * [[jq (programming language)|jq]] * [[Java (programming language)|Java]] via [[JVM bytecode]] * [[Julia (programming language)|Julia]] (compiled on the fly to [[machine code]], by default, interpreting also available) * [[JavaScript]] * [[Lisp (programming language)|Lisp]] (early versions, pre-1962, and some experimental ones; production Lisp systems are compilers, but many of them still provide an interpreter if needed) * [[LPC (programming language)|LPC]] * [[Lua]] * [[MUMPS]] (an ANSI standard general-purpose language) * [[Maple (software)|Maple]] * [[MATLAB]] * [[OCaml]] * [[Pascal (programming language)|Pascal]] (early implementations) * [[PCASTL]] * [[Perl]] * [[PHP]] * [[PostScript]] * [[PowerShell]] * [[PROSE modeling language|PROSE]] * [[Python (programming language)|Python]] * [[Rexx]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Ruby (programming language)|Ruby]] * [[S-Lang]] * [[Seed7]] * [[Speakeasy (computational environment)|Speakeasy]] * [[Standard ML]] (SML) * [[Parallax Propeller|Spin]] * [[Tcl (programming language)|Tcl]] * [[Tea (programming language)|Tea]] * [[TorqueScript]] * [[VBScript]] * [[Windows PowerShell]] – [[.NET]]-based CLI * Some scripting languages – [[#Scripting languages|below]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Iterative languages == Iterative languages are built around or offering [[generator (computer science)|generator]]s.

{{div col|colwidth=20em}} * [[Aldor]] * [[Alphard (programming language)|Alphard]] * [[Generator (computer programming)#C++|C++]] * [[Generator (computer science)#C#|C#]] * [[CLU (programming language)|CLU]] * [[Cobra (programming language)|Cobra]] * [[ECMAScript]] (ES6+) * [[Eiffel (programming language)|Eiffel]], through "agents" * [[Icon (programming language)|Icon]] * [[Information Processing Language|IPL-v]] * [[jq (programming language)|jq]] * [[Julia (programming language)|Julia]]<!-- has iterators and generators --> * [[Lua]] * [[Nim (programming language)|Nim]] * [[PHP]] * [[Python (programming language)|Python]] * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.raku.org/type/Iterator |title=Iterator}}</ref> * [[Sather]] {{div col end}}

== Languages by memory management type ==

=== Garbage collected languages === Garbage Collection (GC) is a form of automatic memory management. The garbage collector attempts to reclaim memory that was allocated by the program but is no longer used. {{Main|Garbage collection (computer science)}} {{div col|colwidth=15em}} * [[APL (programming language)|APL]] * [[C (programming language)|C]], through unofficial garbage collectors such as [[Boehm garbage collector|Boehm]] * [[C++]] (supported in the [[C++ Standard Library|standard library]] from [[C++11]] until [[C++23]])<ref name="pointer-safety-cpp">{{Cite web |title=std::pointer_safety - cppreference.com |url=https://en.cppreference.com/w/cpp/memory/gc/pointer_safety |access-date=2024-12-09 |website=en.cppreference.com}}</ref><ref>{{Cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2186r2.html|title=Removing Garbage Collection Support|date=2021-04-16|author1=JF Bastien|author2=Alisdair Meredith }}</ref> * [[C Sharp (programming language)|C#]] * [[Clean (programming language)|Clean]] * [[Crystal (programming language)|Crystal]] * [[Dart (programming language)|Dart]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] ** [[Source (programming language)|Source]] * [[Emerald (programming language)|Emerald]] * [[Erlang (programming language)|Erlang]] * [[Go (programming language)|Go]] * [[Apache Groovy|Groovy]] * [[Haskell]] * [[Java (programming language)|Java]] * [[Julia (programming language)|Julia]] * [[Kotlin]] * [[LabVIEW]] * [[Lisp (programming language)|Lisp]] (originator) ** [[Arc (programming language)|Arc]] ** [[Clojure]] ** [[Common Lisp]] ** [[Dylan (programming language)|Dylan]] ** [[Emacs Lisp]] ** [[GNU Guile|Guile]] ** [[Racket (programming language)|Racket]] ** [[Scheme (programming language)|Scheme]] ** [[Logo (programming language)|Logo]] * [[Lua]] * [[ML (programming language)|ML]] ** [[Standard ML]] (SML) *** [[Alice (programming language)|Alice]] ** [[OCaml]] * [[Modula-3]] * [[Perl]] * [[PHP]] * [[PowerShell]] * [[Python (programming language)|Python]] * [[Ruby (programming language)|Ruby]] * [[Smalltalk]] * [[Speakeasy (computational environment)|Speakeasy]] {{div col end}}

=== Languages with manual memory management === {{Expand section|date=November 2016}}

* [[ALGOL 68]] * [[Assembly language|Assembly]] (various) * [[BLISS]] * [[C (programming language)|C]] * [[C++]] * [[C Sharp (programming language)|C#]], in <code>unsafe</code> contexts * [[Component Pascal]] * [[Forth (programming language)|Forth]] * [[Fortran]] * [[FreeBASIC]] * [[Java (programming language)|Java]], through the internal [[Security of the Java software platform#The sun.misc.Unsafe class|{{mono|sun.misc.Unsafe}}]] class * [[Modula-2]] * [[Oberon (programming language)|Oberon]] * [[Pascal (programming language)|Pascal]] * [[PL/I]] * [[Rust (programming language)|Rust]], in <code>unsafe</code> contexts * [[Zig (programming language)|Zig]]

=== Languages with optional manual memory management === * [[Ada (programming language)|Ada]]{{efn|Some Ada implementations include a garbage collector,<ref>{{cite web |url = https://www.enyo.de/fw/software/gnat-gc/ |title = Conservative Garbage Collection for GNAT |access-date = 2025-03-12 |website = Florian Weimer's Home Page}}</ref> though the language specification does not require its inclusion.{{citation needed|date=March 2025}}}} * [[Blitz BASIC]]<ref>{{cite web |url = https://blitzmax.org/docs/en/language/memory_management/ |title = Memory Management · BlitzMax |access-date = 2023-07-14}}</ref><ref>{{cite web |url = https://blitzmax.org/docs/en/language/pointers/ |title = Pointers · BlitzMax |access-date = 2023-07-14}}</ref><ref>{{cite web |url = https://blitzmax.org/docs/en/api/brl/brl.blitz/ |title = BRL.Blitz · BlitzMax |access-date = 2023-07-14}}</ref> *[[C (programming language)|C]], through unofficial garbage collectors such as Boehm *[[C++]] (from C++11 until C++23 through optional garbage collection support)<ref name="pointer-safety-cpp">{{Cite web |title=std::pointer_safety - cppreference.com |url=https://en.cppreference.com/w/cpp/memory/gc/pointer_safety |access-date=2024-12-09 |website=en.cppreference.com}}</ref><ref>{{Cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2186r2.html|title=Removing Garbage Collection Support|date=2021-04-16|author1=JF Bastien|author2=Alisdair Meredith }}</ref> * [[COBOL]]<ref>{{cite web |url = https://www.ibm.com/docs/en/i/7.3?topic=considerations-using-pointers-in-ile-cobol-program |title = Using Pointers in an ILE COBOL Program - IBM Documentation |website = [[IBM]] |date = June 2012 |access-date = 2023-07-14}}</ref><ref>{{cite web |url = https://www.ibm.com/docs/en/zos/2.3.0?topic=options-heap |title = HEAP - IBM Documentation |website = [[IBM]] |access-date = 2023-07-14}}</ref><ref>{{cite web |url = https://www.ibm.com/docs/en/cobol-zos/6.1?topic=usbooocp-som-based-oo-cobol-language-elements-that-are-changed |title = SOM-based OO COBOL language elements that are changed - IBM Documentation |website = [[IBM]] |access-date = 2023-07-14}}</ref> * [[D (programming language)|D]]<ref>{{Cite web |url=https://dlang.org/spec/garbage.html |title=Garbage Collection |website=D Programming Language |access-date=2022-03-18}}</ref> * [[Nim (programming language)|Nim]]<ref>{{Cite web |url=https://nim-lang.github.io/Nim/mm.html |title=Nim's Memory Management |access-date=2022-03-18}}</ref> * [[Objective-C]]<ref>{{cite web |url = https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html |title = About Memory Management |website = Apple Developer |access-date = 2025-03-12}}</ref> * [[Objective-C#Objective-C++|Objective-C++]] * [[PostScript]]{{efn|Developers initially had to manually reclaim memory using the <code>save</code> and <code>restore</code> operators. PostScript Level 2 introduced a garbage collector, but its usage is optional.<ref>{{cite book |title = PostScript Language Reference, third edition |author = Adobe |publisher = Addison-Wesley Publishing Company |date = February 1999 |pages = 56–65 |url = https://www.adobe.com/jp/print/postscript/pdfs/PLRM.pdf}}</ref>}} * [[V (programming language)|V]]<ref>{{cite web |url = https://docs.vlang.io/memory-management.html |title = V Documentation |access-date = 2025-03-12}}</ref> * [[Vala (programming language)|Vala]]<ref>{{Cite web|url=https://wiki.gnome.org/Projects/Vala/ReferenceHandling#Manual_memory_management_with_pointer_syntax |archive-url=https://web.archive.org/web/20240121085048/https://wiki.gnome.org/Projects/Vala/ReferenceHandling#Manual_memory_management_with_pointer_syntax |title=Projects/Vala/ReferenceHandling - GNOME Wiki! |access-date=2022-03-21 |archive-date=2024-01-21}}</ref>

Some programming languages without the inherent ability to manually manage memory, like [[Cython]],<ref>{{cite web |url = https://cython.readthedocs.io/en/latest/src/tutorial/memory_allocation.html |title = Memory Allocation — Cython 3.0.0.dev0 documentation |access-date = 2023-07-14}}</ref> [[Swift (programming language)|Swift]],{{efn|On Apple platforms, these functions are imported from the C standard library (which is imported from <code>Foundation</code>, <code>AppKit</code> or <code>UIKit</code>); on Linux, the developer needs to import <code>Glibc</code>, and <code>ucrt</code> on Windows.{{citation needed|date=March 2025}}}} and [[Scala (programming language)|Scala]]<ref>{{cite web |title=Native code interoperability – Scala Native 0.4.14 documentation |url=https://scala-native.org/en/stable/user/interop.html |access-date=2023-07-05 |language=en-US}}</ref> (Scala Native only), are able to import or call functions like <code>malloc</code> and <code>free</code> from [[C (programming language)|C]] through a [[foreign function interface]].

=== Languages with deterministic memory management === {{Expand section|date=April 2018}} * [[Ada (programming language)|Ada]] * [[C (programming language)|C]] * [[C++]] * [[Fortran]] * [[Nim (programming language)|Nim]] * [[Pascal (programming language)|Pascal]] * [[Rust (programming language)|Rust]]<ref>{{cite web|url= https://doc.rust-lang.org/nightly/book/ch15-00-smart-pointers.html |title=Understanding Ownership - The Rust Programming Language|website=doc.rust-lang.org}}</ref><ref>{{cite web|url=https://doc.rust-lang.org/nightly/book/second-edition/ch15-00-smart-pointers.html|title=Smart Pointers - The Rust Programming Language|website=doc.rust-lang.org}}</ref> * [[Objective-C]] * [[Zig (programming language)|Zig]] * [[Modula-3]]

=== Languages with automatic reference counting (ARC) === {{Expand section|date=September 2018}} * [[Nim (programming language)|Nim]] * [[Objective-C]] * [[Perl]] * [[Swift (programming language)|Swift]] * [[Visual Basic]] * [[Xojo]]

== List-based languages – LISPs == List-based languages are a type of [[data-structured language]] that are based on the [[List (abstract data type)|list]] data structure. {{col-float}} * [[Lisp (programming language)|Lisp]] ** [[Arc (programming language)|Arc]] ** [[Clojure]] ** [[Common Lisp]] ** [[Dylan (programming language)|Dylan]] ** [[Emacs Lisp]] ** [[GNU Guile|Guile]] ** [[Racket (programming language)|Racket]] ** [[Scheme (programming language)|Scheme]] ** [[Logo (programming language)|Logo]] ** [[Hy (programming language)|Hy]] {{col-float-break}} * [[Joy (programming language)|Joy]] * [[R (programming language)|R]] * [[Source (programming language)|Source]] * [[Tcl (programming language)|Tcl]] ** [[Tea (programming language)|Tea]] * [[TRAC (programming language)|TRAC]] {{col-float-end}}

== Little languages == [[Domain-specific language|Little languages]]<ref>Jon Bentley (AT&T) August 1986 ''CACM'' '''29''' (8) "Little Languages", pp 711-721 from his [http://www.cs.toronto.edu/~chechik/courses18/csc2125/paper13.pdf Programming Pearls column]</ref> serve a specialized problem domain.

* [[AWK|awk]] – used for text file manipulation. <!-- A pattern action pair does not look like a C statement. --> * [[sed]] – parses and transforms text * [[SQL]] – has only a few keywords and not all the constructs needed for a full programming language{{efn|The objects of SQL are collections of [[database record]]s, called tables. A full [[programming language]] can specify [[algorithm]]s, irrespective of [[software execution|runtime]]. Thus an algorithm can be considered to generate usable results. In contrast, SQL can only select records that are limited to the current collection, the data at hand in the system, rather than produce a statement of the correctness of the result.}} – many database management systems extend SQL with additional constructs as a [[stored procedure]] language * [[XPL]] - a language designed for, although not limited to, compiler writing

== Logic-based languages == {{Main category|Logic programming languages}}

[[Logic programming|Logic-based]] languages specify a set of attributes that a solution must-have, rather than a set of steps to obtain a solution.

Notable languages following this [[programming paradigm]] include:

* [[Algebraic Logic Functional (programming language)|ALF]] * [[Alma-0]] * [[Curry (programming language)|Curry]] * [[Datalog]] * [[Fril]] * [[Flix (programming language)|Flix]] (a functional programming language with first-class Datalog constraints) * [[Janus (concurrent constraint programming language)|Janus]] * [[λProlog]] (a logic programming language featuring polymorphic typing, modular programming, and higher-order programming) * [[Oz (programming language)|Oz]], and Mozart Programming System [[cross-platform]] Oz * [[Prolog]] (formulates data and the program evaluation mechanism as a special form of mathematical logic called [[Horn clause|Horn logic]] and a general proving mechanism called [[Resolution (logic)|logical resolution]]) ** [[Mercury (programming language)|Mercury]] (based on Prolog) ** [[Visual Prolog]] (object-oriented Prolog extension) * [[ROOP (programming language)|ROOP]] * [[Soufflé (programming language)|Soufflé]]

== Machine languages == [[Machine code|Machine language]]s are directly executable by a computer's CPU. They are typically formulated as bit patterns, usually represented in [[octal]] or [[hexadecimal]]. Each bit pattern causes the circuits in the CPU to execute one of the fundamental operations of the hardware. The activation of specific electrical inputs (e.g., CPU package pins for microprocessors), and logical settings for CPU state values, control the processor's computation. Individual machine languages are specific to a family of processors; machine-language code for one family of processors cannot run directly on processors in another family unless the processors in question have additional hardware to support it (for example, DEC VAX processors included a PDP-11 compatibility mode). They are (essentially) always defined by the CPU developer, not by 3rd parties.{{efn|A notable exception would be the Soviet/Russian [[1801 series CPU]], which originally used their own domestic ISA, but were later redesigned to be [[PDP-11]] compatible as a policy decision.}} The symbolic version, the processor's [[assembly language]], is also defined by the developer, in most cases. Some commonly used machine code [[instruction set architecture|instruction sets]] are:

{{div col}} * [[ARM architecture family|ARM]] ** Original [[32-bit computing|32-bit]] ** 16-bit Thumb instructions (subset of registers used) ** [[64-bit computing|64-bit]] (major architecture change) * [[Burroughs Corporation]] ** Burroughs [[B5000 instruction set]] ** [[Burroughs B6x00-7x00 instruction set]] * [[Digital Equipment Corporation|DEC]]: ** [[18-bit computing|18-bit]]: [[PDP-1]], [[PDP-4]]/[[PDP-7]]/[[PDP-9]]/[[PDP-15]] ** [[12-bit computing|12-bit]]: [[PDP-5]]/[[PDP-8]]/[[LINC-8]]/[[PDP-12]] ** [[36-bit computing|36-bit]]: [[PDP-6]]/[[PDP-10]]/[[DECSYSTEM-20]] ** [[16-bit computing|16-bit:]] [[PDP-11 architecture|PDP-11]] (influenced VAX and M68000) ** 32-bit: [[VAX]] ** 64-bit: [[DEC Alpha|Alpha]] * [[Hewlett-Packard]] ** [[HP 2100]] series ([[16-bit computing|16-bit]]) ** [[HP 3000]] "Classic" series ([[16-bit computing|16-bit]]) ** [[PA-RISC]] ([[32-bit computing|32-bit]] and [[64-bit computing|64-bit]]) * [[IBM]]{{efn|name=submodels|Submodels are not listed, only base models.}} ** [[IBM 305 RAMAC|305]] ** [[IBM 650|650]] ** [[IBM 701|701]] ** [[IBM 702|702]], [[IBM 705|705]] and [[IBM 7080|7080]] ** [[IBM 704|704]], [[IBM 709|709]], [[IBM 7040|7040]], 7044, [[IBM 7090|7090]], [[IBM 7094|7094]] ** [[IBM 1400 series|1400 series]], 7010 ** [[IBM 7030 Stretch|7030]] ** [[IBM 7070|7070]], 7072, 7074 ** [[IBM System/360|System/360]] and successors, including [[z/Architecture]] * [[Intel 8008]], [[Intel 8080|8080]] and [[Intel 8085|8085]] ** [[Zilog Z80]] * [[x86|Intel x86]]: ** [[x86#16-bit|16-bit x86]], first used in the Intel 8086 *** [[Intel 8086]] and [[Intel 8088|8088]] (the latter was used in the first and early [[IBM Personal Computer|IBM PC]]) *** [[Intel 80186]] *** [[Intel 80286]] (the first x86 processor with [[protected mode]], used in the [[IBM Personal Computer AT|IBM PC AT]]) ** [[IA-32]], introduced in the [[i386|80386]] ** [[x86-64]] – The original specification was created by [[AMD]]. There are vendor variants, but they're essentially the same: *** [[AMD]]'s [[x86-64#AMD64|AMD64]] *** [[Intel]]'s [[Intel 64]] * [[MCST]] [[Elbrus 2000]] * [[MIPS architecture|MIPS]] * [[MOS Technology 65xx]] ([[8-bit computing|8-bit]]) ** [[MOS Technology 6502|6502]] (CPU for [[Nintendo Entertainment System|NES]], [[VIC-20]], [[BBC Micro]], [[Apple II]], and [[Atari 8-bit computers]]) ** [[MOS Technology 6510|6510]] (CPU for [[Commodore 64]]) ** [[Western Design Center]] [[WDC 65C816|65816/65802]] (CPU for [[Apple IIGS]] and (variant) [[Super Nintendo Entertainment System]]) * [[Motorola 6800]] ([[8-bit computing|8-bit]]) * [[Motorola 68000 series]] (CPUs used in early [[Mac (computer)|Macintosh]] and early [[Sun Microsystems|Sun]] computers) * [[National Semiconductor]] [[NS32000|NS320xx]] * [[IBM POWER architecture|POWER]], first used in the [[IBM RS/6000]] ** [[PowerPC]] – used in [[Power Macintosh]] and in many [[PowerPC#Game consoles / Arcade system boards|game consoles]], particularly of the [[Seventh generation of video game consoles|seventh generation]]. ** [[Power ISA]] – an evolution of [[PowerPC]]. * [[RISC-V]] * [[Sun Microsystems]] (now [[Oracle Corporation|Oracle]]) [[SPARC]] * [[UNIVAC]]{{efn|name=submodels}} ** 30-bit computers: [[UNIVAC 490|490]], 492, 494, [[AN/USQ-20|1230]] ** [[36-bit computing|36-bit]] computers *** [[UNIVAC 1101|1101]], [[UNIVAC 1103|1103]], [[UNIVAC 1105|1105]] *** [[UNIVAC 1100/2200 series|1100/2200 series]] {{div col end}}

== Macro languages == {{Main category|Macro programming languages}}

=== Textual substitution macro languages === [[Macro (computer science)|Macro]] languages transform one source code file into another. A "macro" is essentially a short piece of text that expands into a longer one (not to be confused with [[hygienic macro]]s), possibly with parameter substitution. They are often used to [[preprocess]] source code. Preprocessors can also supply facilities like [[Include directive|file inclusion]].

Macro languages may be restricted to acting on specially labeled code regions (pre-fixed with a <code>#</code> in the case of the C preprocessor). Alternatively, they may not, but in this case it is still often undesirable to (for instance) expand a macro embedded in a [[string literal]], so they still need a rudimentary awareness of syntax. That being the case, they are often still applicable to more than one language. Contrast with source-embeddable languages like [[PHP]], which are fully featured.

* [[C preprocessor]] * [[M4 (computer language)|m4]] (originally from AT&T, bundled with Unix) * [[ML/I]] (general-purpose macro processor) * [[TTM (programming language)|TTM]] (developed at the California Institute of Technology)

=== Application macro languages === [[Scripting language]]s such as [[Tcl (programming language)|Tcl]] and [[ECMAScript]] ([[ActionScript]], [[ECMAScript for XML]], [[JavaScript]], [[JScript]]) have been embedded into applications. These are sometimes called "macro languages", although in a somewhat different sense to textual-substitution macros like [[M4 (computer language)|m4]].

== Metaprogramming languages == [[Metaprogramming]] is the writing of programs that write or manipulate other programs, including themselves, as their data or that do part of the work that is otherwise done at [[Run time (program lifecycle phase)|run time]] during [[compile time]]. In many cases, this allows programmers to get more done in the same amount of time as they would take to write all the code manually.

{{div col|colwidth=15em}} * [[C++]] * [[Compiler-compiler#CWIC|CWIC]] * [[Curl (programming language)|Curl]] * [[D (programming language)|D]] * [[Emacs Lisp]] * [[Elixir (programming language)|Elixir]] * [[F Sharp (programming language)|F#]] * [[Apache Groovy|Groovy]] * [[Haskell]] * [[Julia (programming language)|Julia]] * [[Lisp (programming language)|Lisp]] * [[Lua]] * [[Maude system]] * [[META II]] (and META I, a subset) * [[OCaml]] (MetaOCaml) * [[Nemerle]] * [[Nim (programming language)|Nim]] * [[Perl]] * [[Python (programming language)|Python]] * [[Raku (programming language)|Raku]]<ref>{{Cite web |url=https://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-how/ |title=Meta-programming: What, why and how |date=2011-12-14}}</ref> * [[Red (programming language)|Red]] * [[Ruby (programming language)|Ruby]] * [[Rust (programming language)|Rust]]<ref>{{cite web|url=https://doc.rust-lang.org/nightly/book/ch19-06-macros.html#procedural-macros-for-generating-code-from-attributes|title=Procedural Macros for Generating Code from Attributes|website=doc.rust-lang.org}}</ref> * [[Scheme (programming language)|Scheme]] * [[SequenceL]] * [[Smalltalk]] * [[Source (programming language)|Source]] * [[TREE-META]] * [[Wolfram Mathematica]] ([[Wolfram language]]) * [[Zig (programming language)|Zig]] {{div col end}}

== Modular languages == {{Main|Comparison of programming languages (syntax)#Consuming external software}} [[Modular programming]] is a programming paradigm of organising functions and symbols into independent modules. {{div col|colwidth=20em}} * [[Ada (programming language)|Ada]] * [[ALGOL]] * [[BlitzMax]] * [[C (programming language)|C]] (via [[Clang]] extensions) * [[C++]] (via [[Modules (C++)|C++ modules]]) * [[C Sharp (programming language)|C#]] * [[Clojure]] * [[COBOL]] * [[Common Lisp]] * [[D (programming language)|D]] * [[Dart (programming language)|Dart]] * eC * [[Erlang (programming language)|Erlang]] * [[Elixir (programming language)|Elixir]] * [[Elm (programming language)|Elm]] * [[F (programming language)|F]] * [[F Sharp (programming language)|F#]] * [[Fortran]] * [[Go (programming language)|Go]] * [[Haskell]] * [[IBM/360]] [[IBM Basic assembly language and successors|Assembler]] * [[IBM System/38]] and [[AS/400]] [[Control Language]] (CL) * [[IBM RPG]] * [[Java (programming language)|Java]] (via [[Java package]]s and [[Java Platform Module System|Java modules]]) * [[JavaScript]]<ref>[http://www.ecma-international.org/ecma-262/6.0/#sec-modules ECMAScript® 2015 Language Specification, 15.2 Modules]</ref> * [[Julia (programming language)|Julia]] * [[MATLAB]] * [[ML (programming language)|ML]] * [[Modula]], [[Modula-2]], [[Modula-3]] * Morpho * [[NEWP]] * [[Oberon (programming language)|Oberon]], [[Oberon-2]] * [[Objective-C]] * [[OCaml]] * [[Pascal (programming language)|Pascal]] derivatives ** [[Component Pascal]] ** [[Object Pascal]] ** [[Turbo Pascal]] ** [[UCSD Pascal]] * [[Perl]] * [[PHP]] * [[PL/I]] * [[PureBasic]] * [[Python (programming language)|Python]] * [[R (programming language)|R]] * [[Ruby (programming language)|Ruby]]<ref>{{Cite web|url=https://docs.ruby-lang.org/en/master/Module.html|title=class Module - Documentation for Ruby 3.5}}</ref> * [[Rust (programming language)|Rust]] * [[Visual Basic (.NET)]] * WebDNA.

{{div col end}}

== Multiparadigm languages == {{Main|Comparison of multi-paradigm programming languages}} [[Multi-paradigm programming language|Multiparadigm language]]s support more than one [[programming paradigm]]. They allow a [[Computer program|program]] to use more than one [[Computer program|programming]] style. The goal is to allow programmers to use the best tool for a job, admitting that no one paradigm solves all problems in the easiest or most efficient way.

{{div col|colwidth=20em}}

* [[1C:Enterprise programming language]] (generic, imperative, object-oriented, prototype-based, functional) * [[Ada (programming language)|Ada]] ([[concurrent computing|concurrent]], [[distributed computing|distributed]], [[Generic programming|generic]] ([[template metaprogramming]]), [[Imperative programming|imperative]], [[Object-oriented programming|object-oriented]] ([[Class (computer science)|class-based]])) * [[Algebraic Logic Functional (programming language)|ALF]] ([[Functional programming|functional]], [[logic programming|logic]]) * [[Alma-0]] (constraint, imperative, logic) * [[APL (programming language)|APL]] (functional, imperative, object-oriented (class-based)) * [[BETA (programming language)|BETA]] (functional, imperative, object-oriented (class-based)) * [[C++]] (generic, imperative, object-oriented (class-based), functional, metaprogramming) * [[C Sharp (programming language)|C#]] (generic, imperative, object-oriented (class-based), functional, declarative) * [[Ceylon (programming language)|Ceylon]] (generic, imperative, object-oriented (class-based), functional, declarative) * [[ChucK]] (imperative, object-oriented, time-based, concurrent, on-the-fly) * [[Cobra (programming language)|Cobra]] (generic, imperative, object-oriented (class-based), functional, contractual) * [[Common Lisp]] (functional, imperative, object-oriented (class-based), [[Aspect-oriented programming|aspect-oriented]] (user may add further paradigms, e.g., logic)) * [[Curl (programming language)|Curl]] (functional, imperative, object-oriented (class-based), metaprogramming) * [[Curry (programming language)|Curry]] (concurrent, functional, logic) * [[D (programming language)|D]] (generic, imperative, functional, object-oriented (class-based), metaprogramming) * [[Dart (programming language)|Dart]] (generic, imperative, functional, object-oriented (class-based)) * [[Delphi (software)|Delphi]] [[Object Pascal]] (generic, imperative, object-oriented (class-based), metaprogramming) * [[Dylan (programming language)|Dylan]] (functional, object-oriented (class-based)) * [[ECMAScript]] (functional, imperative, object-oriented (prototype-based)) ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] * [[Eiffel (programming language)|Eiffel]] (imperative, object-oriented (class-based), generic, functional (agents), concurrent (SCOOP)) * [[F Sharp (programming language)|F#]] (functional, generic, object-oriented (class-based), language-oriented) * [[Fantom (programming language)|Fantom]] (functional, object-oriented (class-based)) * [[Go (programming language)|Go]] (imperative, procedural), * [[Apache Groovy|Groovy]] (functional, object-oriented (class-based), imperative, procedural) * [[Harbour (software)|Harbour]] * [[Hop (software)|Hop]] * [[J (programming language)|J]] (functional, imperative, object-oriented (class-based)) * [[Java (programming language)|Java]] (generic, imperative, object-oriented (class-based), functional) * [[Julia (programming language)|Julia]] (imperative, [[multiple dispatch]] ("object-oriented"), functional, metaprogramming) * [[LabVIEW]] ([[Visual programming language|visual]], [[Dataflow programming|dataflow]], concurrent, modular, functional, object-oriented, scripting) * [[Lua]] (functional, imperative, object-oriented ([[Prototype-based programming|prototype-based]])) * [[Mercury (programming language)|Mercury]] (functional, logical, object-oriented) * [[Metaobject|Metaobject protocols]] (object-oriented (class-based, prototype-based)) * [[Nemerle]] (functional, object-oriented (class-based), imperative, metaprogramming) * [[Objective-C]] (imperative, object-oriented (class-based), reflective) * [[OCaml]] (functional, imperative, object-oriented (class-based), modular) * [[Oz (programming language)|Oz]] (functional (evaluation: [[eager evaluation|eager]], [[lazy evaluation|lazy]]), logic, [[Constraint programming|constraint]], imperative, object-oriented (class-based), concurrent, distributed), and Mozart Programming System [[cross-platform]] Oz * [[Object Pascal]] (imperative, object-oriented (class-based)) * [[Perl]] (imperative, functional (can't be purely functional), object-oriented, class-oriented, aspect-oriented (through modules)) * [[PHP]] (imperative, object-oriented, functional (can't be purely functional)) * [[Pike (programming language)|Pike]] (interpreted, general-purpose, high-level, cross-platform, dynamic programming language ) * [[Prograph]] (dataflow, object-oriented (class-based), visual) * [[Python (programming language)|Python]] (functional, compiled, interpreted, object-oriented (class-based), imperative, metaprogramming, extension, impure, interactive mode, iterative, reflective, scripting) * [[R (programming language)|R]] (array, interpreted, impure, interactive mode, list-based, object-oriented prototype-based, scripting) * [[Racket (programming language)|Racket]] (functional, imperative, object-oriented (class-based) and can be extended by the user) * [[Raku (programming language)|Raku]] (concurrent, concatenative, functional, metaprogramming generic, imperative, reflection object-oriented, pipelines, reactive, and via libraries constraints, distributed) * [[Rebol]] (functional, imperative, object-oriented (prototype-based), metaprogramming (dialected)) * [[Red (programming language)|Red]] (functional, imperative, object-oriented (prototype-based), metaprogramming (dialected)) * [[ROOP (programming language)|ROOP]] (imperative, logic, object-oriented (class-based), rule-based) * [[Ruby (programming language)|Ruby]] (imperative, functional, object-oriented (class-based), metaprogramming) * [[Rust (programming language)|Rust]] (concurrent, functional, imperative, object-oriented, generic, metaprogramming, compiled) * [[Scala (programming language)|Scala]] (functional, object-oriented) * [[Seed7]] (imperative, object-oriented, generic) * [[SISAL]] (concurrent, dataflow, functional) * [[Spreadsheet]]s (functional, visual) * [[Swift (programming language)|Swift]] (protocol-oriented, object-oriented, functional, imperative, block-structured) * [[Tcl (programming language)|Tcl]] (functional, imperative, object-oriented (class-based)) ** [[Tea (programming language)|Tea]] (functional, imperative, object-oriented (class-based)) * [[V (programming language)|V (Vlang)]] (functional, imperative, procedural, structured, concurrent) * [[Windows PowerShell]] (functional, imperative, pipeline, object-oriented (class-based)) * [[Wolfram Mathematica]] ([[Wolfram language]]) {{div col end}}

== Numerical analysis == {{See also|List of numerical-analysis software|List of numerical libraries}} Several general-purpose programming languages, such as [[C (programming language)|C]] and [[Python (programming language)|Python]], are also used for technical computing, this list focuses on languages almost exclusively used for technical computing.

{{col-begin|width=85%}} {{col-2}} * [[AIMMS]] * [[AMPL (programming language)|AMPL]] * [[Analytica (software)|Analytica]] * [[Calcpad]] * [[Fortran]] * [[FreeMat]] * [[Frink (programming language)|Frink]] * [[GAUSS (software)|GAUSS]] * [[General Algebraic Modeling System|GAMS]] * [[GNU Data Language]] (GDL) * [[GNU Octave]] * [[Interactive Data Language]] (IDL) * [[J (programming language)|J]] * [[Julia (programming language)|Julia]] * [[Klerer-May System]] {{col-2}} * [[Mathcad]] * [[MATLAB]] * [[MiniZinc]] * [[O-Matrix]] * [[OptimJ]] * [[Ox (programming language)|Ox]] * [[PROSE modeling language|PROSE]] * [[R (programming language)|R]] * [[Oberon (programming language)|Seneca]] – an [[Oberon (programming language)|Oberon]] variant * [[Scilab]] * [[SequenceL]] * [[Speakeasy (computational environment)|Speakeasy]] * [[Sysquake]] * [[Wolfram Mathematica]] ([[Wolfram language]]) {{col-end}}

== Non-English-based languages == {{Main|Non-English-based programming languages}}

* [[Chinese BASIC]] (Chinese) * [[Fjölnir (programming language)|Fjölnir]] (Icelandic) * [[LSE (programming language)|Language Symbolique d'Enseignement]] (French) * [[Rapira]] (Russian) * [[ezhil (programming language)|ezhil]] (Tamil)

== Object-oriented class-based languages == [[Class (programming)|Class]]-based [[object-oriented programming]] languages support [[Object (computer science)|objects]] defined by their class. Class definitions include member data. [[Message passing]] is a key concept, if not the main concept, in object-oriented languages.

Polymorphic functions parameterized by the class of some of their arguments are typically called [[Method (computer programming)|methods]]. In languages with [[single dispatch]], classes typically also include method definitions. In languages with [[multiple dispatch]], methods are defined by [[generic function]]s. There are exceptions where [[single dispatch]] methods are [[generic function]]s (e.g. [[Bigloo]]'s object system).

=== [[Multiple dispatch]] === {{div col|colwidth=10em}} * [[Common Lisp]] * [[Cecil (programming language)|Cecil]] * [[Dylan (programming language)|Dylan]] * [[Julia (programming language)|Julia]]{{efn|The concept of ''object'' with the traditional single-dispatch OO semantics is not present in Julia, instead with the more general multiple dispatch on different types at runtime.}} * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.perl6.org/language/classtut |title=Classes and Roles}}</ref>

{{div col end}}

=== Single dispatch === {{div col|colwidth=20em}} * [[ActionScript|ActionScript 3.0]] * [[Actor (programming language)|Actor]] * [[Ada (programming language)|Ada 95]] and [[Ada (programming language)|Ada 2005]] (multi-purpose language) * [[APL (programming language)|APL]] * [[BETA (programming language)|BETA]] * [[C++]] * [[C Sharp (programming language)|C#]] * [[Ceylon (programming language)|Ceylon]] * [[Dart (programming language)|Dart]] * [[Oxygene (programming language)|Oxygene]] (formerly named Chrome) * [[ChucK]] * [[Cobra (programming language)|Cobra]] * [[ColdFusion]] * [[Curl (programming language)|Curl]] * [[D (programming language)|D]] * Distributed Application Specification Language (DASL) * [[Delphi (software)|Delphi]] [[Object Pascal]] * [[E (programming language)|E]] * [[GNU E]] * [[Eiffel (programming language)|Eiffel]] ** [[Sather]] ** [[Ubercode]] * [[Fortran 2003]] * [[Fortress (programming language)|Fortress]] * [[Gambas]] * [[GameMaker: Studio|Game Maker Language]] * [[Harbour (software)|Harbour]] * [[J (programming language)|J]] * [[Java (programming language)|Java]] ** [[Processing (programming language)|Processing]] ** [[Apache Groovy|Groovy]] ** [[Join Java]] ** [[Tea (programming language)|Tea]] ** [[X10 (programming language)|X10]] * [[LabVIEW]] * [[Lua]] * [[Modula-2]] (data abstraction, information hiding, strong typing, full modularity) ** [[Modula-3]] (added more object-oriented features to Modula-2) * [[Nemerle]] * [[NetRexx]] * [[Oberon-2]] (full object-orientation equivalence in an original, strongly typed, Wirthian manner) * [[Object Pascal]] * [[Object REXX]] * [[Objective-C]] (a superset of C adding a [[Smalltalk]] derived object model and message passing syntax) * [[OCaml]] * [[OpenEdge Advanced Business Language]] (ABL) * [[Oz (programming language)|Oz, Mozart Programming System]] * [[Perl]] 5 * [[PHP]] * [[Pike (programming language)|Pike]] * [[Prograph]] * [[Python (programming language)|Python]] (interpretive language, optionally object-oriented) * [[Revolution (programming language)|Revolution]] (programmer does not get to pick the objects) * [[Ruby (programming language)|Ruby]] * [[Scala (programming language)|Scala]] * [[Speakeasy (computational environment)|Speakeasy]] * [[Simula]] (first object-oriented language, developed by [[Ole-Johan Dahl]] and [[Kristen Nygaard]]) * [[Smalltalk]] (pure object-orientation, developed at [[PARC (company)|Xerox PARC]]) ** [[Little Smalltalk]] ** [[Pharo]] ** [[Squeak]] *** [[Scratch (programming language)|Scratch]] ** [[IBM VisualAge]] ** [[VisualWorks]] * [[Parallax Propeller|SPIN]] * [[SuperCollider]] * [[VBScript]] (Microsoft Office 'macro scripting' language) * [[Visual DataFlex]] * [[Visual FoxPro]] * [[Visual Prolog]] * [[Microsoft Dynamics AX|X++]] * [[Xojo]] * [[XOTcl]] {{div col end}}

== Object-oriented prototype-based languages == [[Prototype-based programming|Prototype-based languages]] are object-oriented languages where the distinction between classes and instances has been removed:

{{div col|colwidth=20em}} * [[1C:Enterprise programming language]] * [[Actor-Based Concurrent Language]] (ABCL, ABCL/1, ABCL/R, ABCL/R2, ABCL/c+) * [[Agora (programming language)|Agora]] * [[Cecil (programming language)|Cecil]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] (first named Mocha, then LiveScript) ** [[JScript]] * [[Etoys (programming language)|Etoys]] in [[Squeak]] * [[Io (programming language)|Io]] * [[Lua]] * [[MOO (programming language)|MOO]] * [[NewtonScript]] * [[Obliq]] * [[R (programming language)|R]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Self (programming language)|Self]] (first prototype-based language, derived from [[Smalltalk]]) * [[TADS]] {{div col end}}

== Off-side rule languages == {{Main|Off-side rule#Off-side rule languages}}

[[Off-side rule]] languages denote blocks of code by their [[indentation style|indentation]].

{{div col|colwidth=20em}} * [[ISWIM]], the abstract language that introduced the rule * [[ABC (programming language)|ABC]], Python's parent ** [[Python (programming language)|Python]] *** [[Cobra (programming language)|Cobra]] *** [[Boo (programming language)|Boo]] * [[Miranda (programming language)|Miranda]], Haskell's parent ** [[Orwell (programming language)|Orwell]] ** [[Haskell]] *** [[Curry (programming language)|Curry]] * [[Elixir (programming language)|Elixir]] (, do: blocks) * [[F Sharp (programming language)|F#]] * [[Nemerle]] (off-side optional)<ref name="nemerle-offside" /> * [[Nim (programming language)|Nim]] * [[Occam (programming language)|Occam]] * [[Parallax Propeller|SPIN]] * [[Scala (programming language)|Scala]] (off-side optional) {{div col end}}

== Procedural languages == [[Procedural programming]] languages are based on the concept of the unit and scope (the data viewing range) of an executable code statement. A procedural program is composed of one or more units or modules, either user coded or provided in a code library; each module is composed of one or more procedures, also called a function, routine, subroutine, or method, depending on the language. Examples of procedural languages include:

{{div col|colwidth=15em}} * [[Ada (programming language)|Ada]] (multi-purpose language) * [[ALGOL 58]] ** [[JOVIAL]] ** [[NELIAC]] * [[ALGOL 60]] (very influential language design) ** [[SMALL]] Machine ALGOL Like Language * [[ALGOL 68]] * [[Alma-0]] * [[BASIC]] (these lack most modularity in (especially) versions before about 1990) * [[BCPL]] * [[BLISS]] * [[C (programming language)|C]] * [[C++]] * [[C Sharp (programming language)|C#]] (similar to Java/C++) * [[Ceylon (programming language)|Ceylon]] * [[CHILL]] * [[ChucK]] (C/Java-like syntax, with new syntax elements for time and parallelism) * [[COBOL]] * [[Cobra (programming language)|Cobra]] * [[ColdFusion]] * [[CPL (programming language)|CPL]] (Combined Programming Language) * [[Curl (programming language)|Curl]] * [[D (programming language)|D]] * Distributed Application Specification Language (DASL) (combine [[declarative programming]] and [[imperative programming]]) * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] (first named Mocha, then LiveScript) ** [[JScript]] ** [[Source (programming language)|Source]] * [[Eiffel (programming language)|Eiffel]] * [[Forth (programming language)|Forth]] * [[Fortran]] (better modularity in later Standards) ** [[F (programming language)|F]] * [[GAUSS (software)|GAUSS]] * [[Go (programming language)|Go]] * [[Harbour (software)|Harbour]] * [[HyperTalk]] * [[Java (programming language)|Java]] ** [[Apache Groovy|Groovy]] ** [[Join Java]] ** [[Tea (programming language)|Tea]] * [[JOVIAL]] * [[Julia (programming language)|Julia]] * [[Language H]] * [[Lasso (programming language)|Lasso]] * [[Modula-2]] (fundamentally based on modules) * [[MATLAB]] * [[Mesa]] * [[MUMPS]] (first release was more modular than other languages of the time; the standard has become even more modular since then) * [[Nemerle]] * [[Nim (programming language)|Nim]] * [[Oberon (programming language)|Oberon]], [[Oberon-2]] (improved, smaller, faster, safer follow-ons for Modula-2) ** [[Component Pascal]] ** [[Oberon (programming language)|Seneca]] * [[OCaml]] * [[Occam (programming language)|Occam]] * [[Oriel (scripting language)|Oriel]] * [[Pascal (programming language)|Pascal]] (successor to ALGOL 60, predecessor of Modula-2) ** [[Free Pascal]] (FPC) ** [[Object Pascal]], [[Delphi (software)|Delphi]] * [[PCASTL]] * [[Perl]] * [[Pike (programming language)|Pike]] * [[PL/C]] * [[PL/I]] (large general-purpose language, originally for IBM mainframes) * [[Plus (programming language)|Plus]] * [[PowerShell]] * [[PROSE modeling language|PROSE]] * [[Python (programming language)|Python]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]] * [[Rapira]] * [[IBM RPG|RPG]] * [[Rust (programming language)|Rust]] * [[S-Lang]] * [[VBScript]] * [[Visual Basic]] * [[Visual FoxPro]] * [[Wolfram Mathematica]] ([[Wolfram language]]) * [[Microsoft Dynamics AX]] (X++) {{div col end}}

== Query languages == {{Main|Query language}}

== Reflective languages == [[Reflective programming]] languages let programs examine and possibly modify their high-level structure at runtime or compile-time. This is most common in high-level virtual machine programming languages like [[Smalltalk]], and less common in lower-level programming languages like [[C (programming language)|C]]. Languages and platforms supporting reflection:

{{See also|Aspect-oriented programming}}

{{div col|colwidth=20em}} * [[Befunge]] * [[C++]] (since [[C++26]]) * [[Ceylon (programming language)|Ceylon]] * [[Charm (language)|Charm]] * [[ChucK]] * [[List of CLI languages|CLI]] ** [[C Sharp (programming language)|C#]] * [[Cobra (programming language)|Cobra]] * [[Component Pascal]] [[BlackBox Component Builder]] * [[Curl (programming language)|Curl]] * [[Cypher (query language)|Cypher]] * [[Delphi (software)|Delphi]] [[Object Pascal]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] ** [[JScript]] * [[Emacs Lisp]] * [[Eiffel (programming language)|Eiffel]] * [[Harbour (software)|Harbour]] * [[Julia (programming language)|Julia]] * [[List of JVM languages|JVM]] ** [[Java (programming language)|Java]] ** [[Apache Groovy|Groovy]] ** [[Join Java]] ** [[X10 (programming language)|X10]] * [[Lisp (programming language)|Lisp]] ** [[Clojure]] ** [[Common Lisp]] ** [[Dylan (programming language)|Dylan]] ** [[Logo (programming language)|Logo]] ** [[Scheme (programming language)|Scheme]] * [[Lua]] * [[Maude system]] * [[Oberon-2]] – ETH Oberon System * [[Objective-C]] * [[PCASTL]] * [[Perl]] * [[PHP]] * [[Pico (programming language)|Pico]] * [[Poplog]] ** [[POP-11]] * [[PowerShell]] * [[Prolog]] * [[Python (programming language)|Python]] * [[Raku (programming language)|Raku]]<ref>{{Cite web |url=https://docs.perl6.org/language/mop |title=Meta-object protocol (MOP)}}</ref> * [[Rebol]] * [[Red (programming language)|Red]] * [[Ruby (programming language)|Ruby]] * [[Rust (programming language)|Rust]] (with third-party libraries)<ref>{{Cite web|title=bevy_reflect - Rust|url=https://docs.rs/bevy_reflect/latest/bevy_reflect/|website=docs.rs|date=30 May 2025}}</ref> * [[Smalltalk]] (pure object-orientation, originally from [[PARC (company)|Xerox PARC]]) ** [[Little Smalltalk]] ** [[Self (programming language)|Self]] ** [[Squeak]] ** [[IBM VisualAge]] ** [[VisualWorks]] * [[SNOBOL]] * [[Tcl (programming language)|Tcl]] * [[Wolfram Mathematica]] ([[Wolfram language]]) * [[XOTcl]] * [[Microsoft Dynamics AX|X++]] * [[Xojo]] {{div col end}}

== Rule-based languages == Rule-based languages instantiate rules when activated by conditions in a set of data. Of all possible activations, some set is selected and the statements belonging to those rules execute. Rule-based languages include:{{citation needed|date=March 2015}}

{{div col|colwidth=20em}} * [[awk]] * [[CLIPS]] * [[Claire (programming language)|Claire]] * [[Constraint Handling Rules]] * [[Drools]] * [[GOAL agent programming language]] * [[Jess (programming language)|Jess]] * [[OPS5]] * [[Prolog]] * [[ToonTalk]] – robots are rules * [[Wolfram Mathematica]] ([[Wolfram language]]) * {{citation needed span|text=[[XSLT]]|date=August 2015}} {{div col end}}

== Scripting languages ==

{{main|Scripting language}}

{{div col|colwidth=20em}} * [[AngelScript]] * [[AppleScript]] * [[AutoHotKey]] * [[AutoIt]] * [[AWK]] * [[bc (programming language)|bc]] * [[BeanShell]] * [[C (programming language)|C]] (via [[Tiny C Compiler]]) * [[Ch (computer programming)|Ch]] (Embeddable C/C++ interpreter) * [[List of CLI languages|CLI]] ** [[C Sharp (programming language)|C#]] (compiled to bytecode, and running [[Just-in-time compilation|JIT]] inside VM) * [[CLIST]] * [[ColdFusion]] * [[ECMAScript]] ** [[ActionScript]] ** [[ECMAScript for XML]] ** [[JavaScript]] (first named Mocha, then LiveScript) ** [[JScript]] ** [[Source (programming language)|Source]] * [[Emacs Lisp]] * [[CMS EXEC]] * [[EXEC 2]] * [[GameMaker: Studio|Game Maker Language]] (GML) * [[Godot (game engine)#GDScript|GDScript]] * [[Io (programming language)|Io]] * [[JASS (scripting language)|JASS]] * [[Julia (programming language)|Julia]] (compiled on the fly to [[machine code]], by default, interpreting also available) * [[List of JVM languages|JVM]] ** [[Apache Groovy|Groovy]] ** [[Java (programming language)|Java]] (via JBang)<ref>{{Cite web|title=JBang|url=https://www.jbang.dev/|website=jbang.dev|access-date=11 September 2025}}</ref> ** [[Join Java]] * [[Lasso (programming language)|Lasso]] * [[Lua]] * [[MAXScript]] * [[Maya Embedded Language|MEL]] * [[Oriel (scripting language)|Oriel]] * [[Pascal Script]] * [[Perl]] * [[PHP]] (intended for Web servers) * [[Python (programming language)|Python]] * [[R (programming language)|R]] * [[Raku (programming language)|Raku]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Rexx]] ** [[Object REXX]] (OREXX, OOREXX) * [[Revolution (programming language)|Revolution]] * [[Ruby (programming language)|Ruby]] * [[RUNCOM]] (scripting language for running [[Compatible Time-Sharing System|CTSS]]) programs) * [[S-Lang]] * [[sed]] * [[Smalltalk]] * [[Squirrel (programming language)|Squirrel]] * [[Tea (programming language)|Tea]] * [[Tcl (programming language)|Tcl]] * [[TorqueScript (programming language)|TorqueScript]] * [[VBScript]] * Many shell command languages have powerful scripting abilities: ** [[Bourne shell|sh]] and compatibles *** [[KornShell|Ksh]] *** [[Bash (Unix shell)|Bash]] ** [[DIGITAL Command Language]] (DCL) on VMS ** [[PowerShell]] ([[.NET Framework|.NET]]-based CLI) {{div col end}}

== Stack-based languages == {{Main category|Stack-oriented programming languages}}

Stack-based languages are a type of [[data-structured language]] that are based on the [[Stack (abstract data type)|stack]] data structure.

{{div col|colwidth=20em}} * [[Beatnik (programming language)|Beatnik]] * [[Befunge]] * [[Factor (programming language)|Factor]] * [[Forth (programming language)|Forth]] * [[Joy (programming language)|Joy]] (all functions work on parameter stacks instead of named parameters) * [[Piet (programming language)|Piet]] * [[Poplog]] via its implementation language [[POP-11]] * [[PostScript]] * [[RPL (programming language)|RPL]] * [[S-Lang]] {{div col end}}

== Synchronous languages == {{Main category|Synchronous programming languages}}

[[Synchronous programming language]]s are optimized for programming reactive systems, systems that are often interrupted and must respond quickly. Many such systems are also called [[Real-time computing|realtime systems]], and are used often in [[embedded system]]s.

Examples: * [[Argus (programming language)|Argus]] * [[Averest]] * [[Esterel]] * [[Lustre (programming language)|Lustre]] * [[SIGNAL (programming language)|Signal]] * [[Céu (programming language)]]

== Shading languages == {{Category see also|Category:Shading languages}}

A [[shading language]] is a graphics programming language adapted to programming shader effects. Such language forms usually consist of special data types, like "color" and "normal". Due to the variety of target markets for 3D computer graphics.

=== Real-time rendering === They provide both higher hardware abstraction and a more flexible programming model than previous paradigms which hardcoded transformation and shading equations. This gives the programmer greater control over the rendering process and delivers richer content at lower overhead. {{div col}} * [[Adobe Graphics Assembly Language]] (AGAL)<ref>{{cite web|last1=Scabia|first1=Marco|title=What is AGAL |url=https://www.adobe.com/devnet/flashplayer/articles/what-is-agal.html|website=Adobe Developer Connection|publisher=Adobe|access-date=8 May 2018|language=en}}</ref> * [[ARB assembly language]] (ARB assembly) * [[OpenGL Shading Language]] (GLSL or glslang) * [[High-Level Shading Language]] (HLSL) or DirectX Shader Assembly Language * [[PlayStation Shader Language]] (PSSL) * [[Metal (API)|Metal Shading Language]] (MSL) * [[Cg (programming language)|Cg]] {{div col end}}

=== Offline rendering === Shading languages used in offline rendering produce maximum image quality. Processing such shaders is time-consuming. The computational power required can be expensive because of their ability to produce photorealistic results. {{div col}} * [[RenderMan Shading Language]] (RSL) * [[Open Shading Language]] (OSL) {{div col end}}

== Syntax-handling languages == These languages assist with generating [[Lexical analysis|lexical analyzers]] and [[parsing|parsers]] for [[context-free grammar]]s.

* [[ANTLR]] * [[Coco/R]] (EBNF with semantics) * [[GNU bison]] (FSF's version of Yacc) * GNU [[Flex (lexical analyser generator)|Flex]] (FSF version of Lex) * [[JavaCC]] * [[lex (software)|lex]] (Lexical Analysis, from Bell Labs) * [[M4 (computer language)|M4]] * [[Parsing expression grammar]] (PEG) * [[Prolog]] * [[Emacs Lisp]] * [[Lisp (programming language)|Lisp]] * [[Raku (programming language)|Raku]]<ref>{{cite web|url=https://docs.raku.org/language/grammars |title=Grammars}}</ref> * [[SableCC]] * [[Scheme (programming language)|Scheme]] * [[yacc]] (yet another compiler-compiler, from Bell Labs) * [[XPL]]

== System languages == A ''[[system programming language]]'' is for low-level tasks like memory management or task management; it usually refers to a language used for [[systems programming]]; such languages are designed for writing system software, which usually requires different development approaches relative to application software.

System software is computer software designed to operate and control computer hardware, and provide a platform to run application software. System software includes software categories such as operating systems, utility software, device drivers, compilers, and linkers. Examples of system languages include:

{| class="wikitable sortable collapsible" |- ! Language !! Originator !! First appeared !! Influenced by !! Used for |- | [[Executive Systems Problem Oriented Language|ESPOL]] || [[Burroughs Corporation]] || 1961 || [[ALGOL 60]] || [[Burroughs MCP|MCP]] |- | [[PL/I]] || [[IBM]], [[SHARE (computing)|SHARE]] || 1964 || ALGOL 60, FORTRAN, some COBOL || [[Multics]] |- | [[PL360]] || [[Niklaus Wirth]] || 1968 || ALGOL 60 || [[ALGOL W]] |- | [[C (programming language)|C]] || [[Dennis Ritchie]] || 1969 || [[BCPL]] || Most [[Kernel (operating system)|operating system kernels]], including [[Windows NT]] and most [[Unix-like]] systems |- | [[PL/S]] || [[IBM]] || 196x || [[PL/I]] || [[OS/360]] |- | [[BLISS]] || [[Carnegie Mellon University]] || 1970 || ALGOL-PL/I<ref>{{cite journal |last1=Wulf |first1=W.A. |last2=Russell |first2=D.B. |last3=Haberman |first3=A.N. |date=December 1971 |title=BLISS: A Language for Systems Programming |journal=Communications of the ACM |volume=14 |issue=12 |pages=780–790 |doi=10.1145/362919.362936 |citeseerx=10.1.1.691.9765 |s2cid=9564255}}</ref> || [[OpenVMS|VMS]] (portions) |- | [[PL/I#PL/I dialects|PL/8]] || [[IBM]] || 197x || [[PL/I]] || [[IBM AIX|AIX]] |- | [[PL/I#PL/I dialects|PL/MP and PL/MI]] || [[IBM]] || 197x || [[PL/I]] || [[Control Program Facility|CPF]], [[OS/400]] |- | [[PL-6]] || [[Honeywell, Inc.]] || 197x || [[PL/I]] || [[Honeywell CP-6|CP-6]] |- | [[SYMPL]] || [[Control Data Corporation|CDC]] || 197x || [[JOVIAL]] || [[NOS (operating system)|NOS]] subsystems, most compilers, FSE editor |- | [[C++]] || [[Bjarne Stroustrup]] || 1979 || [[C (programming language)|C]], [[Simula]] || See C++ Applications<ref>{{cite web|url=http://www.stroustrup.com/applications.html|title=C++ Applications}}</ref> |- | [[Ada (programming language)|Ada]] || [[Jean Ichbiah]], [[S. Tucker Taft]]|| 1983 || [[ALGOL 68]], [[Pascal (programming language)|Pascal]], [[C++]], [[Java (programming language)|Java]], [[Eiffel (programming language)|Eiffel]] || Embedded systems, OS kernels, compilers, games, simulations, [[CubeSat]], air traffic control, and avionics |- | [[D (programming language)|D]] || [[Digital Mars]] || 2001 || [[C++]] || Multiple domains<ref>{{Cite web |url=https://dlang.org/orgs-using-d.html |title=Organizations using the D Language |website=D Programming Language}}</ref> |- | [[Nim (programming language)|Nim]] || Andreas Rumpf || 2008 || [[Ada (programming language)|Ada]], [[Modula-3]], [[Lisp (programming language)|Lisp]], [[C++]], [[Object Pascal]], [[Python (programming language)|Python]], [[Oberon (programming language)|Oberon]] || OS kernels, compilers, games |- | [[Rust (programming language)|Rust]] || [[Mozilla Research]]<ref>{{cite web |url=https://www.mozilla.org/en-US/research/ |title=Mozilla Research |date=1 January 2014}}</ref> || 2010 || [[C++]], [[Haskell]], [[Erlang (programming language)|Erlang]], [[Ruby (programming language)|Ruby]] || [[Servo (software)|Servo layout engine]], [[RedoxOS]] |- | [[Swift (programming language)|Swift]] || [[Apple Inc.]] || 2014 || [[C (programming language)|C]], [[Objective-C]], [[Rust (programming language)|Rust]] || [[macOS]], [[iOS]] app development{{efn|Swift uses [[Automatic Reference Counting|automatic reference counting]].}} |- | [[Zig (programming language)|Zig]] | Andrew Kelley | 2016 | [[C (programming language)|C]], [[C++]], [[LLVM IR]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]], [[JavaScript]] | As a replacement for C |- | [[V (programming language)|V (Vlang)]] | Alexander Medvednikov | 2019 | [[C (programming language)|C]], [[Go (programming language)|Go]], [[Oberon-2]], [[Rust (programming language)|Rust]], [[Swift (programming language)|Swift]], [[Kotlin]] | Vinix OS, OS kernels, compilers, games |}

== Transformation languages == {{Main|Transformation language}} [[Transformation language]]s serve the purpose of transforming (translating) source code specified in a certain formal language into a defined destination format code. It is most commonly used in intermediate components of more complex super-systems in order to adopt internal results for input into a succeeding processing routine. {{div col}} * [[ATLAS Transformation Language|ATL]] * [[AWK]] * [[MOFM2T]] * [[QVT]] * [[Raku (programming language)|Raku]] * [[XSLT]] is the best known [[XML transformation language]] {{div col end}}

== Visual languages == {{Main category|Visual programming languages}}

[[Visual programming language]]s let users specify programs in a two-(or more)-dimensional way, instead of as one-dimensional text strings, via graphic layouts of various types. Some [[dataflow programming]] languages are also visual languages.

{{div col}} * [[Analytica (software)|Analytica]] * [[Blockly]] * [[Clickteam|Clickteam Fusion]] * [[DRAKON]] * [[Fabrik (software)|Fabrik]] * [[Grasshopper 3D|Grasshopper]] * [[Max (software)|Max]] * [[NXT-G]] * [[Pict (programming language)|Pict]] * [[Prograph]] * [[Pure Data]] * [[Quartz Composer]] * [[Scratch (programming language)|Scratch]] (written in and based on [[Squeak]], a version of [[Smalltalk]]) * [[Snap! (programming language)|Snap!]] * [[Simulink]] * [[Spreadsheet]]s * [[Stateflow]] * [[Subtext (programming language)|Subtext]] * [[ToonTalk]] * [[Agilent VEE|VEE]] * [[VisSim]] * [[Vvvv]] * [[XOD (programming language)|XOD]] {{div col end}}

== Wirth languages == Computer scientist [[Niklaus Wirth]] designed and implemented several influential languages.

{{div col}} * [[ALGOL W]] * [[Euler (programming language)|Euler]] * [[Modula]] ** [[Modula-2]], [[Modula-3]], variants *** [[Obliq]] Modula 3 variant * [[Oberon (programming language)|Oberon]] (Oberon, Oberon-07, Oberon-2) ** [[Component Pascal]] ** [[Oberon-2]] * [[Pascal (programming language)|Pascal]] ** [[Object Pascal]] (umbrella name for [[Delphi (software)|Delphi]], [[Free Pascal]], [[Oxygene (programming language)|Oxygene]], others) {{div col end}} * [[PL360]]

== XML-based languages == These are languages based on or that operate on [[XML]].<!--Not sure I understand this, I believe all three databases have XML support: "Although the big-boy equivalents of Oracle/PostgreSQL/MSSQL don't yet exist for XML, there are languages to navigate through it and its more tree-oriented structure."-->

{{div col}} * [[Apache Ant|Ant]] * [[Cω]] * [[ECMAScript for XML]] * [[Extensible Application Markup Language]] (XAML) * [[OpenLaszlo|LZX]] * [[XPath]] * [[XQuery]] * [[XProc]] * eXtensible Stylesheet Language Transformations ([[XSLT]]) {{div col end}}

== See also == * [[Programming paradigm]] * [[IEC 61131-3]] – a standard for [[programmable logic controller]] (PLC) languages * [[List of educational programming languages]] * [[List of document markup languages]] * [[List of markup languages]] * [[List of open-source programming languages]] * [[Esoteric programming language]]

== Notes == {{Notelist}}

== References == {{Reflist}}

{{Programming languages}}

{{DEFAULTSORT:List Of Programming Languages By Category}} [[Category:Lists of programming languages| ]] [[Category:Array programming languages]]