RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Histoire des langages de programmation

19 décembre 2003

Tout programme est écrit dans un langage [1] qui, traduit par un compilateur ou interprété, pourra ensuite être exécuté automatiquement par l’ordinateur. Dès 1967 on dénombrait 120 langages, dont seuls 15 étaient vraiment utilisés [2]. Les programmeurs (que l'on appelle parfois « développeurs », le mot programmeur ayant été jugé péjoratif, voir « Qualité du langage ») utilisent encore aujourd’hui des langages créés dans les années 50, période d'intense innovation.

Certains langages ont été conçus pour le calcul scientifique, d’autres pour la gestion des entreprises, d’autres enfin pour la formalisation du raisonnement ou le calcul algébrique. Il existe aussi des langages étroitement adaptés à une finalité technique précise.

*  *
Au tout début, dans les années 40, les programmeurs devaient écrire dans le langage machine de l'ordinateur. Son vocabulaire est constitué de nombres binaires qui représentent les adresses des mémoires et les codes des opérations. Mais ce langage est très pénible pour le programmeur.

L’assembleur, conçu en 1950, permet de coder les opérations en utilisant des caractères alphabétiques (ADD pour l'addition, SUB pour la soustraction etc.) et il traduit ces codes en langage machine. Néanmoins il était nécessaire de définir des langages encore plus commodes pour le programmeur, des langages dits « de haut niveau » (ils sont relativement faciles à apprendre et à utiliser, mais leur utilisation par la machine suppose une cascade de traductions).

Le premier langage « de haut niveau » fut Fortran (« Formula Translation ») conçu par John Backus à IBM en 1954. Ses instructions ressemblent à des formules mathématiques et il est bien adapté aux besoins des scientifiques, mais incommode pour les travaux peu mathématiques et notamment pour programmer des logiciels de gestion. IBM considérait Fortran comme un langage « propriétaire » qui devait être utilisé uniquement sur ses machines. Algol a été développé en 1958 par un consortium européen pour concurrencer Fortran.

Le Cobol (« Common Business Oriented Language », développé en 1959 par un consortium comprenant le Department of Defense) était destiné aux logiciels de gestion. Délibérément « verbeux », le Cobol emploie des mots et une syntaxe proches de l'anglais courant. 

D'autres langages encore plus commodes furent introduits ensuite : Basic (« Beginner's All-Purpose Symbolic Instruction Code », 1964) peut être rapidement maîtrisé par le profane ; il est utilisé dans les écoles, entreprises et ménages. C (1972) est un langage de haut niveau, mais il peut aussi être utilisé comme un assembleur car il permet de programmer des instructions au plus près de la « physique » de la machine. Beaucoup de logiciels pour les entreprises seront écrits dans ce langage souple dont l'utilisation est pourtant dangereuse pour le débutant : comme il permet de tout faire, il comporte peu de « garde-fous ».

Pascal (1970), langage « structuré » conçu de façon à éviter les erreurs de programmation notamment en encourageant la modularité, sera largement utilisé par les pédagogues qui veulent donner aux étudiants une première formation à la programmation.

Certains langages de haut niveau sont adaptés à des applications précises : APT (« Automatically Programmed Tools ») pour le contrôle des machines outils numériques, GPSS (« General Purpose Simulation System ») pour la construction des modèles de simulation, LISP (« List Processing », créé par John MacCarthy au MIT en 1959) pour manipuler des symboles et des listes (suites de symboles) plutôt que des données. LISP sera souvent utilisé en intelligence artificielle. Scheme est, parmi les dialectes de LISP, celui qui rassemble le plus de partisans. Perl (créé par Larry Wall en 1987) est un langage de commande commode dans le monde Unix et pour les serveurs Web.

Les langages de quatrième génération (4GL), utilisés surtout pour la gestion et l'interrogation des bases de données, seront encore plus proches du langage humain. On peut citer Focus, SQL (« Structured Query Language ») et dBASE.

Les langages objet (que l'on appelle souvent « langage orientés objet », expression inutilement lourde) comme Simula (1969), Smalltalk (créé par Alan Kay [3] au PARC de Xerox, 1980), C++ (créé par Bjarne Stroustrup[4] aux Bell Labs, 1983) ou Java (créé par Scott McNealy[5] chez Sun, 1995) permettent d'écrire des logiciels fondés sur des objets réutilisables, programmes rassemblant un petit nombre de données et de traitements et qui communiquent entre eux par des messages. La logique des langages objet est proche de celle de la simulation. L'évolution des langages objet est allé vers la simplicité et la sécurité : Java contient plus de « garde-fous » que C++, qui présente les mêmes risques que C. 

Les programmes peuvent s'articuler autour d'un « bus » qui assure notamment le routage des messages et soulage d'autant l'écriture de chaque programme : on parle alors d'EAI (« Enterprise Application Integration ») ou encore de « middleware ». 

Le système d'exploitation (ou OS pour « Operating System ») est un programme qui assure la mobilisation des ressources physiques de la machine : allocation du processeur et de la mémoire vive aux divers programmes en cours d'utilisation, gestion automatique des entrées et sorties vers les périphériques (disque dur, imprimante, modems, « ports » de communication), messages d'erreurs, exécution des tâches de fond, etc. Les fonctions offertes à un programme développé en 1966 sous l'OS des IBM 360 étaient pratiquement les mêmes que celles disponibles sous la dernière version OS/390. La première version d'Unix a été développée en 1969, les bases de données relationnelles sont nées en 1970. Linux est une version d'Unix adaptée au PC ; il concurrence fortement Windows, en particulier sur le marché des serveurs. 

Le mot « programmation » recouvre des activités très diverses : l'utilisateur individuel « programme », même s'il ne s'en rend pas compte, lorsqu'il utilise Excel et Word ; il peut aussi, s'il a un tempérament de bricoleur, faire de petits programmes en Pascal ou en Scheme : mais dans la plupart des cas ce bricolage n'ira pas loin même s'il est ingénieux. Les gros programmes sont écrits par des équipes de programmeurs spécialisés qui se partagent les tâches et utilisent souvent des générateurs de code (comme Rational Rose) pour la partie la plus mécanique du travail d'écriture. La différence entre le programme individuel et le gros programme est du même ordre que celle qui existe entre le travail (éventuellement très réussi) qu'un bricoleur bien équipé peut réaliser à domicile et la construction d'une automobile ou d'un avion, qui suppose la maîtrise d'un ensemble de techniques et des mises au point dont seule une grosse entreprise peut être capable.


[1] Pour une critique de la notion de langage, voir Vocabulaire de l'informatique

[2] Jean E. Sammet, Programming Languages : History and Fundamentals, Prentice-Hall 1969, p. vi.

[3] Michael Hiltzik, Dealers of Lightning, Harper Business, 1999.

[4] Bjarne Stroustrup, The Design and Evolution of C++, Addison Wesley, 1999.

[5] Richard Stiller et Jos Marlowe, Asunder, Briarwood, 1999.