Présentation du cours
 

 

La compilation couvre l'ensemble des techniques qui permettent de transformer un programme source en un programme objet.

Autrefois, la compilation d’un programme était un mystère, aujourd'hui c'est la science la plus maîtrisée en informatique. Un cours de compilation n'est complet que si l'on traite tous les concepts définis dans tous les langages de programmation aussi bien dans ceux procéduraux que dans ceux non procéduraux. Pour fixer les idées, le cours ne traite que les langages procéduraux et ne traite que les concepts classiques les plus généraux des langages de programmation tels que la sémantique des expressions, la sémantique des déclarations et des appels de procédures et fonctions, les structures de contrôle, la portée des variables, etc.

Comprendre la philosophie d'écriture d'un compilateur pour un simple langage ouvrira sans doute les perspectives pour affronter les notions les plus complexes de compilation. Tel est l’objectif de ce cours.

Ce cours montre bien sûr les différentes phases de compilation d'un programme en insistant sur le coté pratique. Il utilise les éléments nécessaires et fondamentaux de la théorie des langages. En Bref, le cour a pour objectif de dévoiler le fonctionnement interne des compilateurs. Deux aspects sont développés dans ce cours :   un cours théorique et un cours spécifique

Cours théorique

Le cours théorique se veut moderne dans la mesure où il prend comme langage de travail un mini langage de C# (C sharp), un langage prometteur de la plate forme DotNet de Microsoft.

Le cours théorique se veut moderne  dans la mesure où il donne une conception orientée objet d'un compilateur.

Le cours théorique se veut moderne  dans la mesure où il va droit au but à savoir montrer explicitement et clairement comment sont implémentées les différents phases de compilation.

Le cours théorique se veut moderne  dans la mesure où il montre comment utiliser les outils de DotNet pour produire - dans la phase sémantique et génération de code- du code CIL (Common Intermediate Language) directement exécuté par la machine CLR (Common Language Runtime) de DotNet       

Bien que ce cours théorique est en fin de compte pratique, nous l’avons nommé ainsi, car dans le cadre de notre cours nous avons opté pour la réalisation d’un compilateur pour le langage Z pour les raisons suivantes :

Z est un langage pédagogique simple couvrant les notions de base de compilation

Existence d’un logiciel pédagogique pour expérimenter Z

Existence d’un logiciel pédagogique dévoilant le fonctionnement interne du compilateur pour le langage Z.

Existence du source du compilateur Z

Cours spécifique

Un cours spécifique est fait donc en parallèle avec le cours théorique. L'objectif de ce cours spécifique est de montrer comment on peut développer un compilateur partant d'un langage minimal très réduit et en l'étoffant progressivement jusqu'à l'obtention d'un compilateur pour le langage complet.

La compréhension et la réalisation pratique du compilateur est grandement facilitée par l'utilisation du logiciel pédagogique     "COMPIL Z" qui montre le fonctionnement interne du compilateur Z.

 

Pr. D.E ZEGOUR