PRATIQUE ALGO/METHODES 
Expliquez-moi... L'évolution des langages informatiques
 
En 50 ans, l'informatique est passée du langage machine à la programmation par contraintes en passant par l'assembleur et les langages proposant une syntaxe lisible proche de l'anglais. Bilan. (06/04/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

Le premier langage servant à programmer une machine ? Cela pourrait être celui utilisé par Ada Lovelace pour la machine analytique de Charles Babbage (1837), ou celui mis au point par Konrad Suze pour l'ordinateur Z3, en 1945. Dans ces deux cas, les langages en question pouvaient être rapprochés des assembleurs actuels, en cela qu'ils utilisaient directement les instructions de la machine sur laquelle ils étaient lancés.

Parvenir aux langages orientés objet à partir de ces premières ébauches n'a pas été une mince affaire. On distingue aujourd'hui principalement 5 "générations" de langages.

La première est celle des langages machine : écrits en codes binaires (suite de 0 et de 1), ces langages n'étaient ni compilés, ni assemblés, mais directement entrés par le programmeur. Ce dernier devait donc connaître parfaitement le processeur, et la portabilité d'un programme vers un autre ordinateur était plus que compliquée. Les langages de cette génération ne sont pas largement utilisés bien sûr. Ils trouvent leur application dans des sections très spécifiques de programmes de très bas niveau, surtout pour des questions d'optimisation.

La deuxième génération est composée de langages assembleurs : si le code restait trop proche du processeur pour être portable, il devenait néanmoins lisible, et compréhensible par un plus grand nombre d'initiés. Ici encore, il reste utilisé dans le cadre d'optimisations, mais a été supplanté en popularité par les langages plus accessibles.

La troisième génération a ouvert les portes du monde de la programmation au plus grand nombre : en proposant une syntaxe proche de l'anglais, Fortran, Cobol, Lisp et Algol, tous proposés autour de 1960, ont permis un gain énorme en lisibilité et en productivité. Ils introduisaient les instructions comme IF, DO et GOTO, la notion de bloc et de fonctions, les types numéraires, la récursivité... Dans les faits, ces langages ne dépendent plus du processeur, mais d'un compilateur spécifique du processeur. L'idée de portabilité des programmes est lancée.
La plupart des langages de programmation actuels sont de 3e génération : ce sont des langages dit structurés. On retrouve dans cette catégorie tous les grands noms, sur plusieurs décennies : C++, Java, Perl, Pascal, Python, Haskell... Cette génération couvre d'ailleurs tant de langages qu'elle est souvent subdivisée en catégories, selon le paradigme particulier qu'ils respectent : programmation impérative, séquentielle, objet, fonctionnelle... Plusieurs de ces langages entrent dans plus d'une catégorie : la plupart des langages modernes sont objet, par exemple.

Les langages classés dans la quatrième génération, surnommés 4GL, sont ceux conçus pour un travail spécifique : gestion de base de données (SQL), production graphique (Postscript, Metafont), création d'interface (4D, voire Delphi et Visual Basic, qui restent avant-tout des langages de 3e génération)... Ils sont souvent utilisés pour un programme spécifique.

La cinquième génération de langages (5GL), enfin, sont des langages destinés à résoudre des problèmes à l'aide de contraintes, et non d'algorithmes écrits. Ces langages reposent beaucoup sur la logique. Ils sont particulièrement utilisés dans le cadre d'études sur l'intelligence artificielle, et dans les cadres universitaires. Parmi les plus connus, on trouve Prolog, OPS5 et Mercury.

Pour apprécier au mieux les influences entre les langages au fil des années, le mieux est de se plonger de le diagramme d'Eric Lévénez, qui compte 50 langages, depuis Fortran en 1954 jusqu'à PHP 4.4.1 en octobre 2005.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page