|
CONCEPTS DES LANGAGES ET TECHNIQUES DE PROGRAMMATION
28,5h C/ 15h TD / 2 EE / 3 crédits ECTS / SI_CLT
Yolaine Bourda, Dominique Marcadet, Sylvain Peyronnet, Franck Capello
Il s'agit de présenter les différents styles de langages de programmation et leurs domaines d'application et de préciser les concepts sous-jacents.
Présentation Programmation fonctionnelle, impérative, déclarative (rappels). Programmation par objets, par aspects, par composants. Histoire des langages de programmation. Concepts de base Données : typage, conversions, pointeurs, allocation, ramasse-miettes, durée de vie, déclaration et définition, constante, tableaux, généricité. Identificateurs : portée, espace de noms, références. Fonctions : définition, passage d'arguments, retour de valeur, surcharge, valeurs par défaut. Opérateurs : arité, priorité, associativité, ordre d'évaluation, affectation, égalité, surcharge. Exceptions. Entrées/sorties. Approche objet Définition de classes, protection, héritage, polymorphisme. Construction, destruction, affectation. Variables et méthodes de classe, autres membres. Classes abstraites. Identification dynamique de type, introspection. Techniques de programmation Idiomes : poignée, lettre/enveloppe, héritage dynamique, double dispatch. Généricité : conteneurs, algorithmes, objets fonctions, expressions génériques, méta-programmation. Langages de programmation (en) logique et par contraintes. Syntaxe du langage Prolog : faits et règles. Unification. Stratégie de Prolog. Quelques prédicats prédéfinis. Les opérateurs. Traitement des grammaires. Autres applications. Solveurs de contraintes. Applications de la programmation par contraintes. Programmation parallèle et algorithmes pour le parallélisme et pour les systèmes distribués Langages parallèles : langages concurrents, langages distribués. Calcul sur grille : architectures et applications de grid computing, déploiement de données massives, distribution des calculs massifs. Algorithmes de gestion de la distribution. Réseaux et routage. Élection. Algorithmes à vagues. Algorithmes de terminaison. Algorithmique utilisant la distribution. Classements sur architectures spécialisées. Algorithmes sur les graphes.
Bibliographie
Le Langage C++ 4ème Édition, Bjarne Stroustrup, Campus Press, 2003, ISBN : 2-7440-7003-3. Modern C++ Design: Generic Programming and Design Patterns Applied, Andrei Alexandrescu, Addison Wesley, 2001, ISBN : 0-201-70431-5. C++ Templates: The Complete Guide, David Vandervoorde & Nicolai M. Josuttis, Addison Wesley, 2002, ISBN : 0-201-73484-2.
|