Bien que la notion de programme apparaisse progressivement au cours de la deuxième moitié du XIXe siècle, les premiers langages de programmation n'apparaissent qu'autour de 1950. Chacun pouvant créer son propre langage, il est impossible de déterminer le nombre total de langages existant à l'heure actuelle.
On peut aussi classer les langages de programmation en fonction de leur utilisation car beaucoup de langages sont spécialisés à une application ou à un domaine particulier.
Un langage de définition de données ne permet pas d'effectuer de traitement mais de décrire des structure de données (listes, arbres …) et des instances de ces structures.
XML est par exemple un langage permettant la représentation de données sous forme de structure arborescente ; la partie DDL de SQL sert à décrire des données relationnelles. Les langages qui décrivent des documents peuvent également être considérés comme des langages de définition de données. Ainsi, LaTeX est un exemple de langage de définition de données qui permet d'écrire un document en centralisant sa mise en forme. LaTeX est compilé vers des d'autres langages de description de document, généralement plus « bas niveau » comme PDF ou Postscript.
Ces langages ne sont habituellement pas considérés comme des langages de programmation. Cependant les codes sources produits avec ces langages présentent certains traits de codes sources de programmes comme des structures de contrôle (conditions, boucles...) et des moyens d'interaction avec le système (variable d'environnement, formulaires...). Ils sont donc cités ici à titre indicatif, mais sont à la frontière de la programmation.
Les langages de requêtes sont destinés à interroger et manipuler les bases de données.
SQL est un langage de requête utilisé par un grand nombre de systèmes de gestion de bases de données tels que Oracle ou SQL Server.
Ce type de langages est utilisé pour une plus grande interaction entre un client et un serveur.
Du côté du serveur Web, cela permet de produire des pages dont le contenu est généré à chaque affichage. Ces langages sont par ailleurs souvent couplés avec un langage pour communiquer avec des bases de données (exemple : PHP).
Côté client (en général le navigateur web), les langages de réagir à certaines actions de l'utilisateur sans avoir à questionner le serveur. Par exemple, le JavaScript d'une page Web peut réagir aux saisies de l'utilisateur dans un formulaire (et vérifier le format des données).
Certains langages permettent de développer à la fois les aspects client et serveur. C'est le cas d'Ocsigen, de Hop ou bien encore du Server-Side JavaScript.
On désigne parfois par langages de programmation théoriques les systèmes formels utilisés pour décrire de façon théorique le fonctionnement des ordinateurs. Ils ne servent pas à développer des applications mais à représenter des modèles et démontrer certaines de leurs propriétés.
On peut citer la machine de Turing et le λ-calcul de Church, qui datent tous les deux des années 1930, et donc antérieurs à l'invention de l'ordinateur. Le λ-calcul a par la suite servi de base théorique à la famille des langages de programmation fonctionnelle. Dans les années 1980, Robin Milner a mis au point le π-calcul pour modéliser les systèmes concurrents.
Les langages exotiques ont pour but de créer des grammaires complètes et fonctionnelles mais dans un paradigme éloigné des conventions. Beaucoup sont d'ailleurs considérés comme des blagues.
Ces langages sont généralement difficiles à mettre en pratique et donc rarement utilisés. Par exemple, le Piet permet de programmer à l'aide d'images matricielles.
On peut également citer le Brainfuck qui est un language minimaliste et Turing-complet ( 8 instructions seulement ). Il est prévu pour tourner sur une machine de Turing avec un compilateur de seulement 171 octets.
Langages de programmation synchrones pour les systèmes réactifs : Esterel, Lustre.
Les pseudo-codes (comme le Langage K) ont généralement un but uniquement pédagogique.
Logo est un langage fonctionnel simple à apprendre.
R, SAS et xLispStat sont à la fois un langage de statistiques et un logiciel.
Une machine-outil automatisée, ou Commande Numérique (C.N.), a besoin d'un langage de programmation pour réaliser les opérations de tournage, ou de fraisage…
Nyquist est un langage de synthèse et d'analyse sonore. Pure Data est un logiciel de création musicale graphique qui repose sur un langage de programmation procédural.