List of programming languages by type
Adapted from Wikipedia · Adventurer experience
This is a list of important programming languages. These languages are grouped by their features. A language can be in more than one group because it can have many features. Knowing these groups helps people pick the right language for their projects.
Programming languages are tools that help us tell computers what to do. Learning about their types can make it easier to learn and use them. These languages are used in many areas, like making websites or controlling big scientific tools.
Agent-oriented programming languages
Main article: Agent-oriented programming
Agent-oriented programming helps developers create special parts of software called software agents. These agents can send messages to each other. This makes them different from regular objects in programming. Some languages that support this way of programming include Clojure, F#, GOAL, and SARL.
Array languages
Main category: Array programming languages
Array programming languages help you work with groups of numbers easily. Instead of handling one number at a time, you can do the same thing to many numbers together, like in lists or grids. This makes it easier to work with large amounts of data or images in computer programs.
Aspect-oriented programming languages
Main article: Aspect-oriented programming
Aspect-oriented programming helps developers add new features to their code without changing the existing code. It uses something called a pointcut to add these features to parts of the program.
Some languages that use this approach include Ada, AspectJ, Groovy, Nemerle, and Raku.
Assembly languages
Main article: Assembly language
For a more comprehensive list, see Comparison of assemblers.
Assembly languages are special programming languages that match the basic instructions a computer can understand. They let programmers write code using easier-to-read names instead of complex numbers. Special programs called assemblers turn these names into the actual instructions the computer uses. These languages also let programmers use shortcuts called macros and special values known as symbolic constants to make coding simpler.
Authoring languages
Main article: Authoring language
An authoring language is a kind of programming language for people who are not computer experts. It helps them easily create tutorials, websites, and other fun interactive programs on a computer.
Some examples of these languages include Darwin Information Typing Architecture (DITA), Lasso, PILOT, TUTOR, and Authorware.
Command-line interface languages
Main article: Command-line interface
Command-line interface (CLI) languages are tools that let users talk to computers using text. These are also called batch languages or job control languages. Some common examples are:
- 4DOS (shell for IBM PCs)
- 4OS2 (shell for IBM PCs)
- Batch files for DOS and Windows
- COMMAND.COM command language for DOS and pre-Windows NT Windows
- cmd.exe command language for Windows NT
- sh
- CLIST (MVS Command List)
- CMS EXEC
- csh
- DIGITAL Command Language CLI for OpenVMS
- EXEC 2
- Expect
- fish
- Nushell
- Windows PowerShell
- rc
- Rexx
- TACL (programming language)
Compiled languages
Main article: Compiled language
These are languages that are changed into machine code by special programs called compilers. Even though any language could be compiled or interpreted, these languages are famous for using compilers to get the code ready to run.
Concatenative programming languages
Main article: Concatenative programming language
A concatenative programming language is a special kind of computer language. In these languages, all commands are actions. When you put commands next to each other, it means doing those actions one after another.
Some examples of these languages are Factor, Forth, jq, Joy, PostScript, and Raku.
Concurrent languages
Main category: Concurrent programming languages
For a more comprehensive list, see List of concurrent and parallel programming languages.
Some programming languages help computers do many things at once. These languages use special ways to let parts of a program talk to each other. One way is by sharing the same information, which many popular languages like Java use. Other languages let programs exchange messages.
Constraint programming languages
Main article: Constraint programming
A constraint programming language is a type of declarative programming. In these languages, you set rules, called constraints, about how values should work together. The program finds values that fit all the rules.
Contract languages
Design by contract is a way to write programs. It uses special rules called preconditions, postconditions, and invariants. These rules are set before and after actions. They help programmers find mistakes early and make better software.
Curly bracket languages
A curly bracket or curly brace language uses special symbols {} to group commands in its code. This style of writing code began with the language BCPL in 1966 and became famous because of the language C. Many other languages came from C or were inspired by it. Some examples of these languages include:
Dataflow languages
Dataflow programming languages use a special way to show how data moves to build a program. This is often shown in a picture. These languages work well for reacting to events or handling lots of data that keeps flowing.
Data-oriented languages
Data-oriented languages help people find and change connections between different groups of things, like in tables that show how one group links to another. These languages include several types of programming tools that work with this idea of connecting data.
Decision table languages
Decision tables help make logic clear before writing a program. In the 1960s, some languages let you write code using decision tables. One of these languages was Filetab.
Declarative languages
Main category: Declarative programming languages
Declarative languages tell the computer what you want done, but not how to do it. This is different from imperative programming, which tells the computer the exact steps to take. Pure functional and logic-based programming are kinds of declarative languages. This section shows more examples that are not in these two groups.
Embeddable languages
Embeddable languages let you put small pieces of code inside other text, like on a web page.
For web pages you see in a browser, there are client-side languages. These work right in your browser to make pages more lively.
For web pages made by the website’s computer, there are server-side languages. These can use many different languages. They add more content to the web page automatically.
Server-side examples include PHP, VBScript, and Tcl. Other languages like Erlang, Scala, Perl, and Ruby can also be used this way.
Client-side examples include ActionScript and JavaScript (aka ECMAScript or JScript), with VBScript working only on Windows.
Educational programming languages
For a more comprehensive list, see List of educational programming languages.
These are programming languages made just for helping people learn how to program. They are easy and clear, so students and beginners can understand them better while they are learning.
Esoteric languages
Main category: Esoteric programming languages
An esoteric programming language is a special kind of language. It is made to test the rules of computer programming. These languages are sometimes created to show new ideas or just for fun.
Extension languages
Extension programming languages are special kinds of languages that fit into larger programs. They help add new features or change how those programs work.
Fourth-generation languages
Main category: Fourth-generation programming languages
Fourth-generation programming languages are special kinds of high-level programming languages that work closely with database systems. People often use them in businesses and companies for many tasks.
Functional languages
Main category: Functional languages
Functional programming languages let you build programs and small tasks using functions that work like math. These functions act like values in the program. Some of these languages mix in features from other types. Many are used with tools for math work. Examples include:
Hardware description languages
For a more comprehensive list, see List of hardware description languages.
In electronics, a hardware description language (HDL) is a special kind of computer language. It helps describe how electronic parts are built and work. These languages are very useful for making digital circuits. The two most common HDLs today are Verilog and VHDL.
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
Imperative languages
Imperative programming languages tell a computer the exact steps to solve a problem. Many of these languages can also work in other ways. Here is a list of some languages that use the imperative paradigm:
Interactive mode languages
Interactive mode languages, also known as REPL, work like a shell. With these languages, you can type in commands one at a time and see the results right away. This makes it easy to test ideas and explore programming.
Interpreted languages
Interpreted languages are types of programming languages where you can run programs straight from their original code. You use a special program called an interpreter to do this. These languages are often easy to use and test quickly.
Iterative languages
Iterative languages are made to handle repeated tasks in programs better. They use special features called generators to help with this.
Languages by memory management type
Some programming languages help manage memory for you, while others let you do it yourself. Memory management is how a computer keeps track of the space it uses for programs.
Garbage Collection (GC) is a way for computers to clean up memory that programs no longer need. This happens automatically.
Other languages need you to manage memory yourself, which can be more work but gives you more control. Some languages offer choices, letting you decide how to manage memory.
List-based languages – LISPs
List-based languages are special kinds of programming languages. They use a data structure called a list to organize information.
Some examples of these languages include Joy, R, Source, Tcl (which also includes Tea), and TRAC.
Little languages
Little languages are special tools that help solve certain problems.
For example, awk helps change text files, sed can find and change text, and SQL is used to work with databases. XPL was made to help create other programming languages.
Logic-based languages
Main category: Logic programming languages
Logic-based languages tell the computer what the answer should look like, instead of how to find it.
Some well-known languages in this category are:
- ALF
- Alma-0
- Curry
- Datalog
- Fril
- Flix
- Janus
- λProlog
- Oz, and Mozart Programming System cross-platform Oz
- Prolog
- ROOP
- Soufflé
Machine languages
Machine languages are special sets of instructions that a computer's brain, called the CPU, can understand and run right away. These instructions are made up of patterns of zeros and ones, often shown in octal or hexadecimal form. Each pattern tells the CPU to do a basic job, like adding numbers or moving data.
Because each type of CPU is built differently, machine languages are unique to each family of processors. This means that code written for one type of CPU usually won’t work on another type unless that CPU has special features to support it. Both the machine language and its easier-to-read version, called assembly language, are created by the people who make the CPU. Some well-known machine code instruction sets include:
Macro languages
Main category: Macro programming languages
Macro languages help change one piece of code into another. They do this by replacing short pieces of text with longer ones. This can make writing code easier because you can reuse parts of it.
Some macro languages only work on special parts of the code, like those starting with a #. Others can work anywhere but still need to follow basic code rules to avoid mistakes. They can be used with many different programming languages.
- C preprocessor
- m4 (originally from AT&T, bundled with Unix)
- ML/I (general-purpose macro processor)
- TTM (developed at the California Institute of Technology)
Scripting languages like Tcl and JavaScript are also used inside applications. Sometimes these are called macro languages too, even though they work a bit differently from simple text-replacing macros.
Metaprogramming languages
Metaprogramming is when programs can create or change other programs. These special programs do some of the work that usually happens when the computer is running, but they do it earlier, when the program is being prepared. This helps programmers finish their work faster because they don't have to write every single line of code themselves.
Modular languages
Main article: Comparison of programming languages (syntax) § Consuming external software
Modular programming is a way to split a program into smaller parts called modules. This makes programs easier to understand and manage.
Multiparadigm languages
Main article: Comparison of multi-paradigm programming languages
Multiparadigm languages let programmers use more than one way to write code. This helps them choose the best style for each part of their project, since one style doesn't work perfectly for every task.
Numerical analysis
See also: List of numerical-analysis software and List of numerical libraries
Some programming languages, like C and Python, are used for technical tasks. This list shows languages mainly used for these tasks.
Non-English-based languages
Main article: Non-English-based programming languages
Some programming languages use words from languages other than English. For example, there are languages that use Chinese, Icelandic, French, Russian, and Tamil. These languages make it easier for people who speak those languages to work with computers.
Object-oriented class-based languages
Class-based object-oriented programming languages let you make objects from their class. These classes hold the data for the object. Sending messages is a key idea in these languages.
Functions that change based on the object they use are often called methods. In languages with single dispatch, classes usually hold the rules for these methods. In languages with multiple dispatch, methods are part of general functions. Some languages mix these ideas, like Bigloo’s object system.
Object-oriented prototype-based languages
Prototype-based languages are a kind of object-oriented language. In these languages, objects can make new objects without needing a class.
Off-side rule languages
Main article: Off-side rule § Off-side rule languages
Some programming languages use the position of a line of code to show where a group of commands starts and ends. This is called the off-side rule. In these languages, spaces or tabs at the start of a line are important to organize the code.
Procedural languages
Procedural programming languages use steps to solve problems. A program is made from parts, either written by a person or taken from a code library. Each part has one or more procedures, also called functions, routines, subroutines, or methods. Examples of these languages include:
Query languages
Main article: Query language
Query languages are special tools used to ask questions and get information from databases. They help people find exactly what they need by using simple commands. These languages are important for working with large amounts of data.
Reflective languages
Reflective programming languages let programs see and change their own structure while they run or are being made. This feature is often found in high-level programming environments like Smalltalk, and it is less common in lower-level languages like C.
Some languages and systems support this ability.
See also: Aspect-oriented programming
Rule-based languages
Rule-based languages are special kinds of programming languages that use rules. These rules only start working when certain conditions in the data are met. When the conditions are right, the rules choose what to do next and run the statements linked to them.
Scripting languages
Main article: Scripting language
Scripting languages are special kinds of computer languages. They help control what a computer does. They are often used to make things happen automatically, like when you click a button on a website. These languages can be easy to learn and use for small tasks or big projects.
Stack-based languages
Main category: Stack-oriented programming languages
Stack-based languages are a special kind of programming language. They use a structure called a stack. A stack is like a pile where you add things on top and take things off from the top. These languages use this pile-like structure to manage their data.
Synchronous languages
Main category: Synchronous programming languages
Synchronous programming languages are special types of languages made to help build systems that react quickly, even when they get interrupted often. These systems are sometimes called realtime systems and are used in tiny computers inside other devices, known as embedded systems.
Some examples of these languages include:
Shading languages
See also: Category:Shading languages
A shading language is a special kind of computer language used to make graphics look better. These languages have special types of data, like "color" and "normal," to help create visual effects.
Shading languages are used in two main ways. For real-time graphics, they give programmers more control, helping create richer content without using too many resources. For offline graphics, they focus on making the highest quality images, but this can take a lot of time and computer power.
Syntax-handling languages
These languages help make tools that can read and understand code. They break code into smaller parts. They are useful for building other programming languages or tools that work with text.
Some examples include ANTLR, Coco/R, GNU bison, GNU Flex, JavaCC, lex, M4, Parsing expression grammar, Prolog, Emacs Lisp, Lisp, Raku, SableCC, Scheme, yacc, and XPL.
System languages
A system programming language helps computers do important jobs, like keeping track of memory and managing tasks. These languages are used to build the software that makes computers run, such as operating systems and tools that help other programs work.
Examples of system languages include:
| Language | Originator | First appeared | Influenced by | Used for |
|---|---|---|---|---|
| ESPOL | Burroughs Corporation | 1961 | ALGOL 60 | MCP |
| PL/I | IBM, SHARE | 1964 | ALGOL 60, FORTRAN, some COBOL | Multics |
| PL360 | Niklaus Wirth | 1968 | ALGOL 60 | ALGOL W |
| C | Dennis Ritchie | 1969 | BCPL | Most 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 | VMS (portions) |
| PL/8 | IBM | 197x | PL/I | AIX |
| PL/MP and PL/MI | IBM | 197x | PL/I | CPF, OS/400 |
| PL-6 | Honeywell, Inc. | 197x | PL/I | CP-6 |
| SYMPL | CDC | 197x | JOVIAL | NOS subsystems, most compilers, FSE editor |
| C++ | Bjarne Stroustrup | 1979 | C, Simula | See C++ Applications |
| Ada | Jean Ichbiah, S. Tucker Taft | 1983 | ALGOL 68, Pascal, C++, Java, Eiffel | Embedded systems, OS kernels, compilers, games, simulations, CubeSat, air traffic control, and avionics |
| D | Digital Mars | 2001 | C++ | Multiple domains |
| Nim | Andreas Rumpf | 2008 | Ada, Modula-3, Lisp, C++, Object Pascal, Python, Oberon | OS kernels, compilers, games |
| Rust | Mozilla Research | 2010 | C++, Haskell, Erlang, Ruby | Servo layout engine, RedoxOS |
| Swift | Apple Inc. | 2014 | C, Objective-C, Rust | macOS, iOS app development |
| Zig | Andrew Kelley | 2016 | C, C++, LLVM IR, Go, Rust, JavaScript | As a replacement for C |
| V (Vlang) | Alexander Medvednikov | 2019 | C, Go, Oberon-2, Rust, Swift, Kotlin | Vinix OS, OS kernels, compilers, games |
Transformation languages
Main article: Transformation language
Transformation languages help change code from one form to another. They are used in large systems so that one part's work can be used by the next part. This makes complicated tasks simpler to handle.
Visual languages
Main category: Visual programming languages
Visual programming languages let people make programs using pictures and layouts, instead of only text. These special languages can make programming easier to understand by using graphics. Some types of dataflow programming are also visual languages.
Wirth languages
Computer scientist Niklaus Wirth made many important programming languages. One of these languages is PL360.
XML-based languages
These are languages that work with XML. They help organize and share information in a clear way.
Related articles
This article is a child-friendly adaptation of the Wikipedia article on List of programming languages by type, available under CC BY-SA 4.0.
Safekipedia