Il existe de nombreux types de langages de programmation. La plupart des langages de programmation ne suivent pas un seul type, il est donc difficile d'attribuer un type à chaque langue. Les exemples de chaque type sont donnés dans chaque section ci-dessous car ce sont les exemples les plus connus de ce type.
Haut niveau contre bas niveau
| ![[icon]](https://www.alegsaonline.com/image/20px-Wiki_letter_w_cropped.svg.png) | Cette section nécessite plus d'informations. (Août 2018) |
Les langages de programmation de haut niveau nécessitent moins de connaissances sur le matériel que les langages de programmation de bas niveau. Les langages de programmation de haut niveau requièrent un interprète pour convertir le code source en langages de programmation de bas niveau.
Programmation déclarative ou impérative
Les langages de programmation déclaratifs décrivent un "problème" mais ne disent généralement pas comment le problème doit être résolu. La description du problème utilise la logique, et "résoudre" le problème ressemble souvent à prouver automatiquement un système d'axiomes logiques. Les exemples de tels langages de programmation sont Prolog, XSLT, LISP et SQL.
Les langages de programmation impérative décrivent un système de changements d'état. Au début, le programme est dans un certain état, et l'ordinateur reçoit des étapes à suivre, afin d'effectuer une action. En suivant ces étapes, le programme "change d'état".
En général, les langages de programmation déclaratifs sont plus sûrs et plus courts. Les langages de programmation impérative sont plus courants, car ils sont plus faciles à utiliser.
Fonctionnel vs. procédural
La programmation fonctionnelle considère la programmation comme une fonction en mathématiques. Le programme reçoit des entrées, ainsi que certaines informations, et utilise ces informations pour créer des sorties. Il n'aura pas d'état intermédiaire et ne changera pas non plus des choses qui ne sont pas liées au calcul.
Les programmes de procédure spécifient ou décrivent des séries d'étapes ou des changements d'état.
Basé sur la pile
Les langages basés sur des piles considèrent une partie de la mémoire du programme comme une pile de cartes. Il y a très peu de choses qui peuvent être faites avec une pile. Un élément de données peut être placé sur le dessus de la pile. Cette opération est généralement appelée "push". Une donnée peut être retirée du haut de la pile. C'est ce qu'on appelle un "pop". Vous pouvez regarder l'élément au sommet de la pile sans le retirer. C'est ce qu'on appelle un "peek".
Si un programme est écrit comme "push 5 ; push 3 ; add ; pop ;" il mettra 5 sur le dessus de la pile, mettra 3 sur le dessus du 5, ajoutera les deux premières valeurs (3 + 5 = 8), remplacera les 3 et 5 par le 8, et imprimera le dessus (8). Les langages de programmation basés sur la pile sont, par exemple, les langages Postscript et Forth.
Orienté vers l'objectif
Les langages de programmation orientés objet placent les données et les fonctions qui modifient les données dans une seule unité. Cette unité est appelée un "objet". Les objets peuvent interagir les uns avec les autres et modifier les données d'un autre objet. C'est ce que l'on appelle généralement l'encapsulation ou le masquage d'informations. La plupart des langages de programmation modernes sont orientés objet, ou du moins permettent ce style de programmation. Citons par exemple Java, Python, Ruby, C++, C# et d'autres langages C.
Orienté vers le flux
La programmation orientée flux considère la programmation comme la connexion de différents composants. Ces composants envoient des messages dans les deux sens. Un seul composant peut faire partie de différents "programmes", sans qu'il soit nécessaire de le modifier en interne.