Histoire des langages de programmation
et leur évolution
Liste des langages de programmation
Par Denis Sureau
Ce document est (c) 2000/2008 par Denis G. Sureau. Vous pouvez l'imprimer
et le reproduire à des fin éducatives. Vous ne devez pas mettre
ce document sur un autre site mais plutôt placer un lien sur cette
page.
Critères de sélection: Un langage de programmation entre dans
l'histoire s'il est largement utilisé ou s'il a inspiré d'autres
langages de programmation. Des langages nouveaux et innovateurs sont aussi
dans la liste.
Les langages de programmation généraux ont connu une évolution
laborieuse et étrange depuis 1946. Pour montrer l'évolution
de la syntaxe, des fonctionnalités, les voici classés par
date d'implémentation. Quand Pascal, C++, Python, sont apparus, qui
les a imaginés, pourquoi les langages ont-ils ces différences?
Les dates retenues correspondent au moment ou le premier programme à
pu être écrit et compilé dans le langage. Il est fourni
quand c'est possible le site d'un compilateur ou interpréteur pour
le langage ou une fiche détaillée pour les principaux d'entre
eux. L'historique concerne surtout les langages dapplication
ou de script universels, mais je mentionne certains langages spécialisés
importants et tous ceux qui ont eu une influence majeure dans la conception
ultérieure d'autres langages de programmation.
Si vous trouvez des erreurs ou des omissions, vous pouvez le dire: envoyez
un commentaire à: contact@scriptol.org.
Les principales catégories de langages (à ce jour), sont
les langages fonctionnels et procéduraux (dits aussi impératifs),
et les langages logiques..
Un langage est dit fonctionnel, au sens mathématique du mot fonction,
si chaque opération est indépendante du contexte, et si le
résultat d'une fonction dépend exclusivement de ses arguments.
Haskell, Lisp, sont des langages fonctionnels de genres différents.
Ils sont plutôt destinés à l'intelligence artificielle.
Lisp utilise le principe de réduction de problème, Prolog
le principe de résolution par des prédicats de premier ordre,
c'est un langage logique.
On oppose aussi le style impératif au style déclaratif. En
fait on considère déclaratif un système qui énonce
des connaissances, l'énoncé d'un problème, et fournit
un mécanisme de résolution. Prolog se dit déclaratif.
Pratiquement tous les langages, fonctionnels ou impératifs sont maintenant
orientés objets, et utilisent des classes décrivant des objets
réels ou purement informatiques.
On distingue 4 générations de langages de programmation plus
au moins deux nouvelles tendances..
1 Langages machine.
2 Langages symboliques et autocodes.
3 Langages indépendants du matériel, comme Basic, C, Cobol,
Algol...
4 Langages conçus pour décrire le problème, comme
Simula et autres langages à objets .
5 Les langages à programmation logique prétendent
représenter la cinquième génération, mais
leur utilisation est marginale. La cinquième génération
pourrait être celle des langages Internet, donc fonctionnant sur
toute machine et compilés en code intermédiaire (dit virtuel).
6 Les langages "Markup" inspirés de XML sont la dernière
tendance, ils intègrent le code et les données sous une
forme extensible, et qui fonctionnent sur le web..
Indépendamment de ces générations théoriques,
les grandes dates sont les suivantes:
- Années 50: Création des langages de haut niveau (plus
proches de l'homme).
- Années 60: Foisonnement de langages spécialisés.
Forth. Simula I. Lisp, Cobol.
On essaie sans succès d'imposer des langages généraux:
Algol, PL/1.
- Années 70: Duel entre programmation structurée avec
Pascal et l'efficacité du langage C (cela dure encore
en 2000). Généralisation du Basic interprété
sur les micro-ordinateurs apparus en 1977, jusqu'à la fin des
années 80.
- Années 80: Expérimentation d'autres voies et notamment
des objets. ML. Smalltalk.
Sur les micro-ordinateurs, on utilise maintenant C,
Pascal, Basic compilé.
- Années 90: Généralisation de la programmation
objet grâce aux performances des
micro-ordinateurs. Java, Perl, Python s'ajoutent aux langages
micros.
- Années 2000: Programmation Internet (et les innovations à
venir, voir en fin de texte).
| Premier langage |
| Ada Lovelace ainsi que Babbage et son neveu écrivaient
des programmes pour le projet de machine à différences puis
la machine analytique de Babbage. En 1945, l'allemand K Zuse, inventeur de l'ordinateur Z3, aurait défini un langage évolué pour cette machine (avec arrays et records). On possède peu de documents sur ce langage. |
| Assembleur |
| Fsd Simtel |
| Les assembleurs existent depuis le début des ordinateurs. Ils
associent un nom symbolique au code du langage machine, par exemple: add bx, 4 // Addition dans un registre cmp [adr], 3 // Comparaison avec une variable jmp address // Saut à une adresse La programmation en assembleur ne se pratique plus sur les ordinateurs actuels même pour les routines d'exécution rapides... Plusieurs langages actuels génèrent un bytecode portable qui est proche de l'assembleur, mais est invisible au programmeur. |
| Autocode - 1952 |
| Alick E. Glennie |
| Implémenté d'abord sur Mark 1 puis sur d'autres machines, c'est un code symbolique qui se traduit en langage machine. |
| IPL - 1956 - Information Processing Language |
| A. Newell, H. Simon, J.C. Shaw |
| Langage de traitement de listes, de bas niveau. Implémente la récursivité. |
| Fortran - 1954-1958 - FORmula TRANslator system |
| John Backus et autres chercheurs dIBM |
| Fsd (Dans gcc) |
| Langage
dédié aux calculs mathématiques. Fortran II en 1958 a introduit les sous-programmes les fonctions, les boucles, une structure de contrôle FOR primitif. Les identifieurs avaient au plus six caractères. |
| Lisp - 1958-1960 - LISt Processing |
| Mac Carthy |
| Fsd |
| Langage fonctionnel de traitement de liste. Il est récursif et non itératif. Les données et les programmes ne sont pas distingués et peuvent être traités de la même façon. |
| IAL - 1958 - International Algebraic Logic |
| Premier nom dAlgol 58, non implémenté. |
| Algol - 1960 / Algol W - 1966 / Algol 68 - ALGOrithmic Language |
| Défini par une commission internationale d'infomaticien coordonnée par l'IFIP |
| Algol Génie |
| C'est le premier langage universel indépendant de
la machine. Introduit la grammaire BNF (Backus Naur Form) pour réaliser un parseur de syntaxe. Introduit la structure de bloc dinstructions et les variables locales aux blocs. Introduit la récursivité (malgré les réticences car on considérait cela comme superflu!). Il utilise des tableaux dynamiques, les langages suivants comme Pascal et C ont donc régressé en utilisant des tableaux statiques pour des raisons de performance. On y trouve le IF THEN ELSE, un FOR assez général, le symbole d'affectation :=, un SWITCH avec des gotos, les délimiters BEGIN END, le WHILE.. LAlgol W de Niklaus Wirth en 1966 introduit les RECORD, les déclarations de structures de données dynamiques, le CASE, le passage de paramètres par valeur, la précédence des opérateurs. La même année, Niklaus Wirth crée Euler, langage intermédiaire entre Algol et Pascal. Algol 60 restait un langage orienté vers le calcul mathématique. Pour revenir à l'objectif de langage général, une nouvelle version à été décidée en 1964, l'Algol X, devenu ensuite Algol 68. Algol 68 utilisait =+ pour combiner l'affectation et l'addition. Il apportait la structure d'union et le cast de type. Il ajoute un IF THEN ELIF FI, le CASE, le GOTO, des opérateurs définissables par l'utilisateur. Il ne permettait pas le compilation séparée de fichiers (dite incrémentale). |
| Cobol - 1960 - COmmon Business Oriented Langage |
| Défini par un comité, la CODASYL, COnference on DAta SYsystems Languages |
| Fsd |
| Les travaux de la conférence, sous les auspices du
Department Of Defense, avec des fabricants, uiversités et utilisateurs,
ont duré de mai 1959 à avril 1960. Grace Murray Hopper, qui avait défini Flow-Matic, un langage compilé dans les années 50, faisait partie du comité. Langage procédural classique destiné à la gestion dentreprise, dans lequel un programme est composé de 4 divisions: identification, environment, data, procedure, qui peuvent comporter des sections. Il est fondé sur les données et défini précisément le matériel et les formats dentrées et sorties de données. Il introduit la structure de donnée RECORD. Les programmes sont auto-documentés par la syntaxe, ce qui ne les rend pas plus légers! |
| APL - 1964 - A Programming Language |
| K. Iverson |
| Fsd Simtel |
| Langage utilisant une notation mathématique, composé
dopérateurs. Un seul type, le tableau. Défini entre 1957 et 1960 il a été implémenté en 1964. |
| Basic - 1964 - Beginners All-purpose Symbolic Instruction Code |
| John Kemeny, Thomas Kurtz |
| Fiche |
| Il a été conçu, en 1963, pour être
facile à apprendre, et implémenté en 1964. La première
version était compilée, puis il est devenu interactif et interprété.
Chaque ligne était numérotée pour permettre les branchements
par GOTO! Bill Gate et Paul Allen ont gagné un concours international en concevant l'implémentation d'un Basic performant, d'abord pour l'Altair (en 4 k. de mémoire) puis sur d'autre micro-ordinateurs. Les micro-ordinateurs seront fournis avec un langage Basic en mémoire morte (ROM) jusqu'à la fin des années 80. En 1977 les Apple II sont fournis avec un basic entier. Plus tard ils auront un basic Applesoft de Microsoft en virgule flottante. L'Applesoft à des identifieurs d'au plus deux caractères!, les branchements se font sur des numéros de lignes. Les sous-programmes sont appelés par un GOSUB sur un numéro de ligne. Le premier PC d'IBM, sorti en 1981 utilise MS-DOS de Microsoft et son basic interprété (le Basica). En 82 Microsoft fournit un basic compilé (Quick Basic). Pascal et le langage C se substitueront au Basic au cours de la même décennie, Microsoft fournit encore un basic compilé Visual Basic . ASP pour le web et les langages d'extension d'application (macro) sont en basic. True Basic, par les auteurs originels est compilé et n'utilise plus les numéros de lignes.
|
| Iswim - 1965 - If You See What I Mean. (Si vous voyez ce que je veux dire). |
| P. Landin |
| Premier langage fonctionnel, au sens mathématique du terme. Le premier aussi à utiliser l'évaluation paresseuse (lazy evaluation). |
| Grammaires Attribuées - 1965 |
| Donald Knuth |
| Complétant la méthode BNF, les grammaires attribuées (attribute grammar) décrivent la sémantique des langages sous forme de fonctions exécutables. Ce type de grammaire facilitera la réalisation de compilateurs. |
| Simula 67 - 1962-67 |
| Ole-Johan Dahl, Kristan Nygaard |
| Fsd |
| Le projet Simula a démarré en 1962. Le but
était d'en faire un outil de description de système d'évènements
discrets ou de réseau, et un langage de programmation de simulation. Il était conçu comme une extension au langage Algol. En 1964, Simula 1 était implémenté sur Univac 1107. Il a été utilisé alors pour contrôler des administrations, des aéroports, de la planification, du transport, ou un système social. C'était alors un outil spécialisé. En 1966 a été prise la décision d'en faire un langage universel. Plusieurs projets ont été lancés avec des constructeurs d'ordinateurs différents (Ibm, Univac, Digital) qui ont abouti à Simula 67. Ce langage universel introduisait la notion de classes, de sous-classes et dobjets instances des classes. Les classes permettent d'associer les fonctions (méthodes) aux objets. |
| Logo - 66 |
| W. Fuerzeig, Seymour Papert, et autres |
| Destiné à apprendre la programmation aux enfants, il est proche de Lisp, et basé sur le déplacement d'une "tortue" sur l'écran. |
| Snobol 4 - 1967 - StroNg Oriented symBOlic Language |
| D.J. Farber, R.E. Griswold, F.P. Polensky au Bells Labs |
| Snobol est apparu en 1962. Snobol 4 est la première version stable et distribuée de Snobol, en 1967. Cest un langage de traitement de texte ou manipulation de chaînes de caractères, basé sur le principe de patterns, concaténation et alternation. Il utilise essentiellement des tableaux et des tables. C'est le premier langage à implémenter des tableaux associatifs (dictionnaires) indexés par des clés de tous types. Il est aussi le premier à implémenter le pattern-matching, sorte de switch case élaboré. On peut , exécuter du code contenu dans des chaînes de caractères.. Les types sont: string, integer, real, array, table, pattern et types définis par l'utilisateur. |
| CPL - Combined Programming Language |
| Universités de Cambridge et Londres |
|
C'est un mélange d'Algol 60 et de langage fonctionnel destiné
à calculer la preuve de théorèmes. Il utilisait des
structures de test polymorphiques. Langage typé avec un type joker
"any". Types structurés liste et table. |
| BCPL - 1965? - Basic CPL |
| Martin Richards |
| Ce langage se voulait une version simplifiée du CPL. Il utilise les constructs FOR, LOOP, IF THEN, WHILE, UNTIL, REPEAT, REPEAT WHILE, SWITCH CASE, etc... Il possède des procédures et des fonctions contrairement à C. Les délimiteurs de block sont les symboles $( ..... $) qui ont sans doute inspiré les délimiteurs de commentaire du C: /* ... */ |
| PL/1 - 1965? - Programming Language number One - Originellement NPL (New Programming Language) |
| IBM |
| Ibm pour des liens sur des compilateurs. |
| Le langage a été conçu pour être
général et modulaire. Les mot-clés ne sont réservés que dans le contexte où on les utilise comme tels. Il est plus indépendant du matériel que ses prédécesseurs. Ces types sont reconnus: fixed, real, complex, character, bit, bin, pointer, picture, file, etc.... Les variables ont des attributs par défaut (comme la précision parr exemple), qui dépend du contexte. Ces types composés sont intégrés: array, structures, unions, et combinaisons d'entre eux. IF THEN et SELECT .. WHEN .. OTHERWISE sont les structures conditionnelles , et les variations de la structure DO permet des boucles conditionnelles. Des classes de stockage sont introduites: automatic, static (pour la vie du programme), controlled, based. Les exceptions sont implémentées. |
| Pascal - 1970 - Du nom de Blaise Pascal, mathématicien français |
| Niklaus Wirth |
| Fiche |
|
Langage conçu pour faciliter la réalisation des compilateurs
et qui dirige l'enseignement de la programmation en obligeant à
une programmation structurée. |
| Forth - 1971 - Fourth réduit à Forth pour la contrainte de 5 lettres de lIBM 1130 |
| Charles H. Moore |
| Forth.org Simtel |
| Définit dans les années 60, implémenté
apparemment en 71. Langage dAstronomie qui utilise une pile à la place des variables. Il se voulait langage de 4 ième génération, d'ou le nom. |
| Smalltalk - 1972 |
| Alan Kay et le Software Concept Group |
| Fsd |
| C'est un langage totalement orienté objet qui fonctionne à l'intérieur d'un environnement graphique, avec fenêtre, la souris. La notion de bitmap (1 pixel = 1 cellule de mémoire) est introduite. |
| C - 1973 - C succède à B, qui succède à BCPL |
| Dennis Ritchie |
| Fiche |
|
Cest un langage destiné au départ à programmer
le système dexploitation UNIX, et qui est devenu rapidemment
universel grâce à sa portabilité et ses performances..
En 1965, les programmeurs d'ATT utilisent le langage Bcpl pour travailler
sur la réalisation d'Unix. Insatisfaits du langage, ils l'ont fait
évoluer dans une nouvelle version appelée B, puis dans un
nouveau langage appelé C qui obtiendra le succès que l'on
sait. Bcpl n'avait pas de type. Les déclarations du genre int i, char
b ont été crées avec C. D'autres types sont apparus
ensuite. L'opérateur += vient d'Algol 68, mais cela s'écrivait
plutôt =+ |
| Prolog - 1970+ |
| A. Colmerauer, D. Roussel |
| GNU Prolog |
| Le langage à été développé
conjointement en France à Aix-en-Provence et à Edimburg. Il introduit la programmation logique. Un programme est composé de clauses de Horn. Prolog se dit déclaratif parce que son système d'inférences logiques constitue un mécanisme de résolution. |
| Sql - 1970+ - Standard Query Language |
| IBM |
| mySQL |
| Langage d'interrogation de bases de données relationnelles. Il succède au langage Square. |
| Awk - 1974 - Selon les initiales des auteurs |
| Aho, Kerninghan, Weinberger |
| Fsd |
| Langage de traitement de texte basé sur des expressions régulières, fonctionnant selon le principe pattern-action. |
| Scheme - 1975 - De "schemmer" |
| MIT - G. Steele, G. Sussman |
| Langage dérivé de Lisp, utilisé comme langage de script. |
| Plasma - 75 |
|
Carl Hewitt |
| Langage à acteurs. Implémenté en Lisp. |
| Sasl - 1976 - Saint Andrews Static Language |
| D. Turner |
| Destiné à apprendre la programmation fonctionnelle. Descend de Iswim, structures de données en nombre illimité. |
| Icon - 1970+ |
| Griswold |
| Langage procédural, avec fonctions de traitement
de texte comme Snobol4, et des constructs puissants. Il dispose de types structurés: liste, set, table (dictionnaire). Une liste s'écrit: nom := [ "mot", "mot", nombre, etc...] Une liste s'adresse avec un indice, comme a[i] ou par une gestion de pile. Un set contient des éléments non doublés et dispose de fonctions d'union, intersection, suppression. Le construct range s'écrit: a to b ou "to" est le mot-clé et "a" et "b" sont des variables.. On peut placer un range dans une expression ou comme argument d'une fonction. L'expression et la fonction seront appelés pour chaque valeur de l'intervalle. Ex: write(1 to 5) affichera 1, 2, 3, 4 ,5. Les expressions ne retournent pas une valeur vraie ou fausse mais sont évaluées ou rejetée. Les opérations associées sont exécutées quand l'expression est évaluée. C'est le premier langage à évaluation des expressions dirigée par le but. L'instruction du langage C: si ( x= expression) ... qui signifie: assigner à x le résultat de l'expression, et si a est différent de zéro, alors..., cette construction est généralisée en Icon, si l'expression est évaluée, x prend sa valeur et la condition est remplie, sinon x n'est pas changé et la condition est passée. Le construct every ... do associé à une expression fonctionne comme un itérateur. De même que le range. L'alternation est un autre construct original puissant. Il permet d'utiliser une succession de paramètres, éventuellement jusqu'à obtention d'un résultat. Son symbole est "|". Par exemple l'instruction: si a | b | c = 0 | 1 alors .... se lit: si a ou b ou c vaud 0 ou 1 alors ... |
| ML - 1973? - Meta Language |
| R. Milner |
| Langage fonctionnel inspiré de Iswim. Il avait pour but la preuve de théorème à l'université d'Edimbourg. Les fonctions sont remplacées par des pattern models. Implémenté en Lisp. |
| Modula 2 - 1979 - MODUlar LAnguage |
| Niklaus Wirth |
| Fsd |
| Modula 1 aurait été défini en 1977.
Implémenté sur station de travail Lilith à l'origine. Lidée du langage est de réduire le risque derreur avec des règles de programmation coercitives. Cependant, il se rapproche du langage C en tentant de combler les lacunes de Pascal. Ainsi, un appel de fonction sans paramètre s'écrit f() comme en C et non f comme en Pascal. Il découpe un programme en modules contenant des routines et des structures de données, avec une visibilité locale, et avec des interfaces entre modules. Utilise des coroutines. Il apporte des fonctions d'accès au hardware pour concurrencer le C. Il sera peu utilisé hors du cadre universitaire, parce que ces améliorations (modules, accès matériel), ont été ajoutés aux distributions de Pascal (avec notamment les units de Turbo Pascal). |
| Ada - 1980+ - Du prénom de Ada Byron de Lovelace, première femme à programmer |
| Créé par un groupe de travail dirigé par Jean Ichbiah, sur un cahier des charges du (DOD) Departement de la défense des USA |
| Fsd |
| Inspiré par Pascal et Algol W. Introduit la généricité des algorithmes et une sorte dorientation objet primitive, il deviendra orienté objet par la suite après C++. Introduit les paquetages, modules indépendants. |
| C++ - 1981-1986 |
| Bjarne Stroustrup |
| Fiche |
| Langage orienté objets, selon le principe de Simula. Introduit la surcharge des opérateurs. Les méthodes peuvent être inline. A coté du symbole /* et */ pour enclore les commentaires, il utilise le symbole // pour un commentaire d'une ligne. On notera la réapparition d'un symbolisme qui existait déja dans le langage Bcpl, auquel le langage C à succédé! Objective C, inventé par Brad Cox en 1984 est une autre
version orientée objet de C qui s'inspire de smalltalk. Pas de
surcharge des opérateurs. |
| Standard ML - 1984 |
| R. Milner, université dEdimburgh et Cambridge, Inria. |
| Rechercher "Standard ML Moscow" sur moteur de recherche. |
| Implémentation de ML. |
| Eiffel - 1985 - Du nom de Gustave Eiffel |
|
Bertrand Meyer |
| Fiche |
| Langage procédural totalement orienté objet,
implémente la persistence conçu pour la sécurité
du logiciel. Se compile en C. Peut s'interfacer avec d'autres langages. Il incorpore des éléments de langage fonctionnel, dispose de classes génériques, d'un garbage collector. Une version dérivée existe en open source, Sather, (nom de la tour de Berkeley). |
| GAP - 1986 - Groups, Algorithms and Programming |
| Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schönert, et autres. |
| Gap Software |
| Le langage a été défini pour programmer
des algorithmes mathématiques. Il est interprété, interactif et non typé. Liste et records les structures de base. La syntaxe s'inspire de Pascal avec des différence. Les commentaires sont insérés avec #. Une fin de bloc est notée par inversion des mot-clés: if fi, do od. La boucle for à la forme for in liste ou for from to. Le langage distingue procédures et fonctions. Ce qui le caractérise est que les variables pointent sur une valeur et non une adresse de mémoire, et la définition d'une fonction qui a la forme d'un appel: x := fonction(arguments) bloc. On peut imbriquer une fonction dans une autre fonction. |
| Miranda - 1989 - Du nom d'une héroïne de Shakespeare (Miranda, admirable en latin) |
| D.Turner |
| Inspiré de Sasl et ML. Les arguments dune fonction ne sont évalués quau moment ou ils sont utilisés (lazy evaluation). Pattern-matching imbriqué, modules. |
| Caml - 1987 - Categorical Abstract Machine Language |
| Suarez, Weiss, Maury |
| Inria |
| Caml et Objective caml en 1996, implémentent ML. |
| Perl - 1987 - Practical Extracting and Report Langage |
| Larry Wall |
| Perl |
| Destiné à remplacer les langages de ligne de
commande dUnix, Sh et Sed ainsi que Awk, il reprend la même
(affreuse) syntaxe. Sert surtout à l'administration de système,
et aux scripts CGI. Utilise listes et tableaux associatifs (dictionnaires). Le construct FOREACH permet de parcourir le contenu de listes. |
|
Oberon - 1988 |
|
Niklaus Wirth |
| Simtel |
|
Après Modula 2, l'auteur définit le langage Lilith en
1980 (sur machine Lilith), puis Oberon. |
| Haskell - 1990 - Prénom du logicien Haskell Curry |
| Langage élaboré par un comité pour les langages fonctionnels |
| Haskell |
| Langage purement fonctionnel. Inspiré de Miranda,
donc de Sasl. Tableaux fonctionnels, pattern matching. |
| ABC - 1980-90 - ABC selon l'expression |
| CWI - Meertens, Pemberton (et Guido Van Rossum) |
| CWI Simtel |
| Langage de script mis au point par CWI aux Pays-bas et qui
se voulait un successeur du Quick Basic ou des langages de script sous Unix. Sans doute le premier à utiser lindentation seule pour dénoter limbrication des procédures: il ny a pas de délimiteurs comme begin/end ou équivalent. Autre innovation, il ny a pas de gestion de fichier, mais persistence des variables globales: elles conservent leur contenu dune session à lautre! Il y a cinq types de base: nombre, chaîne, liste, composé (structure sans noms de champs), tableau. |
| Python - 1991 - Le nom vient de la série de télévision anglaise "Monty Python Flying Circus" |
| Guido Van Rossum |
| Fiche |
|
Langage de script au typage dynamique. C'est une alternative à
Perl. |
| Pov-Ray - 1991 - Persistence Of Vision (titre d'un livre médiocre de science-fiction) |
| D. et A. Collins, et contributeurs |
| PovRay |
| Pov-Ray est un langage de description d'images. |
| DisCo - 1992 - Distributed Co-operation |
| Reino Kurki-Suonio |
| Disco |
| Disco est un langage de spécification pour les systèmes réactifs, avec la syntaxe de Pascal. Les constructs du langage sont les objets, les fonctions commandées par évènements (appelées ici actions) et les relations. Une fonction est activée quand un état du système survient et peut-être surchargée. Disco est focalisé sur les interactions collectives. Les layers (couches, cadres) sont les modules du langage. C'est un language orienté-système avec objets et réactions (et non orienté-action comme il est dit dans la présentation). |
| Ruby - 1994 - Comme la pierre précieuse, par analogie avec Perl |
| Yukihiro Matsumoto |
| Ruby-Lang |
|
Ruby a été conçu comme successeur à Perl
et alternative à Python, pour être plus clair que le premier
et plus orienté-objet que le second. La syntaxe s'inspire de
ces deux langages, elle se veut intuitive et naturelle, mais peut être
complexe. |
| Java - 1994 - Java se traduit par caoua, café |
|
James Gosling et autres programmeurs chez Sun |
| Fiche |
|
Conçu à l'origine, en 1991, comme un langage interactif,
et nommé Oak, il n' aucun succès. Mais en 1994 il est réécrit
pour Internet et renommé Java (café, caoua). En 1995 les
navigateurs peuvent exécuter des applettes. En janvier 1996, Javasoft
sort JDK 1.0, le Java Developpement Kit. |
| PHP - 1995 - Personal Home Pages Hypertext Processor |
| Rasmus Lerdorf |
| Fiche |
|
Langage de script multi-plateformes, s'intégrant au HTML. |
| JavaScript - 1995 (Etait d'abord nommé LiveScript) |
| Brendan Eich à Netscape |
| ECMAScript |
|
Language de scripts pour insérer du code procédural and
les pages web. |
| UML - 1996 - Unified Modeling Language |
| Standard par OMG (Object Management Group) - Grady Booch, Jim Rumbaugh, et Ivar Jacobson |
| Ressources |
|
Uml est l'union de trois langages de modélisation conçus par les trois auteurs ci-dessus. Le langage utilise une notation graphique pour décrire des projets logiciels. Un source est un diagramme représentant des objects et leur interactions.Un modèle est fait de vues et leur combinaison décrit un système complet. Le modèle est abstrait et indépendant du domaine. |
| ECMAScript - 1997 - ECMA Script |
| Standard par le centre de normalisation européen E.C.M.A. |
| Fiche |
|
Standard pour le langage JavaScript inventé par Netscape, pour rendre les pages web coté client dynamiques. |
| Rebol - 1997 (La definition est plus ancienne) - Relative Expression-Based Object Language |
| Carl SassenRath |
| Rebol |
|
Langage de scripts interprété utilisant un code compact.
Il est destiné la communication sur Internet et les systèmes
distribués. Il est extensible. |
| C# - 2000 - (C-sharp), note de musique, succède à C++ (synonyme de mélodie?) |
| Anders Hejlsberg / Microsoft. |
| Fiche |
| Ce langage est promis à un grand succès à partir
de 2002. Il est le langage de base de la plateforme .NET, pour programmer
des logiciels utilisable à distance sur Internet notamment. Comme
Java, il reprend la syntaxe du langage C (qui a quand même 30 ans!)
avec les mêmes simplifications: garbage collector, absence de pointeur,
pas d'héritage multiple, interfaces, multi-tâche...
Le C# se compile en langage intermédiaire , le MSIL (MicroSoft
Intermediate Language), et fonctionne avec une bibliothèque multi-langages,
le CLR (Common Language Runtime). L'originalité essentielle est
que des langages différents peuvent être compilés
en MSIL et partager leurs classes. |
| AspectJ - 2001 - Aspect for Java |
| Palo Alto Research Center |
| Fiche |
| Aspect J est une extension Java qui implémente la programmation orienté-aspect. Une technique qui modularise les "concerns" transversaux. Ici l'unité n'est pas la classe, mais un concern, qui se partage entre plusieurs classes. Les concern peuvent être des propriétés, des zones d'intérêt, d'un système et la POA décrit leurs relations, les compose ensemble dans une programme. Les aspects encapsulent un comportement commun à plusieurs classes. |
| Scriptol - 2001 - Scriptwriter Oriented Language |
| Denis G. Sureau |
| Fiche |
| Le plus récent, le plus puissant des langages de programmation
procéduraux. Scriptol peut-être compilé en PHP, en C++
ou en exécutable, ce qui lui donne une grande portabilité.
C'est à la fois un langage d'applications, de scripts et de pages
web. Les blocs d'instructions et les structures de contrôle ne sont pas clos par "end" ou "}" mais, comme XML, avec la forme: "/if", "/for", " /while", etc... Le langage dispose de nouvelles structures de controle: "for in", "while let", "scan by", etc... Le "if composite" facilite l'implémentation de règles. Les variables et les litteraux sont des objets. On crée un objet primaire (nombre, texte, etc...) ou évolué par affectation directe d'une valeur ou d'une liste d'arguments au nom. Scriptol est destiné à évoluer pour fournir, à coté des classes, d'autres structures de haut niveau et rapprocher la programmation de la pensée. Depuis octobre 2003, scriptol permet d'utiliser XML comme structure de données interne. |
| Scala - Février 2004 |
| Ecole Polytechnique Fédérale de Lausanne |
| Scala Lang |
| Scala est un langage purement orienté-objets qui implémente quelques caractéristiques de Python dans la syntaxe Java. Il est statiquement typé et à la fois procédural et fonctionnel. Il tourne actuellement sur JVM et .NET. |
| E4X - June 2004 - ECMAScript For XML (E four X) |
| E.C.M.A. |
| Ecma |
| E4X n'est pas un langage, mais une addition à un langage. De la même façon que Scriptol utilise XML comme structure de données, E4X permet d'assigner XML aux variable ECMAScript, et d'accéder aux élément par un indice ou un attribut. |
Le langage du futur
On voit qu'après la pléthode de dialectes des années
70, l'invention de langages à stagné quand à la syntaxe.
Les langages courants, même récents comme Java, C#, PHP, n'apportent
aucun changement aux instructions du traitement. Les capacités actuelles
des ordinateurs ne sont pas exploitées.
Quelques tendances:
- Langages simples.
Il existe une tendance à la modernisation avec des langages de script comme Python , Ruby. NetRexx, Scriptol. Python est le plus utilisé actuellement. Ruby est surtout utilisé pour la bibliothèque Rail. Scriptol dispose de fonctionnalités innovantes. - Langages Internet
De 1992 à 2000, les concepteurs paraissent s'être consacrés à implémenter l'orientation objet sur tous les langages existants... Aucun nouveau langage d'application, mais apparition de langages Internet comme JavaScript, ASP, PHP, qui tendent à mêler données et fonctions de traitement. - Langages Markup
La tendance la plus récente est de transformer les documents XML en exécutables.
Scriptol est le premier langage à utiliser XML comme structure de donnée intégrée aux sources, et accessible aux instructions du langage. Cela constitue un nouveau pas après la programmation orientée-objet.
- XUL est un project Mozilla qui intègre JavaScript dans du code XML pour définir très facilement des interfaces utilisateur graphiques. Sur le Web avec Firefox ou localement avec le runtime XulRunner.
- Microsoft utilise XAML de façon très généralisée pour définir les interfaces graphiques. Sur le Web avec Silverlight, multi-navigateurs et localement avec .NET.
- Un nouveau langage C++, dit "C++0x", probablement "standard C++09". Il aura des tuples et un garbarge-collector, et une librairie standard étendue, avec expressions régulières et threads.
- SQL Les applications Web et les sites dynamiques du Web 2.0 rendent le SQL de plus en plus incontournable en programmation moderne.
Conclusion
La plateforme .NET peut faciliter l'intégration de code à l'intérieur des données, mais le XML peut aussi être une alternative. Même si le C# tend à se populariser, ce sera grâce à la force de l'habitude, et comme successeur du C++ et de Java. .NET, en permettant d'utiliser des langages différents avec les librairies existantes, devrait favoriser l'apparition de nouveau langages, plus intéressant parce que plus proche de la pensée, beaucoup plus que ne le sont les langages actuels. Il est possible et pratique d'utiliser XML directement comme structure de données.
D'autres tendances apparaissent dans les langages avec la programmation par aspects, ou par schémas tel UML...
Ressources et informations
- Dmoz Répertoire mondial des sites web, section des langages de programmation.
- La liste complète Tous les langages de programmation par ordre alphabétique.
- Salut le Monde! Un exemple de programme minimal dans chaque langage.
(c) 2001-2008 Denis G.Sureau - Version originale de Janvier 2001. Dernière révision en Janvier 2008
Accueil
