List of Programming Languages by Type
List of Programming Languages by Type
1Array language
2Assembly languages
3Authoring languages
4Constraint programming
5Command line interface languages
6Compiled languages
7Concurrent languages
8Curly-bracket languages
9Dataflow languages
10Data-oriented languages
11Data-structured languages
12Decision table languages
13Declarative languages
14Embeddable languages
14.1In source code
14.1.1Server side
14.1.2Client side
14.2In object code
15Educational languages
16Esoteric languages
17Extension languages
18Fourth-generation languages
19Functional languages
19.1Pure
19.2Impure
20Hardware description languages
20.1HDLs for analog circuit design
20.2HDLs for digital circuit design
21Imperative languages
22Interactive mode languages
23Interpreted languages
24Iterative languages
25List-based languages LISPs
26Little languages
27Logic-based languages
28Machine languages
29Macro languages
29.1Textual substitution macro languages
29.2Application macro languages
30Metaprogramming languages
31Multiparadigm languages
32Numerical analysis
33Non-English-based languages
34Object-oriented class-based languages
34.1Multiple dispatch
34.2Single dispatch
35Object-oriented prototype-based languages
36Off-side rule languages
37Procedural languages
38Reflective languages
39Rule-based languages
40Scripting languages
41Stack-based languages
42Synchronous languages
43Syntax handling languages
44Transformation languages
45Visual languages
46Wirth languages
47XML-based languages
48See also
49References
50External links
Array language
Array programming (also known as vector or multidimensional languages) generalize operations on scalars to apply
transparently to vectors, matrices, and higher-dimensional arrays.
A+
GAUSS
Analytica
APL
Julia
Chapel
Fortran
MATLAB
Freemat
Octave
X10
ZPL
S-Lang
IDL
SequenceL
Wolfram Language
Assembly languages
Assembly languages directly correspond to a machine language (see below) so machine code instructions appear
in a form understandable by humans. Assembly languages lets programmers use symbolic addresses, which
the assembler converts to absolute addresses. Most assemblers also support macros and symbolic constants.
Authoring languages
TUTOR
Lasso
Constraint programming
Further information: List of constraint programming languages
CHAIN (Datapoint)
CMS EXEC
DCL DIGITAL Command Language standard CLI language for VMS (DEC, Compaq, HP)
DOS batch language (standard CLI/batch language for the IBM PC running DOS operating systems, popular
before Windows)
EXEC 2
JCL (punch card-oriented batch control language for IBM System/360 family mainframes)
REXX
Windows batch language (Windows batch file language as understood by COMMAND.COM and CMD.EXE)
Compiled languages[edit]
These are languages typically processed by compilers, though theoretically any language can be compiled or
interpreted. See also compiled language.
ActionScript
ALGOL (extremely influential language design the second high level language compiler)
BCPL
Blue
C++ (One of the most widely used object-oriented (OO) languages specially used in large scale, highly
complex, high performance software systems)
CLEO (Clear Language for Expressing Orders) used the compiler for the British Leo computers
COBOL
Cobra
Common Lisp
Curl
DASL compiles into Java, JavaScript, JSP, Flex, etc., which are further compiled into a .war file
Dylan
eC
Sather
Ubercode
Emacs Lisp
Erlang
Factor
Fortran (the first high-level, compiled language, from IBM, John Backus, et al.)
GAUSS
Go
Haskell
Harbour
Java (usually compiled into JVM bytecode although ahead-of-time (AOT) compilers exist that compile
to machine code)
JOVIAL
LabVIEW
Mercury
Objective-C
Plus
Rust
Simula (the first object-oriented language, developed by Ole-Johan Dahl and Kristen Nygaard)
Smalltalk generally compiled to platform independent bytecode that runs on a Virtual Machine
Swift
ML
Standard ML (SML)
Alice
OCaml
Turing
Visual Basic (Earlier versions compiled directly to a native runtime. Recent .NET versions compile into
Intermediate Language that is Just-In-Time compiled into a native image at runtime.)
Visual FoxPro
Visual Prolog
X++
X#
XL
Z++
Concurrent languages
See also: List of concurrent and parallel programming languages and Category:Concurrent programming languages
Message passing languages provide language constructs for concurrency. The predominant paradigm for
concurrency in mainstream languages such as Java is shared memoryconcurrency based on monitors. Concurrent
languages that make use of message passing have generally been inspired by CSP or the -calculus, but have had
little commercial success, except for Ada and Erlang. Ada is a multipurpose language and concurrent programming
is only one option available.
ChucK domain specific programming language for audio, precise control over concurrency and timing
Cilk a concurrent C
Chapel
Co-array Fortran
Curry
Go
Java
X10
Julia
Join-calculus
Limbo relative of Alef, used for systems programming in Inferno (operating system)
occam- a modern variant of occam, which incorporates ideas from Milner's -calculus
Orc
Rust actor-based
SALSA actor language with token-passing, join, and first-class continuations for distributed computing over
the Internet
SR research language
Unified Parallel C
Curly-bracket languages
The curly-bracket or curly-brace programming languages have a syntax that defines statement blocks using
the curly bracket or brace characters { and } . This syntax originated with BCPL (1966), and was popularized
by C (1972). Many curly-bracket languages descend from or are strongly influenced by C. Examples of curly-bracket
languages include:
ABCL/c+
AWK
Alef
bc
BCPL
Limbo
AutoHotkey
Go
C++
Join Java
C#
Kotlin
Ceylon
Tea
X10
LPC
MSL
MEL
Dart
PCASTL
Perl
eC
PHP
ECMAScript
Pico
ActionScript
Pike
JavaScript
Rust
JScript
S-Lang
TypeScript
Scala
sed
GLSL
SuperCollider
ICI
Swift
Java
UnrealScript
Processing
Groovy
Dataflow languages
Dataflow programming languages rely on a (usually visual) representation of the flow of data to specify the program.
Frequently used for reacting to discrete events or for processing streams of data. Examples of dataflow languages
include:
Hartmann pipelines
Reaktor
G (used in LabVIEW)
Lucid
VEE
Max
VHDL
Oz
VisSim
Prograph
WebMethods Flow
Pure Data
Data-oriented languages
Data-oriented languages provide powerful ways of searching and manipulating the relations that have been
described as entity relationship tables which map one set of things into other sets. Examples of data-oriented
languages include:
Clarion
SQL
Clipper
WebDNA
WebQL
RDQL
Wolfram Language
SPARQL
Data-structured languages
Data-structured languages are those where logic is structured in ways similar to their data. Such languages are
generally well suited to reflection and introspection. There are three main types:
Array-based
List-based
Stack-based
Assembly languages that statically link data inline with instructions can also be considered data-structured, in the
most primitive way.
Filetab
Declarative languages
Declarative languages describe a problem rather than defining a solution. Declarative programming stands in
contrast to imperative programming via imperative programming languages, where serial orders (imperatives) are
given to a computer. In addition to the examples given just below, all (pure) functional and logic-based programming
languages are also declarative. In fact, "functional" and "logical" constitute the usual subcategories of the
declarative category.
Analytica
Ant (partially declarative languages, partially imperative
programming)
Oz
RDQL
programming)
Lustre
SPARQL
MetaPost
SQL
Modelica
Wolfram Language
Prolog
xBase
XSL Transformations
Embeddable languages
In source code
Source embeddable languages embed small pieces of executable code inside a piece of free-form text, often a web
page.
Client-side embedded languages are limited by the abilities of the browser or intended client. They aim to provide
dynamism to web pages without the need to recontact the server.
Server-side embedded languages are much more flexible, since almost any language can be built into a server. The
aim of having fragments of server-side code embedded in a web page is to generate additional markup dynamically;
the code itself disappears when the page is served, to be replaced by its output.
Server side
PHP
VBScript
The above examples are particularly dedicated to this purpose. A large number of other languages, such
as Erlang, Scala, Perl and Ruby can be adapted (for instance, by being made into Apache modules).
Client side
ActionScript
ECMAScript
Java
JScript
JavaScript
In object code
A wide variety of dynamic or scripting languages can be embedded in compiled executable code. Basically, object
code for the language's interpreter needs to be linked into the executable. Source code fragments for the embedded
language can then be passed to an evaluation function as strings. Application control languages can be
implemented this way, if the source code is input by the user. Languages with small interpreters are preferred.
AngelScript
MiniD
Ch
Python
EEL
Io
Squirrel
Julia
Tcl
Lua
Educational languages
Languages developed primarily for the purpose of teaching and learning of programming.
Alice
Modula-2
Blue
Pascal
COMAL
Scheme
Elan
Scratch
Logo
Turing
KTurtle
Wolfram Language
Esoteric 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.
Befunge
INTERCAL
Brainfuck
LOLCODE
Chef
Malbolge
Piet
Shakespeare
Whitespace
Extension languages[edit]
Extension programming languages are languages embedded into another program and used to harness its features
in extension scripts.
CAL
C/AL(C/SIDE)
Guile
Emacs Lisp
REXX
S-Lang
SQL
Squirrel
Tcl
Vim script
VBA
Windows PowerShell
Fourth-generation languages[edit]
Fourth-generation programming languages are high-level languages built around database systems. They are
generally used in commercial environments.
ABAP
CorVision
CSC's GraphTalk
FOCUS
LINC 4GL
NATURAL
Progress 4GL
Uniface
Visual DataFlex
Visual FoxPro
xBase
Functional languages
Functional programming languages define programs and subroutines as mathematical functions. Many so-called
functional languages are "impure", containing imperative features. Many functional languages are tied to
mathematical calculation tools. Functional languages include:
Pure
Charity
Haskell
Clean
Hope
Coq (Gallina)
Mercury
Curry
Miranda
Elm
Idris
Frege
SequenceL
Impure
APL
ATS
CAL
Elixir
LFE
C#
F#
Ceylon
FPr
Groovy
Dart
Hop
Curl
ECMAScript
JScript
Erlang
ActionScript
Joy
Julia
JavaScript
Lisp
Clojure
Nemerle
Common Lisp
Opal
Dylan
OPS5
Emacs Lisp
Poplog
LFE
Python
Little b
Logo
Scheme
Ruby
REFAL
Mathematica
Rust
ML
Scala
Standard ML (SML)
Spreadsheets
Alice
Wolfram Language
OCaml
Bluespec
Confluence
ELLA
ESys.net
Handel-C
HHDL
Impulse C
PALASM
JHDL
Lava
SystemC
Lola
SystemVerilog
Verilog
MyHDL
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:
Ada
Lua
ALGOL
MATLAB
BASIC
Machine language
Blue
Modula-2, Modula-3
MUMPS
C++
Oberon
C#
Object Pascal
Ceylon
OCaml
COBOL
Pascal
Perl
eC
PHP
FORTRAN
PROSE
GAUSS
Python
Go
Ruby
Groovy
Rust
Java
Wolfram Language
Julia
APL
Maple
Clojure
MATLAB
Common Lisp
ML
Perl
Pike
PostScript
Python
PROSE
REXX
Scala
Scheme
Erlang
F#
Forth
FPr
Fril
GAUSS
Groovy
IDL
Julia
Lua
Interpreted languages
Interpreted languages 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 commonly interpreted rather than compiled.
Ant
APL
MATLAB
Oriel
PCASTL
Perl
PHP
Pikt
PostScript
PROSE
Python
REXX
Ruby
S-Lang
Standard ML (SML)
Spin
Tcl
TI-BASIC
TorqueScript
VBScript
DM
Eiffel (via "Melting Ice Technology"
in EiffelStudio)
Groovy
JavaScript
Lisp (Early versions, pre-1962, and some
experimental ones; production Lisp systems are
compilers, but many of them still provide an
interpreter if needed.)
Tea
LPC
Lua
Wolfram Language
Maple
Mathematica
Iterative languages
Aldor
IPL-v
Alphard
Julia
C#
Lua
CLU
PHP
Cobra
Python
Sather
Icon
XL ("iterator" construct)
FPr
Racket
Joy
Scheme
Lisp
Logo
Arc
Clojure
Tcl
Common Lisp
Dylan
Emacs Lisp
Tea
TRAC
Little languages
Little languages serve a specialized problem domain.
Comet used to solve complex combinatorial optimization problems in areas such as resource
allocation and scheduling
SQL has only a few keywords, and not all the constructs needed for a full programming language [1] many
database management systems extend SQL with additional constructs as a stored procedure language
Logic-based languages
Logic-based languages specify a set of attributes that a solution must have, rather than a set of steps to obtain a
solution. Examples:
ALF
Alma-0
CLACL (CLAC-Language)
Curry
Fril
Janus
Leda
Oz
Poplog
Prolog (formulates data and the program
evaluation mechanism as a special form of
mathematical logic called Horn logic and a
general proving mechanism called logical
resolution)
ROOP
Machine languages
Machine languages 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. The symbolic version, the processor's assembly language, is also defined by the
developer, in most cases. Some commonly-used machine code instruction sets are:
ARM
Original 32-bit
x86:
DEC PDP-6/PDP-10/DECSYSTEM-20
DEC VAX
DEC Alpha
Zilog Z80
AMD's AMD64
Intel's Intel 64
Western Design
Center 65816/65802 (CPU for Apple IIGS and
(variant) Super Nintendo Entertainment
System)
MIPS
National NS320xx
Motorola 6800
Power Architecture
Macro languages
Textual substitution macro languages
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 too be confused with hygienic macros), possibly with parameter substitution. They
are often used to preprocess source code. Preprocessors can also supply facilities like file inclusion.
Macro languages may be restricted to acting on specially labeled code regions (pre-fixed with a # 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.
Metaprogramming languages
Metaprogramming is writing of programs that write or manipulate other programs (or themselves) as their data or
that do part of the work that is otherwise done at run timeduring 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.
C++
Elixir
Curl
Forth
Groovy
eC
Haskell
Julia
Python
Lisp
Ruby
Lua
Rust
Maude system
Scheme
Mathematica
SequenceL
MetaOCaml
Smalltalk
Nemerle
Wolfram Language
Perl
XL (concept programming)
Multiparadigm languages
Multiparadigm languages support more than one programming paradigm. They allow a program to use more than
one 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.
Common Lisp (functional, imperative, object-oriented (class-based), aspect-oriented (user may add further
paradigms, e.g., logic))
ActionScript
JavaScript
JScript
Harbour
Hop
Pike
Racket (functional, imperative, object-oriented (class-based) and can be extended by the user)
Wolfram Language
Numerical analysis
AIMMS
Klerer-May System
AMPL
Mathematica
Analytica
MATLAB
GAUSS
PROSE
GAMS
Julia
Wolfram Language
Non-English-based languages
Main article: non-English-based programming languages
ARLOGO Arabic
Fjlnir Icelandic
Lexico Spanish
Rapira Russian
Multiple dispatch
Common Lisp
Goo
Cecil
Julia
Dylan
Single dispatch
ActionScript 3.0
Actor
Blue
C++
Processing
C#
Groovy
Ceylon
Join Java
Tea
ChucK
X10
Cobra
LabVIEW
ColdFusion
Lava
Curl
Lua
DASL
Delphi
Nemerle
GNU E
IBM NetRexx
eC
Eiffel
Java
Sather
Ubercode
Object Pascal
Object REXX
F-Script
Fortran 2003
OCaml
Fortress
Oz
FPr
Gambas
Perl 5
PHP
Harbour
Pike
Prograph
Squeak
Realbasic
Revolution (programmer does not get to pick
the objects)
Scratch
IBM VisualAge
VisualWorks
Ruby
SPIN
Scala
SuperCollider
Bistro
F-Script
Little Smalltalk
Visual DataFlex
Visual FoxPro
Visual Prolog
X++
XOTcl
ABCL/1
Etoys in Squeak
ABCL/R
Io
ABCL/R2
Lisaac
ABCL/c plus
Lua
Agora
MOO
Cecil
NewtonScript
ECMAScript
Obliq
ActionScript
REBOL
Orwell
Haskell
Python
Cobra
Boo
Genie
F#
Nim
Occam
SPIN
XL
Curry
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:
Ceylon
COBOL
Cobra
ColdFusion
BCPL
Curl
BLISS
Blue
eC
ECMAScript
ActionScript
JScript
Eiffel
Lagoona
Seneca
Occam
Oriel
GAUSS
Go
PCASTL
Harbour
Perl
HyperTalk
Pike
Java
PL/C
Groovy
Join Java
Tea
JOVIAL
Julia
Lasso
Mathematica
MATLAB
Nemerle
Oberon and Oberon-2 (improved, smaller,
faster, safer follow-ons for Modula-2)
Component Pascal
Plus
PROSE
Python
Rapira
Rust
S-Lang
VBScript
Visual Basic
Visual FoxPro
Wolfram Language
X++
X#
XL
Reflective languages
Main article: List of reflective programming languages
Reflective languages let programs examine and possibly modify their high level structure at runtime. This is most
common in high-level virtual machine programming languages like Smalltalk, and less common in lower-level
programming languages like C. Languages and platforms supporting reflection:
See also: Aspect-oriented programming
Befunge
Join Java
C#
X10
Ceylon
Julia
Charm
Lisp
ChucK
Clojure
Cobra
Common Lisp
Dylan
Logo
Scheme
Curl
Delphi
eC
ECMAScript
Lua
Maude system
JavaScript
Objective-C
JScript
PCASTL
ActionScript
Eiffel
Perl
Forth
PHP
Harbour
Pico
Java
Poplog
Groovy
POP-11
Prolog
Python
Squeak
REBOL
IBM VisualAge
Ruby
VisualWorks
Bistro
F-Script
Little Smalltalk
Self
Snobol
Tcl
Wolfram Language
XOTcl
X++
XL
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]
awk
OPS5
CLIPS
Prolog
Drools
Mathematica
Jess
Wolfram Language
Scripting languages
"Scripting language" has two apparently different, but in fact similar meanings. In a traditional sense, scripting
languages are designed to automate frequently used tasks that usually involve calling or passing commands to
external programs. Many complex application programs provide built-in languages that let users automate tasks.
Those that areinterpretive are often called scripting languages.
Recently, many applications have built-in traditional scripting languages, such as Perl or Visual Basic, but there are
quite a few "native" scripting languages still in use. Many scripting languages are compiled to bytecode and then this
(usually) platform-independent bytecode is run through a virtual machine (compare to Java).
AppleScript
AWK
CLIST
BeanShell
ColdFusion
Bash
ECMAScript
ActionScript
Perl
Pikt
Python
REBOL
REXX
Revolution
Ruby
Smalltalk
S-Lang
sed
Tea
Tcl
TorqueScript
VBScript
JScript
CMS EXEC
EXEC 2
F-Script
Falcon
ICI
Io
JASS
Groovy
Join Java
Lasso
Lua
MAXScript
MEL
Oriel
Stack-based languages
Stack-based languages are a type of data-structured language that are based upon the stack data structure.
colorForth
Factor
Forth
Joy (all functions work on parameter stacks
instead of named parameters)
Piet
PostScript
RPL
11
Synchronous languages
Synchronous programming languages are optimized for programming reactive systems, systems that are often
interrupted and must respond quickly. Many such systems are also called realtime systems, and are used often
in embedded systems. Examples:
Argus
Lustre
Averest
SyncCharts
Esterel
ANTLR
M4
Transformation languages
Main article: Transformation language
Visual languages[edit]
See also: Category:Visual programming languages
Visual programming languages let users specify programs in a two-(or more)-dimensional way, instead of as onedimensional text strings, via graphic layouts of various types.
Analytica
Limnor
CODE
Max
DRAKON
NXT-G
Fabrik
G (used in LabVIEW)
Prograph
Lava
Pure Data
Quartz Composer
Scratch (written in and based on Squeak, a
version of Smalltalk)
Simulink
Spreadsheets
Subtext
ToonTalk
VEE
VisSim
vvvv
EICASLAB
Wirth languages
Computer scientist Niklaus Wirth designed and implemented several influential languages.
ALGOL W
Euler
Modula
Component Pascal
Lagoona
Oberon-2
Pascal
Object Pascal ("umbrella" name for Delphi, Free Pascal, Oxygene and others)
XML-based languages
Ant
MXML
LZX
XAML
XPath
XQuery
XProc
XSLT
References
1.
Jump up^ The objects of SQL are collections of records, called tables. A full programming language can
specify algorithms, irrespective of runtime. Thus an algorithm can be considered to generate usable results. In contrast,
SQL can only select records which are limited to the current collection, the data at hand in the system, rather than
produce a statement of the correctness of the result.