thumb|Fragment de code écrit dans le langage de programmation JavaScript.

Un langage de programmation est un langage informatique destiné à formuler des algorithmes et produire les programmes informatiques qui les appliquent. D'une manière similaire à une langue naturelle, il est composé d'un alphabet, d'un vocabulaire, de règles de syntaxe, de significations, mais aussi d'un environnement de traduction censé rendre sa syntaxe compréhensible par la machine...

Les langages de programmation permettent de décrire, d'une part, les structures des données qui seront manipulées par l'appareil informatique, et, d'autre part, d'indiquer comment sont effectuées les manipulations et selon quels algorithmes.

Ils servent de moyens de communication par lesquels le programmeur communique avec l'ordinateur, mais aussi avec d'autres programmeurs ; les programmes étant d'ordinaire écrits, lus, compris et modifiés par une équipe de programmeurs..

Plusieurs environnement de développement et agents conversationnels possèdent des fonctionnalités de lecture, interprétation et écriture de programme.

Un langage de programmation est mis en œuvre par un traducteur automatique : compilateur ou interprète. Un compilateur est un programme informatique qui transforme dans un premier temps un code source écrit dans un langage de programmation donné en un code cible qui pourra être directement exécuté par un ordinateur, à savoir un programme en langage machine ou en code intermédiaire, tandis que l’interprète réalise cette traduction « à la volée ».

Les langages de programmation offrent différentes possibilités d'abstraction et une notation proche de l'algèbre, permettant de décrire de manière concise et facile à saisir les opérations de manipulation de données et l'évolution du déroulement du programme en fonction des situations.

La possibilité d'écriture abstraite libère l'esprit du programmeur d'un travail superflu, notamment de prise en compte des spécificités du matériel informatique, et lui permet ainsi de se concentrer sur des problèmes plus avancés.

Chaque langage de programmation supporte une ou plusieurs approches de la programmation – paradigmes. Les notions induisant le paradigme font partie du langage de programmation et permettent au programmeur d'exprimer dans le langage une solution qui a été imaginée selon ce paradigme.

Les premiers langages de programmation ont été créés dans les années 1950, en même temps que l'avènement des ordinateurs. Cependant, de nombreux concepts de programmation ont été initiés par un langage ou parfois plusieurs langages, avant d'être améliorés puis étendus dans les langages suivants.

La plupart du temps la conception d'un langage de programmation a été fortement influencée par l'expérience acquise avec les langages précédents..

Définition Un langage de programmation est construit à partir d'une grammaire formelle, qui inclut des symboles et des règles syntaxiques, auxquels sont associées des règles sémantiques. Ces éléments sont plus ou moins complexes selon la capacité du langage.

Les modes de fonctionnement et de définition de la complexité d'un langage de programmation sont généralement déterminés par leur appartenance à l'un des degrés de la hiérarchie de Chomsky..

Sous un angle théorique, tout langage informatique peut être qualifié de langage de programmation s'il est Turing-complet, c'est-à-dire qu'il permet de représenter toutes les fonctions calculables au sens de Turing et Church (en admettant néanmoins pour exception à la théorie que la mémoire des ordinateurs n'est pas un espace infini)Premiers pas vers une ontologie générale des programmes informatiques, Pascal Lando, Frédéric Fürst, Gilles Kassel et Anne Lapujade, "18es Journées Francophones d'Ingénierie des Connaissances, Grenoble : France (2007)", voir section 3.2 La première catégorie de langages informatiques est celle des langages informatiques généralistes (), c’est-à-dire les langages Turing-complets... Les langages de programmation (), ou langages de haut niveau, sont tous les langages généralistes.

Les règles de syntaxe Définies par une grammaire formelle, elles régissent les différentes manières dont les éléments du langage peuvent être combinés pour obtenir des programmes. La ponctuation (par exemple l'apposition d'un symbole ; en fin de ligne d'instruction d'un programme) relève de la syntaxe. Le vocabulaire Parmi les éléments du langage, le vocabulaire représente l'ensemble des instructions construites d’après des symboles. L'instruction peut être mnémotechnique ou uniquement symbolique comme quand elle est représentée par des symboles d'opérations tels que des opérateurs arithmétiques (« + » et « - ») ou booléens (&& pour le et logique par exemple). On parle aussi parfois de mot clé pour désigner une instruction (par abus de langage, car le concept de mot clé ne recouvre pas celui des symboles qui font pourtant eux aussi partie du vocabulaire). La sémantique Les règles de sémantique définissent le sens de chacune des phrases qui peuvent être construites dans le langage, en particulier quels seront les effets de la phrase lors de l'exécution du programme. La science l’étudiant est la sémantique des langages de programmation. L’alphabet L'alphabet des langages de programmation est basé sur les normes courantes comme ASCII, qui comporte les lettres de A à Z sans accent, des chiffres et des symboles., ANSI ou Unicode pour la plupart des langages modernes (dans lesquels l'utilisation se limite en général aux chaînes de caractères littérales et aux commentaires, avec quelques exceptions notables comme C♯ qui autorisent également les identifiants unicode).

La plupart des langages de programmation peuvent prévoir des éléments de structure complémentaires, des méthodes procédurales, des définitions temporaires et variables ainsi que des identifiants : Les commentaires Les commentaires sont des textes qui ne seront pas traduits. Ils peuvent être ajoutés dans les programmes pour y laisser des explications. Les commentaires sont délimités par des marques qui diffèrent d'un langage de programmation à l'autre tels que , , "#", " """ " ou . Les identifiants Les éléments constitutifs du programme, tels que les variables, les procédures ou les types servent à organiser le programme et son fonctionnement. On peut ainsi, par exemple, diviser un programme en fonctions ou lui donner une structure par objets : ces éléments de structure sont définis par des identifiants ou des procédures par mot clé selon le langage.

Utilisation Un langage de programmation offre un cadre pour élaborer des algorithmes et exprimer des diagrammes de flux.

Il permet, en particulier, de décrire les structures des données qui seront manipulées par l'appareil informatique et quelles seront les manipulations. Un langage de programmation sert de moyen de communication avec l'ordinateur, mais aussi entre programmeurs : les programmes étant d'ordinaire écrits, lus et modifiés par une équipe de programmeurs.

Un langage de programmation offre un ensemble de notions qui peuvent être utilisées comme primitives pour développer des algorithmes. Les programmeurs apprécient que le langage soit clair, simple et unifié, qu'il y ait un minimum de notions qui peuvent être combinées selon des règles simples et régulières.

Les qualités d'un langage de programmation influent sur la facilité avec laquelle les programmes pourront être écrits, testés, puis plus tard compris et modifiés.

La facilité d'utilisation, la portabilité et la clarté sont des qualités appréciées des langages de programmation.

La facilité d'utilisation, qui dépend de la syntaxe, du vocabulaire et des symboles, influence la lisibilité des programmes écrits dans ce langage et la durée d'apprentissage.

La portabilité permet à un programme écrit pour être exécuté par une plateforme informatique donnée (un système d'exploitation) d'être transféré en vue d'être exécuté sur une autre plateforme I. T. L. Education Solutions Limited, Introduction To Information Technology, Pearson Education India, 2005 ..

Les programmeurs apprécient que la syntaxe permette d'exprimer la structure logique inhérente au programme. Un des soucis en programmation est d'éviter des pannes, qu'il soit possible de les détecter, les éviter et les rectifier ; ceci est rendu possible par des mécanismes internes des langages de programmation. Des vérifications implicites sont parfois effectuées en vue de déceler des problèmes.

Les programmeurs apprécient qu'un langage de programmation soit en ligne avec les bonnes pratiques de programmation et d'ingénierie, qu'il encourage la structuration du programme, facilite la maintenance des programmes et qu'il dissuade, voire interdise les mauvaises pratiques.

L'utilisation de l'instruction goto, par exemple, qui existe depuis les premiers langages de programmation, est considérée comme une mauvaise pratique. Son utilisation est déconseillée, voire impossible dans les langages de programmation récents R. J. Barlow et A. R. Barnett, Computing for Scientists: Principles of Programming with Fortran 90 and C++, John Wiley and Sons, 1998 ..

L'alignement sur les standards industriels, la possibilité d'utiliser des fonctionnalités écrites dans un autre langage de programmation et l'exécution simultanée de plusieurs threads sont des possibilités appréciées des langages de programmation.

Notions courantes Un langage de programmation repose sur un ensemble de notions telles que les instructions, les variables, les types et les procédures ou fonctions, qui peuvent être utilisées comme primitives pour développer des algorithmes..

Une instruction Un ordre donné à un ordinateurADA Programming, Tyrarex Press ..

Une variable Un nom utilisé dans un programme pour faire référence à une donnée manipulée par programme.

Une constante

Un nom utilisé pour faire référence à une valeur permanente.

Une expression littérale Une valeur mentionnée en toutes lettres dans le programme.

Un type Chaque donnée a une classification, celle-ci influe sur la plage de valeurs possibles, les opérations qui peuvent être effectuées et la représentation de la donnée sous forme de bits. Chaque langage de programmation offre une gamme de types primitifs, incorporés dans le langage. Certains langages offrent la possibilité de créer des nouveaux types.

Les types de données primitifs courants sont les nombres entiers, les nombres réels, le booléen, les chaînes de caractères et les pointeurs.

Plus précisément, le type booléen est un type qui n'a que deux valeurs, vrai et faux, tandis que le type pointeur fait référence à une donnée qui se trouve quelque part en mémoire.

Une structure de données Une manière caractéristique d'organiser un ensemble de données en mémoire, qui influe sur les algorithmes utilisés pour les manipuler.

Les structures courantes sont les tableaux, les enregistrements, les listes, les piles, les files et les arbres Krishnamurthy, Data Structures Using C, Tata McGraw-Hill Education, 2008 ..

Une déclaration Une phrase de programme qui sert à indiquer au traducteur (compilateur, interpréteur...) les noms et les caractéristiques des éléments du programme tels que des variables, des procédures, de types, etc.

Des vérifications sont effectuées au moment de la compilation ou lors de l'exécution du programme, pour assurer que les opérations du programme sont possibles avec les types de données qui sont utilisés. Dans un langage fortement typé, chaque élément du programme a un type unique, connu et vérifié au moment de la compilation, ce qui permet de déceler des erreurs avant d'exécuter le programme.

Les procédures, fonctions, méthodes Divers langages de programmation offrent la possibilité d'isoler un fragment de programme et d'en faire une opération générale, paramétrable, susceptible d'être utilisée de façon répétée. Ces fragments sont appelés procédures, fonctions ou méthodes, selon le paradigme.

Les modules