Langages et traducteurs ST212LT
| Credits ECTS | 8 |
|---|---|
| Langues | -Français et Anglais |
| Responsable | Rémi Douence |
| Temps a l'emploi du temps | 90 |
| Temps travail personnel | 45 |
Contexte
En tronc commun, les élèves ont acquis un premier aperçu de ce qu’était un langage de programmation au travers de l’utilisation d’un sous-ensemble d’un langage de programmation spécifique Java. Ce premier aperçu n’a toutefois considéré le développement (conception et implémentation) que d’une classe restreinte d’applications, à savoir des applications séquentielles, alors qu’aujourd’hui de plus en plus d’applications sont concurrentes et distribuées. Le développement de telles applications est plus ardu et nécessite de faire appel à de nouveaux concepts et techniques. De plus, rien n’a été dit de la fabrication et du fonctionnement d’un langage de programmation. Or de nos jours, les systèmes informatiques sont construits à l’aide de nombreux langages (Java, XML, HTML, PHP…) et les applications sont souvent délivrées à l’utilisateur final sous la forme d’un langage dédié aux besoins de celui-ci. Une compréhension plus fine des langages de programmation est nécessaire pour comprendre ces systèmes et en fabriquer de nouveaux.Objectifs
Objectifs généraux
A l’issue de cette UV, l’élève aura développé une meilleure connaissance des langages de programmation. Cette connaissance lui permettra de maîtriser plus facilement tout nouveau langage, d’émettre des avis mieux informés dans le cadre de choix de langages, de reconnaître les situations où la fabrication d’un langage dédié est pertinente et d’en mettre en œuvre la fabrication,. Ce cours lui permettra aussi de développer ultérieurement une compréhension fine de la structure et du fonctionnement des systèmes informatiques du monde internet, fabriqués à tous les niveaux (en particulier, des problèmes de concurrence et de distribution, des intergiciels au traitement des documents) à partir de différentes étapes de traductions d’un langage à un autre., et, grâce à cette compréhension, de ne pas être débordé par la complexité de ces systèmes.Il comprendra les difficultés du développement des applications concurrentes et distribuées et la nécessité de faire appel à des techniques de modélisation et de preuve pour réduire les risques inhérents à des applications défaillantes.
Il aura finalement approfondi sa connaissance de Java, découvert les potentiels de la technologie XML, et été exposé à un certain nombre de concepts et algorithmes de portée très large en informatique (grammaire, automates, trace, propriétés de sûreté et de vivacité, algorithmes de point fixe…).
Objectifs operationnels
- utiliser des outils de manipulation de langages à balises (e.g., XML)- mettre en oeuvre un interprète / compilateur
- programmer des applications concurrentes
Competences requises
Compétences requises
- programmation en JavaUVs cibles
GSI - MiddlewareGSI - Architectures logicielles
GSI - Projet
Contenu et organisation pedagogique
Contenu de l'UV
Compilation : syntaxe et sémantique, compilation et interprétation, analyse et synthèse, expressions régulières et grammaires, analyse lexicale, syntaxique et sémantique, arbres de syntaxe abstraits, utilisation de générateurs d’analyseurs lexicaux et syntaxiques, grammaires à attributs, typage.XML : langages de balises, les ancêtres SGML et HTML, description de XML, utilisation pour la description de documents et la transmission de données ; positionnement de XML et internet, grammaires de balises DTD et schémas XML, relations avec le modèle relationnel et le modèle des objets,. Introduction à XSLT, un langage de transformation et d’édition.
Systèmes concurrents et répartis : processus légers et concurrence, modélisation et implémentation, gestion des problèmes d'interférence (exclusion mutuelle, moniteurs et synchronisation sur une condition), gestion des problèmes d'étreinte mortelle, propriétés de cohérence des données et de vivacité, le point sur une méthodologie de développement maîtrisée : le développement dirigé par les modèles, les objets distribués en Java et l'invocation de méthodes distantes.