Médaille
N°1 pour apprendre & réviser du collège au lycée.
Langages de programmation

Déjà plus de

1 million

d'inscrits !

Ce cours est en cours de création par nos équipes et il sera prêt pour la rentrée 2019 💪

Langages de programmation

Introduction :

Un langage de programmation permet de formuler un algorithme en vue de produire un programme compréhensible par l’ordinateur. Il existe un grand nombre de langages informatiques de toutes sortes qui proposent différentes manières de programmer les ordinateurs.

Nous effectuerons dans un premier temps un panorama des langages de programmation pour en découvrir la diversité. Nous nous intéresserons ensuite à leurs caractéristiques communes, puis aux utilisations des différents langages informatiques disponibles.

Panorama des langages de programmation

Les langages de programmation reposent, comme les langues humaines, sur un alphabet permettant de former des mots qui sont utilisés pour composer des phrases en respectant une certaine grammaire.

Étude de cas d’un programme simple

Découvrons dans un premier temps de manière concrète à quoi ressemblent les langages informatiques, au travers d’un même programme rédigé dans plusieurs langages de programmation courants.

Lorsqu’on découvre un langage informatique, la première étape consiste souvent à faire afficher un simple message. En langue anglaise, il est d’usage d’afficher le texte « Hello world! ». Notre cours étant en français nous choisissons d’afficher le message « Bonjour et bienvenue ! ».

bannière exemple

Exemple

  • Avec le langage Python :

print("Bonjour et bienvenue !")

  • Avec le langage C :

#include <stdio.h>

main()

{

printf("Bonjour et bienvenue !\n");

}

  • Avec le langage C++ :

#include <iostream>

using namespace std;

int main() {

cout << "Bonjour et bienvenue !\n";

return 0;

}

  • Avec le langage Java :

public class BonjourBienvenue {

public static void main(String[] args) {

System.out.println("Bonjour et bienvenue !");

}

}

  • Avec le langage JavaScript :

alert("Bonjour et bienvenue !");

  • Avec le langage PHP :

<?php

print("Bonjour et bienvenue !");

?>

Analyse du code dans les différents langages

Cet exemple simple nous permet de remarquer des différences et des ressemblances entre les différents langages de programmation.

  • On peut observer un certain nombre de différences d’un langage à l’autre :
  • le « mot » employé pour demander l’affichage n’est pas toujours le même : on relève différentes variantes autour du mot anglais print mais aussi d’autres mots comme alert en JavaScript ;
  • les phrases sont « ponctuées » différemment avec différents signes et symboles ;
  • la longueur du code nécessaire pour produire un même résultat est assez variable d’un langage à l’autre.
  • On peut observer un certain nombre de points communs entre les différents langages :
  • le message à afficher est cité entre guillemets (qui peuvent être simples ou doubles dans la plupart des langages) ;
  • des parenthèses ouvrantes et fermantes entourent certains contenus ;
  • certains langages encadrent des portions de code à l’aide d’accolades ;
  • le texte est parfois décalé par rapport au début de la ligne ;
  • dans plusieurs langages, le signe « ; » apparaît à la fin de certaines lignes ;
  • d’une manière générale, certains caractères non alphabétiques semblent jouer un rôle particulier : parenthèses, accolades, espaces, points, ainsi que des signes tels que #, << ou >>.

La lecture de ces lignes de code s’apparente à la lecture de langues étrangères qu’on ne connaît pas. On lit des mots, articulés en phrases, avec parfois une ponctuation spécifique.

  • La connaissance d’un ou plusieurs langages de programmation est une aide précieuse pour l’apprentissage d’un nouveau langage. L’expérience acquise permet de repérer les traits communs et d’identifier les traits spécifiques d’un langage donné.

Il existe des centaines de langages informatiques différents, chacun avec ses propres caractéristiques. Certains langages généralistes permettent de développer toutes sortes de programmes, tandis que d’autres, très spécialisés, ont au contraire été conçus pour des besoins très spécifiques. Les langages d’emploi courant sont utilisés quotidiennement par des millions de personnes dans le monde.

Évolution des langages informatiques

Les langages de programmation évoluent aussi dans le temps, un peu comme les langues humaines qui créent de nouveaux mots ou de nouveaux usages grammaticaux, tandis que d’autres mots ou tournures grammaticales tombent en désuétude.

  • En informatique, les langages sont identifiés par des numéros de version.
bannière exemple

Exemple

  • La version actuelle de JavaScript est la version 8.
  • La version actuelle de PHP est la version 7.
  • La version actuelle de Python est la version 3.

La plupart du temps, une certaine compatibilité est conservée avec les versions précédentes du langage, afin de pouvoir continuer à utiliser des programmes plus anciens. Mais certaines ruptures de compatibilité nécessitent parfois de réécrire des portions de code pour pouvoir les faire fonctionner dans un environnement informatique plus récent.

  • L’usage de tel ou tel langage évolue aussi avec le temps.
bannière exemple

Exemple

  • L’apparition de Java a constitué une alternative aux langages historiques C et C++.
  • L’essor de PHP a drastiquement réduit l’emploi de Perl comme langage de script serveur.
  • Le langage JavaScript s’est initialement développé comme langage d’animation du navigateur côté client, mais peut désormais être employé aussi côté serveur avec NodeJS.

Examinons maintenant les principales caractéristiques des langages de programmation dans leur ensemble.

Caractéristiques générales des langages de programmation

Il convient tout d’abord de définir ce qu’est un langage de programmation.

bannière definition

Définition

Langage de programmation :

Un langage de programmation est un langage formel destiné à écrire des programmes informatiques. Il est composé d’instructions spécifiques capables de traiter des entrées, d’effectuer différentes opérations et de produire des résultats.

Les éléments des langages informatiques

Les langages de programmation permettent d’implémenter les algorithmes et de manipuler des données. Ils s’appuient sur un alphabet, un vocabulaire et une syntaxe à respecter.

  • L’alphabet des langages informatiques se compose généralement des caractères alphabétiques (non accentués), des chiffres et d’un certain nombre de symboles dont certains peuvent être porteurs de significations syntaxiques particulières.

  • Le vocabulaire se compose des « mots » spécifiques qui constituent des ordres ou instructions du langage.

  • La syntaxe ou grammaire du langage régit la manière dont le vocabulaire doit être employé et articulé pour former des « phrases » correctes, de sorte que les instructions données soient compréhensibles par l’ordinateur. Les erreurs de syntaxe sont les erreurs les plus fréquentes lors de la découverte d’un langage.

Les langages manipulent des données. Ces données peuvent être de différents types et la gestion de ces types est variable d’un langage à l’autre.

Typage des données

Les données peuvent être classées en fonction de leur appartenance à des familles ou ensembles : nombres entiers, nombres réels, booléens, ou encore des caractères.

Quand ces données sont affectées à des variables, certains langages exigent que le type de donnée soit explicitement défini et respecté : le typage est alors dit statique.

D’autres langages ne requièrent pas ce formalisme et déterminent le type de donnée « à la volée » lors de l’exécution du code, sur la base de la valeur affectée à la variable : c’est le typage dynamique. Le langage déduit, à partir du contenu de la variable, à quelle famille de données elle appartient.

  • Ainsi, True est un booléen ; 12 est un entier ; 12.0 est un réel et ‘12’ est une chaine de caractères au même titre que ‘bonjour’ car l’un et l’autre sont entre guillemets.
bannière exemple

Exemple

C et Java sont des langages à typage statique ; JavaScript et Python sont des langages à typage dynamique.

Les langages de programmation partagent donc un certain nombre de caractéristiques générales, avec des différences de vocabulaire et de syntaxe. Ils diffèrent aussi dans la manière de gérer les types de données. Il existe également différents styles de programmation.

Principaux paradigmes de programmation

Les langages informatiques dans leur ensemble constituent un large panel de propositions pour réaliser des tâches et résoudre des problèmes à l’aide d’un ordinateur. Il existe plusieurs styles de programmation, comme il existe plusieurs styles musicaux ou picturaux.

bannière definition

Définition

Paradigme :

Un paradigme est un style de programmation. Il traduit une manière particulière de penser des problèmes et d’écrire des programmes informatiques pour les résoudre.

  • Il existe plusieurs paradigmes de programmation : impérative, fonctionnelle, objet, événementielle ou encore concurrente pour citer les principaux styles.

Certains langages ont été conçus pour appliquer un paradigme en particulier. D’autres autorisent une multiplicité de paradigmes. Ceux-ci n’étant pas nécessairement mutuellement exclusifs, un langage informatique peut donc supporter simultanément plusieurs familles de paradigmes. Examinons ce qui caractérise les principaux paradigmes de programmation.

La programmation impérative correspond au paradigme le plus répandu. C’est aussi le plus ancien.

bannière definition

Définition

Programmation impérative :

La programmation impérative repose sur une séquence explicite d’instructions de différentes sortes qui produisent des changements d’état.

On peut comparer la programmation impérative à une recette de cuisine. L’ordre d’exécution suit en séquence les instructions fournies.

bannière exemple

Exemple

Le langage C fonctionne selon le paradigme de la programmation impérative.

La programmation dite procédurale fait partie de cette famille : elle s’appuie sur la notion de procédures ou routines qui décrivent des séquences d’instructions pouvant être appelées à tout moment.

bannière definition

Définition

Programmation fonctionnelle :

La programmation fonctionnelle consiste en l’enchainement de fonctions recevant des paramètres en entrée et fournissant un résultat en sortie.

Comme en mathématiques, le résultat d’une fonction peut être utilisé comme entrée d’une autre fonction.

bannière exemple

Exemple

Les langages LISP, Closure et Haskell utilisent la programmation fonctionnelle.

La programmation fonctionnelle appartient à la famille de programmation dite déclarative, dans laquelle figure également la programmation logique, implémentée dans des langages tels que Prolog ou Mercury.

bannière definition

Définition

Programmation orientée objet :

La programmation orientée objet s’appuie sur un modèle où les fonctions et les données sont généralement rassemblées au sein d’une même entité appelée classe, et dont les membres individuels sont des objets.

Les objets peuvent être dotés d’attributs (états) et de méthodes (comportements). Ils peuvent communiquer avec d’autres objets et hériter d’autres objets.

bannière exemple

Exemple

On retrouve la programmation orientée objet dans les langages C++ et Java.

bannière definition

Définition

Programmation événementielle :

En programmation événementielle, le déroulement du programme est déterminé par un enchainement d’actions liées à des événements déclenchés par l’utilisateur, des données en provenance de capteurs ou des messages provenant d’autres applications ou processus.

Ce paradigme est principalement adapté aux environnements graphiques proposés par les systèmes d’exploitation modernes, ainsi qu’aux applications web.

bannière exemple

Exemple

Dans le contexte d’un navigateur internet, la programmation événementielle avec JavaScript permet de proposer des interactions basées sur la survenue d’événements : survol par la souris, clic sur un bouton, appui sur une touche, etc.

bannière definition

Définition

Programmation concurrente :

La programmation concurrente est une forme modulaire de programmation qui permet l’exécution parallèle et simultanée de différentes tâches.

La parallélisation des tâches implique de devoir gérer l’ordre indéterminé dans lequel les tâches exécutées de façon concurrente se termineront.

bannière exemple

Exemple

La programmation concurrente est utilisée par les langages Erlang et Go.

De nombreux langages informatiques sont multi-paradigmes et rendent possible l’emploi de plusieurs styles de programmation au choix du programmeur.

bannière exemple

Exemple

  • C++ est un langage procédural, fonctionnel et orienté objet.
  • Python est un langage impératif, fonctionnel et orienté objet.
  • JavaScript est un langage impératif, fonctionnel, orienté objet et événementiel.

Les styles de programmation ne sont pas la seule manière de caractériser les langages de programmation : leurs modalités d’exécution et leur niveau d’abstraction sont également différents d’un langage à l’autre.

Modalités d’exécution

On peut distinguer les langages de programmation en fonction de la manière dont ils sont exécutés : le code informatique est soit compilé, soit interprété.

bannière definition

Définition

Compilation :

La compilation consiste à traiter le code source afin de le transformer en un code exécutable par la machine.

La tâche est réalisée par un programme compilateur qui produit un code exécutable. Le lancement de ce dernier conduit à l’exécution du programme. Cette étape intermédiaire de compilation n’existe pas pour les langages dits interprétés.

bannière definition

Définition

Interprétation :

Le code source est directement évalué à la volée par un interpréteur au moment du lancement du programme.

Si le typage est dynamique, l’évaluation de type sera également effectuée à la volée au moment de l’exécution du programme.

Niveau d’abstraction

On distingue également les langages de programmation en fonction de leur niveau d’abstraction du matériel sur lequel ils sont employés : certains langages sont très proches de la machine, d’autres en sont très indépendants.

Dans un langage dit de bas niveau, les commandes et fonctions sont en lien direct avec le micro-processeur de la machine et permettent d’optimiser le code spécifiquement pour ce matériel. Toutefois, l’usage de ce code sur d’autres matériels ou systèmes impliquera sa réécriture.

Un langage de haut niveau fait abstraction des spécificités du processeur ou du système d’exploitation employé. Les couches d’abstraction peuvent se superposer : elles déchargent d’autant le développeur des contingences matérielles, système ou logicielles. L’optimisation est moindre mais le développement multiplateforme est grandement facilité.

Utilisations des langages de programmation

Il existe autant d’utilisations des langages de programmation qu’il existe de besoins de systèmes d’exploitation, de gestion de fichiers, de base de données, de serveurs, de logiciels et d’applications.

Certains langages de programmation sont de véritables couteaux suisses permettant des développements très variés. D’autres sont hautement spécialisés et destinés à des usages bien précis.

Les langages informatiques ont aussi évolué avec le temps vers une plus grande sophistication.

Sophistication des langages de programmation modernes

Les premiers langages informatiques étaient très rudimentaires et très proches de la machine, laquelle ne "comprend" que des 00 et des 11. Le développement des langages assembleurs a été la première étape permettant de rendre le code un peu plus lisible pour les humains, tout en restant très proche de la machine.

Des langages de plus haut niveau se sont ensuite développés progressivement avec le temps, donnant naissance à différentes générations de langages. Des systèmes ont été développés pour gérer les interactions entre le matériel et ces langages afin de pouvoir faire, partiellement ou totalement, abstraction des aspects matériels et système.

La puissance des ordinateurs modernes permet de conserver de bonnes performances malgré l’empilement de couches d’abstraction. C’est également vrai des smartphones récents, dont la puissance est désormais supérieure à celle des ordinateurs de précédentes générations.

Langages de programmation généralistes

Certains langages largement répandus comme C, C++, Java ou Python sont assez polyvalents et permettent des développements logiciels dans des domaines très variés.

Ces langages peuvent être enrichis par des bibliothèques spécialisées proposant des outils dédiés pour les besoins spécifiques d’une discipline ou d’un métier. L’ensemble des bibliothèques et outils rattachés à un langage de programmation constitue son écosystème.

Langages de programmation spécialisés

Certains langages ont été conçus en vue de répondre à des besoins spécifiques : il existe ainsi des langages dédiés dans de nombreux domaines, parfois très spécialisés.

bannière exemple

Exemple

  • Le langage PHP a été spécifiquement conçu pour le développement web côté serveur.
  • Le langage Logo a été conçu comme langage d’initiation à la programmation.
  • Le langage MATLAB est entièrement dédié au calcul numérique.

Tous les langages informatiques ne sont pas nécessairement de véritables langages de programmation. C’est le cas de plusieurs langages informatiques conçus pour des besoins spécifiques.

Autres langages informatiques

Certains langages informatiques ne proposent pas toutes les caractéristiques requises des langages de programmation et ne peuvent pas être désignés comme tels. Ce sont toutefois des langages informatiques. On trouve parmi eux plusieurs langages spécifiques d’usage très courant.

bannière definition

Définition

Langages de présentation :

Les langages de présentation sont destinés à structurer ou agencer des informations et des documents.

bannière exemple

Exemple

  • HTML (HyperText Markup Language) et XML (Extensible Markup Language) pour la structuration du contenu ;
  • CSS (Cascading Style Sheets) pour l’agencement des contenus.

Ces langages informatiques ne permettent pas d’implémenter un algorithme.

bannière definition

Définition

Langages de requêtes :

Les langages de requêtes sont destinés à interagir avec bases de données pour permettre la lecture, l’écriture et la suppression d’informations.

Les langages de requêtes présentent davantage de caractéristiques communes avec les véritables langages de programmation, mais n’en sont pas au sens strict du terme.

bannière exemple

Exemple

Le langage de requêtes de bases de données relationnelles SQL.

Conclusion :

La variété des langages et des styles de programmation offre aux programmeurs la possibilité de choisir celui qui permettra de répondre, au mieux, aux besoins de leurs projets informatiques.

La connaissance de plusieurs langages et paradigmes de programmation permet, au-delà de leurs différences, d’en saisir les traits communs. Cela facilite ainsi grandement l’apprentissage d’autres langages de programmation.