List of programming languages by type
This is a list of programming languages grouped by category.
Other listings of programming languages are:
- Alphabetical list of programming languages
- Generational list of programming languages
- Chronological list of programming languages
Array languages
Array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays.
Aspect Oriented Programming Languages
Assembly languages
Assembly languages directly correspond to a machine language (see below) in order to allow machine code instructions to be written in a form understandable by humans. Assembly languages allow programmers to use symbolic addresses which are later converted to absolute addresses by the assembler. Most assemblers also allow for macros and symbolic constants as well.
- SSK (Sistema Simvolicheskogo Kodirovaniya, or "System of symbolic coding") for Minsk family of computers.
- AKI (AvtoKod Ingenera, i.e., "engineer's autocode") for Minsk family of computers was half-step away from assembly languages and doesn't really fit into any other categories in this article.
Authoring languages
Command Line Interface (CLI) languages (batch languages)
- sh (the standard Unix shell, written by Stephen Bourne)
- bash (the "Bourne-Again" shell from GNU/FSF)
- CHAIN
- CLIST (MVS Command List)
- csh (C-like syntax shell from Bill Joy at UC Berkeley)
- EXEC
- EXEC 2
- JCL
- ksh (another standard Unix shell, written by David Korn)
- PC-DOS batch language (the standard CLI/batch language for the IBM PC running MS-DOS, prior to Windows)
- REXX
Compiled languages
These are languages typically processed by compilers (but note that any language can be either interpreted or compiled).
- Ada (multi-purpose language)
- ALGOL (extremely influential language design. The second high level language compiler.)
- BASIC (some dialects, including the first version of Dartmouth BASIC)
- C++ (some implementations)
- CLEO (Clear language for expressing orders) used the compiler for the British Leo computers
- COBOL (designed to be so simple even supervisors could follow it -- a US DoD inspired development)
- D
- Delphi (Borland's Object Pascal development system)
- Fortran (the first high level, compiled, language -- from IBM, John Backus, et al)
- Java (originally from Sun Microsystems; compiled into JVM bytecode)
- Lisp (most major implementations)
- Pascal (most implementations)
- Perl (invented by Larry Wall; compiled into Perl bytecode)
- Python (invented by Guido van Rossum; compiled into bytecode pyc modules)
- S2 (compiled into Perl)
- Scheme (some implementations, e.g. Bigloo)
- Visual Basic (from Microsoft)
- Visual Prolog
Concatenative languages
In Concatenative languages, the concatenation of appropriate programs denotes the composition of the functions which the programs denote
Concurrent languages
Concurrent languages define commands as messages to a process. Processes are collections of message passes. Generally based on the Pi-Calculus, these have had no commercial success, except for Erlang and Ada. But Ada is a multi-purpose language and concurrent programming is only one option available.
- Ada (multi-purpose language)
- Concurrent Pascal (by Brinch-Hansen)
- Erlang
- Join-calculus
- Occam
- Occam2
- Pict
- SR language
- Joule
"Curly-brace languages"
The "Curly brace family" of languages have a syntax that defines statement blocks using curly-brace characters {
and }
. All are descended from or strongly influenced by C. Examples of curly-brace languages include:
- C (dev ca 1970 by D Ritchie & K Thompson at Bell Labs -- closely associated with the Unix operating system)
- C++
- C#
- D (a step beyond C from Walter Bright)
- ECMAScript (aka, JavaScript)
- Frink
- Java
- Perl
- Coyote (a version of C intended to make some common programming errors much harder -- eg buffer overflow)
- Pike (another step beyond C)
- PHP
Dataflow languages
Dataflow 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:
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:
- dBase a relational database access language
- SQL
- M (an ANSI standard general purpose language with specializations for database work.)
Data-structured languages
Data-structured languages are languages whose logic is structured in a way similar to their data. These languages are generally well suited to reflection and introspection (it may be argued that assembly languages which statically link data inline with instructions can be considered in this class, albeit in the most primitive way.) Examples of data-structured languages include:
- Lisp, and descendants like Scheme and Tcl. Also TRAC. All use lists as their organizing principle
- FORTH, Poplog and PostScript (all conceptually based on an open stack model for their operations)
- APL (in which data and code alike are stored and operated on as arrays. By Kenneth Iverson). Also J.
- JOY Where lists are just a special case of quoted programs.
Extension languages
Extension programming languages are languages intended to be embedded into another program and used to harness its features in extension scripts.
Fourth-generation languages
Fourth-generation programming languages are high-level languages built around database systems. They are generally used in commercial environments.
- ABAP
- Informix-4GL / Aubit-4GL
- BuildProfessional
- Focus
- GEMBASE
- LINC
- Revolution Revolution isn't built around a database, but the goal is still to operate at a higher level of abstraction than 3GLs
- SAS
- Today
- Oracle Express 4GL
Functional languages
Functional programming languages define programs and subroutines as mathematical functions. Many so-called functional languages are "impure", containing imperative features. Functional languages include:
- APL
- Charity
- Erlang
- F#
- J
- Lisp
- ML
- Ocaml
- OPS5
- Q
- REFAL
- Scheme
- Haskell (purely functional)
- Joy
- Clean (purely functional)
Interpreted languages
- BASIC (some dialects)
- REXX
- Databus (later versions added optional compilation)
- Frink
- J
- Pascal (early implementations)
- VBScript
- Lisp (early versions, pre-1962; and some experimental ones -- production Lisp systems are compilers)
- Most scripting languages (below)
Iterative languages
Languages built around or offering generators
Syntax handling languages
- GNU bison (the FSF's version of Yacc)
- Lex (Lexical analysis -- from Bell Labs)
- GNU Flex (the FSF's version of Lex)
- M4
- yacc (yet another compiler compiler -- from Bell Labs)
Little languages
Little languages serve a specialized problem domain.
- awk can serve as a prototyping language for C, because the syntax is similar
- SQL has only a few keywords, and not all the constructs needed for a full programming language
Logical languages
These specify a set of attributes that a solution should have rather than a set of steps to obtain such a solution. Examples of logical languages include:
- Prolog which formulates data and the program evaluation mechanism as a special form of mathematical logic known as Horn logic and a general proving mechanism called logical resolution
- Visual Prolog which is an object oriented extension of Prolog
- Mercury which is based on Prolog
Machine languages
Machine languages are directly executable by the computer's CPU. They are typically formulated as bit patterns, usually represented in octal or hexadecimal. Each group of npatterns (often 1 or more bytes) caused the circuits in the CPU to execute one of the fundamental operations of the hardware. The activation of specific electrical inputs (eg, CPU package pins for microprocessors), and logical settings for CPU state values, control the processor's computation. Individual machine languages are processor specific and are not portable; they are (essentially) always defined by the CPU developer, not by 3rd parties. The symbolic version, the processor's assembly language, is also -- in most cases -- defined by the developer. Since processors come in families which are based on a shared architecture, the same basic assembly language style can often be used for more than one CPU. Each of the following CPUs served as the basis for a family of processors:
- Intel 80x86
- Motorola 680x
- Motorola 680x0
- PowerPC
- Intel 8008/8080/8085
- ARM
- StrongARM
- MOS Tech 6502
- National 32032
- Sun SPARC nnd UltraSPARC
- MIPS R2000|R3000
Macro languages embed small pieces of executable code inside a piece of free-form text.
- M4 (originally from AT&T, bundled with Unix)
- C Preprocessor
- PHP
- Stage 2
- Scripting languages such as Tcl and ECMAScript (Javascript) have been embedded into applications so that they behave like macro languages.
Non-English-based languages
Non-English-based programming languages:
Object-oriented languages
These are languages that support 'data & method' objects. The data structures are defined in object classes, which also include executable code (methods). Thus the effects of a change to the code remain localized. Object classes can be extended by inheritance in most of these languages. Examples of object-oriented languages include:
- Actor
- Ada 95 (multi-purpose language)
- C++
- C#
- Common Lisp
- D
- Delphi
- ECMAScript (aka JavaScript -- originally from Netscape)
- Eiffel
- Fortran 2003
- J
- Java (closely related to C++, but with built-in garbage collection, removal of unsafe features and some advanced ones, compilation to universally runnable 'bytecode', protective sandbox for security -- originally from Sun Microsystems)
- Modula-2 (data abstraction, information hiding, strong typing, full modularity -- from N Wirth)
- Modula-3 (added more object oriented features to Modula-2)
- NetRexx
- NewtonScript
- Oberon (full object orientation equivalence in an original, strongly typed, Wirthian manner)
- Objective-C
- Objective Caml
- Object Rexx
- Perl 5
- PHP
- PowerBuilder
- Python (object oriented interpretive language)
- Ruby
- Sather
- Self
- Simula (the first object oriented language -- from Norway)
- Smalltalk (full bore object orientation -- from Xerox PARC)
- Revolution It has been said that Revolution is object-oriented, you just don't get to pick the objects
- VBScript (Microsoft Office 'macro scripting' language)
- Visual Basic
- Visual Prolog
"Off-side rule" languages
"Off-side rule" languages are languages where blocks are indicated by their indentation.
- Haskell
- Miranda, the mother of Haskell
- Python
- ABC, the mother of Python
- Merd
- make, in which you write Makefiles
Procedural languages
Procedural programming languages are based upon 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 programming language. Examples of procedural languages include:
- Ada (multi-purpose language)
- BASIC (BASICs are innocent of most modularity in (especially) versions prior to about 1990)
- C
- C++ (C with objects + much else)
- C# (from Microsoft, essentially an attempt at an improved C)
- ColdFusion
- COBOL
- Component Pascal (an Oberon-2 variant)
- D
- Delphi
- ECMAScript (JavaScript)
- Fortran (better modularity in later Standards)
- Java
- Modula-2 (fundamentally based on modules)
- Oberon and Oberon-2 (improved, smaller, faster, safer follow-ons for Modula-2)
- M (more modular in its first release than a language of the time should have been; the standard has become still more modular since then)
- Pascal (successor to Algol60 and predecessor of Modula-2)
- Perl
- PL/C
- PL/1 (large general purpose language, originally for IBM mainframes)
- Rapira
- VBScript
- Visual Basic
Prototype-based languages
Prototype based languages are a special type of object-oriented programming languages, where the distinction between classes and instances have been removed. Examples of prototype-based languages include:
- ECMAScript (aka JavaScript)
- NewtonScript
- Self
- Io
Rule-based languages
Rule-based languages instantiate rules when activated by conditions in a set of data. Of all possible activations, some set will be selected and the statements belonging to those rules will be executed. Examples of rule-based languages include:
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 allow users to implement custom functions by providing them with built-in languages. Those which are of interpretive type, are often called scripting languages.
- More recently many of these applications have chosen to "build in" traditional scripting languages, such as Perl or Visual BASIC, but there are quite a few "native" scripting languages still in use.
- AWK
- AppleScript
- CLIST
- EXEC
- EXEC 2
- Frink
- ICI
- Perl
- PHP (intended for Web servers)
- Python
- REXX
- Ruby
- Tcl
- Revolution
- VBScript
- JavaScript
- Many shell command languages such as the UNIX shell or DCL on VMS have powerful scripting capabilities.
Turing tarpits
Turing tarpit languages are used to make a point, not for programming.
XML-based languages
- These are languages based on or that operate on XML. 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: