Les Langages Informatiques Les évolutions Michel Riguidel (riguidel@enst.fr) 2

Les Langages Informatiques Les évolutions Michel Riguidel (riguidel@enst.fr) 2 Table des Matières Table des Matières 2 Segmentation Informatique 3 Autrefois 3 Maintenant 3 Informatique 3 Informatique, Ordinateur, Logiciel, Langage 3 Langage 3 Typologie des langages 4 Mathématique & Théorie des ensembles 4 Langages de programmation impératifs 4 Langage procédural 5 Langage programme orienté objet Eiffel, Java 5 Langages fonctionnels (Lisp pur, ML) et langages logiques (Prolog) 6 Diversité des langages 6 La jungle des langages 6 Taxinomie des langages 6 Évolution en fonction des évolutions du matériel, de l’Internet ? 7 Conception d’un langage 7 Puissance d’expression 7 Simplicité et orthogonalité 8 Implémentation 8 Détection d’erreurs et correction d’erreurs 9 Correction et standards 9 Développement d’un programme 10 Maîtrise du langage par le développeur 10 Productivité et Génie logiciel 10 Modèle de développement 10 Langages ou systèmes 11 Historique 11 Survol historique 11 Machines du début 13 Premiers langages scientifiques 13 Langages de traitement de données de gestion 14 Langages généraux 15 Développement interactif de programmes 15 Langages spécifiques 16 Langages de programmation systèmes 17 Modules, classes, types de données abstraites, objets 18 Langage Fonctionnel et Logique 21 Syntaxe et Sémantique 22 Syntaxe BNF 22 Sémantique 23 Structure des programmes 23 Procédures, fonctions, méthodes 24 Structures de données 24 Conclusions 25 3 Segmentation Informatique Autrefois Découpage Matériel et Logiciel : clivage traditionnel hardware-software. Logiciels Système d’exploitation avec des applications. Développement d’applications à partir d’un langage de programmation : compilateur (pas d’éditeur de texte ni d’environnement de développement, au début). Maintenant Découpage Matériel, Logiciel, Contenu (signal, donnée, information, document, connaissance) Terminal (fixe, mobile) & Réseaux. L’informatique se conçoit en réseau : apparition dans le domaine de la recherche de métacomputing (concept de grille de calcul), pervasive computing (informatique diffuse). Logiciels Système d’exploitation, Browser (Butineur asynchrone), Player (interface synchrone), Middleware (Intergiciels) et protocoles. Environnement de développement (éditeur, compilateur, bibliothèque de composants, debugger symbolique, framework, …). Informatique Informatique, Ordinateur, Logiciel, Langage Un ordinateur est un outil qui résout des problèmes au moyen de programmes ou logiciels développés dans un (ou plusieurs) langages. La taille et la complexité des logiciels ont augmenté. De manière indicative, un logiciel important possède, en moyenne, la taille suivante :  Année 70 : 10 000 lignes de code  Année 80 : 50 000 lignes de code : début des interfaces graphiques (clavier, souris, écran)  Année 90 : 100 000 lignes de code  Année 00 : 1 000 000 lignes de code : Netscape communicator, Word, Excel, … occupent 5 Mo. Langage Passage de la langue naturelle via le langage de haut niveau au langage machine. Langage : syntaxe et sémantique => Compilateur, Interpréteur, Analyseur sémantique. Syntaxe : définie en BNF (Backus-Naur Form) Sémantique : dépend du langage (définit les opérations algébriques, etc.) Un système d’exploitation gère le temps, l’espace (mémoire, disque) et les entrées-sorties. Une application va donner du sens, en transformant un contenu (des entrées) en un autre contenu (des sorties), par un calcul informatique en prenant de la place et en prenant du temps. La valeur ajoutée dépend de la force du langage et de l’intelligence de l’application. Au fil du temps se sont développées les applications interactives qui agissent en temps réel sur l’environnement ou interagissent avec l’utilisateur. Un langage informatique est un langage destiné à décrire l'ensemble des actions consécutives qu'un ordinateur doit exécuter. Un langage informatique est une manière pragmatique de donner des instructions à un ordinateur. 4 Un langage informatique est rigoureux: à une instruction correspond une action du processeur. Le langage utilisé par le processeur est le langage machine. Il s'agit d'une suite de 0 et de 1 (en hexadécimal), pas compréhensible facilement par le commun des mortels. Il est donc plus pratique de trouver un langage intermédiaire, compréhensible par l'homme, qui sera ensuite transformé en langage machine pour être exploitable par le processeur. L'assembleur est un langage proche du langage machine mais il permet déjà d'être plus compréhensible. Toutefois un tel langage dépend étroitement du type de processeur utilisé (chaque type de processeur peut avoir son propre langage machine). Ainsi un programme développé pour une machine ne pourra pas être « porté » sur un autre type de machine. Pour pouvoir l'utiliser sur une autre machine il faudra alors parfois réécrire entièrement le programme. Un langage informatique a donc plusieurs avantages:  il est plus facilement compréhensible que le langage machine  il permet une plus grande portabilité, c'est-à-dire une plus grande facilité d'adaptation sur des machines de types différents. Typologie des langages Mathématique & Théorie des ensembles En mathématique Définir des ensembles avec des éléments et des opérations et déterminer les propriétés. Démontrer des théorèmes, des propriétés. Montrer qu’un élément existe ou qu’une propriété est vraie dans le cas le plus général, sans nécessairement exhiber cet élément (voir les théorèmes d’existence). En informatique On va définir des structures de données qui ont des natures complexes, des types hétérogènes, etc. On veut obtenir un résultat : par exemple, on ne veut pas prouver qu’il existe des nombres premiers, on veut les calculer. Les langages informatiques vont être conçus pour écrire des programmes qui permettent de définir des structures de données complexes et de mettre en œuvre des calculs et algorithmes efficaces. Il existe trois grandes écoles de programmations: la programmation impérative, la programmation fonctionnelle et la programmation logique. 1) La programmation impérative est basée sur l'effet de bord, plus connue sous le nom d'affectation. Le programme se déroule en écrasant les valeurs d'une zone de mémoire par une nouvelle valeur, issue d'un calcul. Ce style de programmation garantit de bonnes performances en terme de temps d'exécution. 2) La programmation fonctionnelle est basée sur le lambda calcul. Les effets de bord y sont vus d'un mauvais oeil. On préfère utiliser le concept d'environnement. Un environnement est un ensemble dynamique de paires [nom, valeur]. Une fois qu'une paire est ajoutée à l'environnement elle ne doit (normalement) plus être modifiée. Pour changer la valeur associée à un nom, il suffit de rajouter une nouvelle paire. La paire la plus récemment définie prévaut sur les autres. Quand certaines parties de l'environnement sont devenue obsolètes, elles sont simplement supprimées de la mémoire. 3) La programmation logique est basée sur des résultats mathématiques ; ce mode de programmation est celui qui est le moins utilisé. Langages de programmation impératifs Fortran, COBOL, C, C++, Pascal, Ada et Java. Le programme se déroule en changeant la valeur des variables et les attributs des objets à l’aide d’instructions et d’assignations. L’ordinateur est une machine de von Neumann doté d’un espace géographique (la mémoire vive, les disques) qui a des positions individuelles avec des adresses. Le calcul a un début et une fin et ne prend pas une place illimitée : machine de Turing. Le calcul est déterministe : le programme donne le même résultat sur toute autre machine (Cependant attention à la précision limitée sur les nombres). 5 Il existe des entiers (-N à + N) et des flottants (rationnels qui ont une précision donnée de – R à + R). La plage dépend des ordinateurs (8 bits, 16 bits, 32 bits, 64 bits) et du langage. On définit des variables qui ont des valeurs données. Ne pas confondre  Le nom de la variable (exemple : valeur-du-compteur)  La référence où elle est stockée (son adresse), (exemple : adresse mémoire case 456739087)  La valeur stockée : 110 Les algorithmes contiennent des boucles (répétitions, itérations) et des branchements (if then else) qui travaillent sur des variables, tableaux, fichiers. Langage procédural Le langage C et le langage Pascal sont deux exemples de langages procéduraux. De tels langages permettent de baser l'écriture du programme sur l'algorithmique : méthode qui permet de transformer une donnée initiale en une donnée finale permettant l'achèvement du processus de calcul. On raisonne donc sur le processus de calcul dans sa totalité, et l'on définit donc une succession d'appel de procédures ou de fonctions. Un langage procédural est organisé et centré autour de la définition de procédure : séquence définie de traitements, d’algorithmes. Fortran, Pascal, C++ sont des langages impératifs qui utilisent une séquence d’instructions pour exécuter les opérations désirées. Une instruction est une commande pour effectuer une opération qui change l’état. Les états sont les endroits de stockage et leurs valeurs associées. Le langage procédural a évolué par extension au cours du temps en incorporant des caractères orientés objets. C devient C++, Ada 83 devient ADA 95, Pascal devient Object Pascal puis Delphi, Cobol orienté objet devient OOCOBOL, Basic devient Visual Basic. Langage programme orienté objet Eiffel, Java On ne cherche plus à définir un processus de calcul, mais l'on tente plutôt de définir les différentes entités (les objets) entrant en jeu dans la résolution du problème. A partir de cette analyse, il ne reste alors plus qu'à déterminer quels vont être les différents mécanismes de communication qui vont lier ces objets et les faire évoluer (ce qui, globalement, va faire évoluer le système). Ces mécanismes de communication sont toujours rattachés à une donnée (un objet). Le langage Java ou encore le uploads/Industriel/ www-cours-gratuit-com-coursinformatique3018.pdf

  • 36
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager