Académique Documents
Professionnel Documents
Culture Documents
Histoire des
langages de
programmation
qui a inventé la programmation
Cet article évoque les événements majeurs de l'histoire des langages de programmation.
Pour une chronologie détaillée de ces événements, consultez la chronologie des langages de
programmation.
Avant 1940
Au départ, les langages étaient de simples codes . Pendant neuf mois entre 1842 et 1843,
Ada Lovelace a traduit le mémoire du mathématicien italien Luigi Menabrea sur la machine
analytique, la dernière machine proposée par Charles Babbage. Elle ajouta cet article à une
collection de notes dans lesquelles elle détaillait une méthode pour calculer les nombres de
Bernoulli à l'aide de la Machine. Ces notes furent reconnues par certains historiens comme le
premier programme informatique au monde[1] Mais l'étendue des contributions originales
d'Ada Lovelace, comparées à celles de son mari, est l'objet de débat parmi certains
biographes [réf. souhaitée][2].
En 1801, le métier Jacquard utilisait des trous dans des cartes perforées pour représenter les
mouvements du bras du métier à tisser, et ainsi générer automatiquement des motifs
décoratifs.
En observant les tickets de trains, où était décrite l'apparence du voyageur à l'aide de trous
perforés sur les tickets (couleur des cheveux et des yeux, taille…), Herman Hollerith s'est
rendu compte qu'il pouvait encoder de l'information sur des cartes perforées. Il a pu ainsi
créer une machine à cartes perforées qui a servi au recensement de 1890.
À leurs débuts, les langages de programmation étaient très influencés par les restrictions
matérielles. De ce fait, le premier vrai langage de programmation est difficile à identifier. Par
exemple, les cartes perforées pouvaient avoir 80 colonnes, certaines d'entre elles étant
utilisées comme numéro de tri sur chaque carte. Plus tard, les mémoires utilisées dans les
premiers ordinateurs étaient constitués de tambours magnétiques. Les programmes
devaient donc tenir compte des rotations du tambour. Ils étaient donc beaucoup plus
dépendants du matériel qu'à l'heure actuelle.
Pour certaines personnes, il est nécessaire que les « programmes » soient facilement lisibles
par des êtres humains, et que la puissance mise en œuvre soit suffisante, pour pouvoir parler
de langage de programmation. Le Métier Jacquart et la machine Analytique de Charles
Babbage avaient des langages extrêmement simples et limités pour décrire les actions
effectuées par ces machines. On peut également considérer les rouleaux en papier d'un
pianola (piano mécanique) comme un programme limité à un domaine très particulier,
quoique non destiné à être exploité par des humains.
Les premiers ordinateurs électriques de l'ère moderne sont apparus dans les années 1940.
Les limitations en rapidité et en capacité de mémoire imposent une écriture des programmes
laborieuse en langage assembleur voire langage machine, optimisés « à la main ». On
constate très vite qu'en plus de nécessiter beaucoup d'effort intellectuel, cette manière de
programmer engendre un certain nombre d'erreurs.
En 1948, Konrad Zuse publie un article sur son langage de programmation qu'il a développé
entre 1943 et 1945 : le Plankalkül. Son créateur le considère comme étant le premier langage
de programmation de haut niveau. Néanmoins, il n'aura jamais été implémenté à l'époque et
les contributions de l'auteur sont d'ailleurs restées très isolées du courant dominant.
1943 : Le Plankalkül
Dans les années 1950, les trois premiers langages de programmation modernes ont été
conçus :
FORTRAN, le traducteur de formules (FORmula TRANslator), inventé par John Backus et al.
LISP, spécialisé dans le traitement des listes (LISt Processor), inventé par John McCarthy
et al.
Les descendants de ces trois langages sont actuellement encore très utilisés.
Une autre étape clé de ces années a été la publication à Zurich par une commission
d'informaticiens européens et américains d'un nouveau langage permettant de décrire les
problèmes de manière algorithmique : ALGOL (ALGorithmic Oriented Language). Le rapport,
publié pour la première fois en 1958 fait la synthèse des principales idées circulant à
l'époque, et propose deux innovations majeures :
La manière même dont le langage a été décrit est innovante en soi : la syntaxe du langage a
été décrite de manière mathématique, en utilisant le métalangage BNF. Presque tous les
langages à venir utiliseront une variante de cette notation BNF pour décrire leur syntaxe (ou
au-moins la sous-partie non-contextuelle de leur syntaxe).
Algol 60 eut une influence particulière sur la conception de langages ultérieurs. Certains
d'entre eux sont rapidement devenus populaires. Par exemple les systèmes industriels de
Burroughs sont conçus pour être programmés via un sous-ensemble d'Algol étendu.
Certaines fonctionnalités peu utilisées d' Algol 68 (comme la concurrence et les blocs
parallèles) ainsi que ses systèmes complexes de raccourcis syntaxiques, et de transtypage
automatique, l'ont rendu impopulaire auprès des programmeurs chargés de l'utiliser ; aussi
est-il réputé difficile d'accès. Un certain Niklaus Wirth abandonne alors la commission de
conception d'Algol, et à partir de ses travaux sur Algol-W (pour Wirth) créera un langage plus
simple, le Pascal.
Vue d'ensemble :
1952 - AUTOCODE
1954 - FORTRAN
1958 - LISP
1958 - ALGOL 58
1959 - FACT (Fully Automated Compiling Technique) [ancêtre de COBOL]
1959 - COBOL
La période courant de la fin des années 1960 au début des années 1970 a vu un véritable
foisonnement des langages de programmation. La plupart des paradigmes des principaux
langages sont inventés durant cette période :
Simula 67, inventé par Nygaard et Dahl comme surcouche d'Algol 60, est le premier
langage conçu pour pouvoir intégrer la programmation orientée objet et la simulation par
événements discrets.
C, un des premiers langages de programmation système, est développé par Dennis Ritchie
et Ken Thompson pour le développement d'Unix aux laboratoires Bell entre 1969 et 1973.
Smalltalk (milieu des années 1970) est l'un des premiers langages de programmation à
disposer d'un environnement de développement intégré complètement graphique.
ML (Meta Language) inventé par Robin Milner en 1973, construit sur un typage statique
fort et polymorphe au-dessus de Lisp, pionnier du langage de programmation généraliste
fonctionnel.
Chacun de ces langages, a donné naissance à toute une famille de descendants, et la plupart
des langues modernes comptent au-moins l'un d'entre eux dans son ascendance. Les années
1960 et 1970 ont également été l'époque d'un considérable débat sur le bien-fondé de la
programmation structurée, qui signifie essentiellement la programmation sans l'utilisation de
GOTO. Ce débat a été étroitement lié à la conception de langages : certains langages
n'intégrant pas GOTO, beaucoup sont donc contraints d'utiliser la programmation structurée.
Bien que ce débat ait fait rage à l'époque, un très large consensus existe désormais parmi les
programmeurs : même dans des langages qui intègrent GOTO, utiliser cette instruction est
devenu quasiment tabou, sauf dans de rares circonstances.
Certains autres langages importants ont été développés au cours de cette période dont :
1970 - Forth
1978 - SQL (Structured Query Language), au départ seulement un langage de requêtes, puis
étendu par la suite à la construction de programme procédural de type SQL/PSM, PL/SQL…
Les années 1980 furent des années d'une relative consolidation. C++ combine la
programmation système et orientée-objet. Le gouvernement des États-Unis normalise Ada,
un langage de programmation système destiné à être utilisés par les sous-traitants de la
défense.
Au Japon et ailleurs, des sommes énormes ont été dépensées pour étudier ce qu'on appelle
les langages de « cinquième génération » des langages qui intègrent la logique dans la
construction des programmes.
Une nouvelle tendance dans la conception des langages, comme Modula, Ada, et ML,
mettent l'accent sur la programmation pour une large gamme d'applications grâce à
l'utilisation de modules. Ce sont des unités de programmes paramétrables, qui peuvent donc
être largement réutilisés. Les modules sont la première forme de programmes génériques,
qui se développeront avec le polymorphisme paramétrique dans les langages à objets.
Les années 1980 ont également apporté des progrès dans la mise en œuvre des langages de
programmation. Le mouvement RISC dans l'architecture des ordinateurs a postulé que le
matériel devait être conçu pour faciliter l'écriture des compilateurs plutôt que pour les
programmeurs en assembleur. Aidés par les progrès en vitesse des processeurs qui a permis
des améliorations de plus en plus agressives des techniques de compilation, le mouvement
RISC a permis des évolutions dans la technologie de compilation des langages de haut
niveau jusque dans les années 1990.
1983 - Ada
1983 - C++
1985 - Eiffel
1987 - Perl
1989 - FP (Backus)
Java, de Sun Microsystem, est un langage comportant une large palette de classes
réutilisables. Il possède un ramasse-miettes. Il a eu un développement important dans
l'industrie du logiciel.
Les nouveaux langages de scripts, héritiers des langages de commande intégrés dans les
systèmes d'exploitation, ont une approche plus novatrice parce qu'ils sont interprétés.
Certains sont intégrés dans des pages Web. Ils présentent de nouvelles caractéristiques
syntaxiques et de nouvelles fonctionnalités leur sont incorporées de manière à faciliter
l'enchaînement de commandes simples. Ils fonctionnent bien quand les programmes sont
petits. Les programmes plus gros sont plus difficiles à mettre en œuvre et à maintenir que
[citation nécessaire]
des programmes compilés analogues .
1990 - Haskell
1991 - Python
1993 - Ruby
1993 - Lua
1995 - JavaScript
1995 - Java
1995 - PHP
2000 - C#
Les années 2010 tendent vers des langages plus sûrs. Il y a plus de vérification lors de
compilation pour éviter les erreurs pendant que le programme tourne. Les valeurs « null » se
retrouvent supprimées pour être remplacées par des structures plus sécurisées, obligeant le
développeur à rendre son code plus sûr.
2010 - Rust
2011 - Ceylon
2012 - Elm
Tendances actuelles
. Utilisation généralisée d'XML, notamment pour les interfaces graphiques (XUL, XAML).
John Backus, inventeur de Fortran et des grammaires BNF (Backus Naur Form).
John von Neumann, inventeur du l'Architecture de von Neumann (elle-même inspirée des
travaux d'Alan Turing), sur laquelle se basent nombre de langages de programmation.
Dennis Ritchie, inventeur du langage C ; et Brian Kernighan, coauteur du premier livre sur le
langage C, coauteur des langages AWK et AMPL.
Références
1. (en) J. Fuegi et J. Francis, « Lovelace & Babbage and the creation of the 1843 'notes'. »,
Annals of the History of Computing, vol. 25, no 4, octobre-décembre 2003, p. 19-25
(DOI 10.1109/MAHC.2003.1253887 (https://dx.doi.org/10.1109/MAHC.2003.1253887) )
2. 16 Oct 2012 at 09:20 et Dave Wilby tweet_btn() Dave Wilby Get email alert when this
author posts Common Topics Recent Articles Go on, « Quite contrary Somerville: Behind
the Ada Lovelace legend » (https://www.theregister.co.uk/2012/10/16/ada_lovelace_mary
_fairfax_somerville/) [archive] (consulté le 30 juillet 2015)
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « History of
programming languages (https://en.wikipedia.org/wiki/History_of_programming_languages?oldid=2896
80261) » (voir la liste des auteurs (https://en.wikipedia.org/wiki/History_of_programming_languages?ac
tion=history) ).
Voir aussi
La Keynote de Mark Rendle : The History Of Programming (https://www.youtube.com/watch?
v=Tr9E_vzKRVo [archive])
Articles connexes …
ACM
Instrument de calcul
Langage de programmation
Chronologie de l'informatique
Ce document provient de
« https://fr.wikipedia.org/w/index.php?
title=Histoire_des_langages_de_programmation&
oldid=192453816 ».