Introduction (1)
●Les langages
– Cette partie présente des notions importantes sur les langages de programmation
●On détaillera les différentes familles de langages
●On classera les langages suivant leurs paradigmes
●Des exemples seront donnés dans ces différentes langages Cobol
Introduction (2)
●La compilation
– Nous présenterons également les principes de base de la compilation
●Les différentes tâches réalisées par un compilateur
– Les analyses lexicales, syntaxiques et sémantiques
– La génération de code
●Les différences entre la compilation et l’interprétation
– Un exemple très simple de compilation sera également présenté Cobol
Introduction (3)
●Limites
– Ces deux thèmes que sont les langages et la compilation pourraient faire l’objet de deux cours séparé et conséquent
– Cette exposé se limitera donc à vous faire sentirles différentes étapes importantes
– J’ai volontairement laissé de coté l’aspect formel sous-jacent aux théories de la compilation. Pour plus d’explication, reportez-vous aux livres de références !
Références
●D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen, Modern Compiler Design, John Wiley & Sons, England, 2000
– Paru en français sous le titre Compilateur aux éditions Dunod, Paris, 2002
●A. Aho, R. Sethi, M. S. Lam, J. Ullman, Compilers : principales, techniques and tools,
– Paru en français sous le titre: Compilateurs : principes, techniques et outils, 2 aux éditions Pearson Education, 2007
Exercice Introductif
Exercice introductif (1)
●Nous allons réaliser un interpréteur capable d’analyser une expression mathématique simple et parenthesée.
– Exemple:
● (3+(4*5))*2
●Le système doit donner 46 comme réponse
– Simplification:
●Seul des opérateurs binaires seront utilisés
●Uniquement sur des entiers d’1 chiffre
●Les parenthèses groupent un seul opérateur
– pas de (3+4+5) mais ((3+4)+5)
●Les parenthèses au début et à la fin sont présentes. -> pas (3+4)+5 mais ((3+4)+5)
Exercice introductif (2)
●Intérêt
– Exercice relativement simple
●Peut être fait à la main ! Ce qui n’est pas le cas des compilateurs de langage pour lesquels il faut souvent utiliser des outils spécifiques.
– Permet de comprendre certaines étapes d’un compilateur / interpréteur
– Cet exemple sera repris par la suite pour être analysé et commenté
●Au fur et à mesure que les différents points de théorie seront abordés
Exercice introductif (3)
●Ecrivez, en C, le programme permettant de réaliser cette analyse.
– Réfléchissez bien au problème.
●L’utilisation de piles (opérateur et chiffres) simplifient grandement la résolution !
– Forme d’une expression entre parenthèse:
●(val1 operateur val2)
●val1 et val2 peuvent être d’autres expressions parenthésées
– ((3+5) * (6+4))
– ((3+(4*5))*2)
Les Langages
Introduction (1)
●Les paradigmes de programmation
– « est un style fondamental de programmation informatique qui traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de programmation ». (Wikipedia)
– On distingue différents paradigmes:
●Programmation impérative
●Programmation orientée-objet
●Programmation fonctionnelle
●Programmation déclarative
●Programmation logique
Introduction (2)
– Les langages de programmations sont répertoriés en fonction de ces paradigmes
Introduction (3)
– Particularités
●Tous les langages d’une même famille peuvent résoudre les mêmes types de problème
– Les langages Cobol, C, BASIC, … permettent donc de résoudre les mêmes familles de problèmes.
●Ces langages sont alors équivalents
– Pas vraiment de langage « meilleur » par rapport à un autre.
– Le choix dépendra d’abord du programmeur
– Certaines particularités propres à un langage peuvent également déterminer le choix.
●Gestion des fichiers en Cobol
●Précision scientifique de Fortran
●Récursivité, pointeur du C
….