* Ces horaires sont donnés à titre indicatif.
Le but de ce module est d'introduire la question de la généricité et de la méta-programmation dans le développement logiciel de librairies
). Les librairies génériques doivent permettre la mise en place d'applications efficaces et robustes, dans des domaines multiples et variés.Pour mettre en œuvre de telles librairies, le langage C++ offre un certain nombre d'outils comme l’identification dynamique de type mais aussi les templates, dont le mécanisme statique sera expliqué en détail. Ce cours
Le C++ s’accompagne notamment d’une bibliothèque standard, la Standard Template Library (STL) qui offre un certain nombre de patrons (classes conteneurs, algorithmes, itérateurs) correspondant aux structures de données et aux algorithmes classiquement utilisés en Informatique. Nous rappellerons comment une telle librairie peut être utilisée, mais aussi comment mettre en place des librairies s'appuyant sur le même paradigme de programmation générique. En particulier, nous ferons référence au projet Boost qui correspond à un référentiel pour les évolutions futures du langage C++ et de ses normalisations.
Par ailleurs, le langage JAVA est le second langage à objets majoritairement utilisé par l’industrie, et ce cours reviendra sur les différences fondamentales de ce langage avec C++, avec toutes les conséquences en terme de philosophie de conception et style de programmation. Malgré leurs ressemblances superficielles, les programmes obtenus avec ces deux langages peuvent en effet avoir des comportements complètements différents.