1.
Historique des langages de programmation
Schématiquement il est
possible de les classer en cinq catégories :
1°
Les langages procéduraux ou impératifs.
2° Les langages fonctionnels. 3° Les langages logiques. 4° Les langages objets. 5° Les langages de spécification. |
L’un des principaux objectifs d’un langage de programmation est de permettre la construction de logiciels ayant un minimum de qualités comme la fiabilité, la convivialité, l’efficacité.
Il faut connaître l’histoire des langages et se rendre compte qu’à ce jour, malgré les nouveaux langages du marché et leur efficacité, ce sont Cobol et Fortran qui sont les plus utilisés (numériquement) dans le monde. L’investissement intellectuel et matériel prédomine sur la nouveauté. Cette remarque est la clef de la compréhension de l’évolution actuelle et future des langages.
Les langages ont commencé directement sur des instructions machines écrites en binaire et donc rudimentaires sur le plan sémantique. Les améliorations sur cette catégorie de langages se sont limitées à construire de s langages symboliques (langage avec mémonique) et des macro-assembleurs. J.Backus d’IBM avec son équipe a mis au point dès 1956-1958 le premier langage évolué de l’histoire, uniquement conçu pour le calcul scientifique (à l’époque l’ordinateur n’était qu’une calculatrice géante).
Les années 70 ont vu s’éloigner un rêve d’informaticien : parler et communiquer en langage naturel avec l’ordinateur.
Actuellement les langages évolués
se diversifient et augmentent en qualité d’abstraction et de convivialité.
classification sur un axe
d’abstraction : de la machine à l’homme
Les langages majoritairement
les plus utilisés actuellement sont ceux qui font partie de la catégorie
des langages procéduraux. Les ordinateurs étant des machines
de Turing (améliorées par von Neumann), la notion de mémoire
machine est représentée par la donnée abstraite qu’est
une variable, dans un langage procédural. D’autre part, les machines
de Türing sont séquentielles et les langages impératifs
traitent les instructions séquentiellement. Ceci montre que les
langages procéduraux sont parfaitement bien adaptés à
l’architecture de l’ordinateur ; ils sont donc plus " facilement " adaptables
à la machine.
1.1 Les langages procéduraux ou impératifs
Voici un arbre généalogique (non exhaustif) de certains langages connus. Pour chaque langage nous avons indiqué quelques éléments de référence.
Par exemple : FORTRAN (58) [scientifique
- IBM] signifie que le premier compilateur commercial a été
diffusé environ en 1958, que le domaine d’activité pour lequel
le langage a été élaboré est le domaine du
calcul scientifique, enfin qu’il s’agit d’un acte commercial puisque c’est
la compagnie IBM qui l’a fait réaliser.
Dans cette courte liste, seuls Algol, Basic et Pascal sont des langages qui ont été conçus par des équipes dans des buts de recherche ou d’enseignement. Les autres langages sont élaborés par des firmes et des compagnies dans des buts de commercialisation, de rationalisation des coûts de gestion (DOD) etc... Les langages de programmation, comme le reste des outils de la science informatique, sont fortement soumis aux règles du marché, ce qui provoque pour cette discipline le pire et le meilleur.
Pour donner les propriétés des autres catégories de langages, nous nous servirons de la catégorie des langages procéduraux comme référence.
Dans un langage procédural,
l’affectation (transfert d’une valeur dans une mémoire) est la base
des actions sur les données. La catégorie la plus utilisée
après les langages procéduraux est celle des langages fonctionnels.
Citons quelques représentants des langages fonctionnels :
LISP :(LISt Processing - 1962) en fait c’est essentiellement un langage de traitement de listes.
SCHEME : c’est un dialecte pédagogique épuré(1975) de LISP.
ML : langage fonctionnel
moderne(1990) classé dans la catégorie des langages fonctionnels
fortement typés (l’INRIA diffuse gratuitement sur micro-ordinateur
une version CAML-Light pour l’enseignement). CAML est utilisé actuellement
pour l'enseignement de l'informatique dans les classes préparatoires
aux grandes écoles scientifiques françaises.
Citons la catégorie des langages de programmation en logique et son principal représentant :
PROLOG (PROgrammation en LOGique - 1982).
Dérivé de l’intelligence
artificielle, il oblige le programmeur à penser ses actions en termes
de buts et à en faire une description relationnelle (vision déclarative).
Le langage est fondé sur un moteur d’inférence d’ordre 1
(logique des prédicats), et permet l’exploration exhaustive automatique
de différents chemins amenant à des solutions. Il possède
une qualité intéressante : il est possible d’interpréter
un programme prolog d’une manière déclarative ou d’une
manière procédurale. Le Groupe d’Intelligence Artificielle
de Marseille-Luminy fournit des prologs sur micro-ordinateurs.
1.4 Les langages orientés objets (L.O.O)
Les langages à objets : ils sont fondés sur une seule catégorie d’éléments : " les objets " qui communiquent entre eux grâce à l’envoi de messages (grâce à des opérateurs appelés méthodes). Par rapport à un langage impératif typé, un objet est l’équivalent (mutatis mutandis) d’une variable (simple ou structurée) et la classe dont il est l’instance correspond au type de la variable.
SIMULA-67 (1967) est le
premier langage objet, SMALLTALK-80(1980) est un environnement de
développement purement objet, Eiffel(1990) est un langage
objet tourné vers le génie logiciel et la réutilisabilité.
1.5 Les langages de spécification
Les langages de spécification sont encore du domaine de la recherche. Leurs objectifs sont de décrire le plus rigoureusement possible (les modèles principaux sont mathématiques) un logiciel afin de pouvoir le valider et le vérifier.
Nous ne mentionnerons ici que le langage LPG de D.Bert(Grenoble) pour les spécifications de types abstraits algébriques, Z de J.R. Abrial, le langage dont la notation est fondée sur la théorie des ensembles (puis d’une amélioration de Z dénotée B par Abrial) et VDM langage formel de spécification par pré-condition et post-condition. Ces langages ne peuvent être utilisés d’une manière pratique que sous forme de notation, bien qu’ils soient implantés sur des systèmes informatiques. Ils ne sont pas encore à la disposition du grand public comme les langages des catégories précédentes, bien que certains soient utilisés dans des sites industriels.
Par la suite, nous utiliserons
un langage de spécification pédagogique fondé sur
les types abstraits algébriques.
Plus récemment est apparu un langage comme Delphi de Borland que nous utiliserons plus tard et qui allie l’approche pédagogique et typée du Pascal, l’approche objet du C++ et les approches visuelles et événementielles de Visual Basic de Microsoft (la sortie fin 2001 de la version entièrement orientée objet de VB, dénommée VB .Net, procure à Visual Basic un statut de langage hybride). Enfin, mentionnons le langage JAVA qui permet le développement multi-plateforme en particulier pour l’intranet et qui est grandement utilisé malgré son manque de rapidité dû à sa machine virtuelle. Un mot sur le tout récent langage C# support de développement de la plateforme Microsoft .Net, qui a été inventé par le père du langage Delphi (C# s'approprie des avantages de Java et de Delphi, il suit de très près la syntaxe de Java et celle de C++)et qui est le fer de lance de la plateforme .Net de microsoft.
Object Pascal, C++, Ada95, Java, C# sont des langages procéduraux qui ont été fortement étendus ou remaniés pour se conformer aux standards objets.
Remarque de vocabulaire:
L’ordinateur ne " comprenant
" que le langage binaire, il lui faut donc un " interpréte " qui
lui traduise en binaire exécutable, les instructions que l’humain
lui fournit en langage évolué.
Cette traduction est assurée par un programme appelé compilateur. Un compilateur du langage
L est donc un programme chargé de traduire un programme " source
" écrit en L par un humain, en un programme " cible " écrit
en binaire exécutable par l’ordinateur.
|