SCOOL: Programmation générique

From LRDE

Revision as of 17:08, 9 January 2018 by Bot (talk | contribs) (Created page with "{{CSIReportFR | authors = Maxime van Noppen | year = 2008 | titre = SCOOL: Programmation générique | resume = Le Cxx est un langage puissant pour écrire des bibliothèques ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Résumé

Le Cxx est un langage puissant pour écrire des bibliothèques génériques et performantes. Cependantdans certains domaines l'utilisation de l'orienté objet usuel peut poser des problèmes de performances, comme dans celui des bibliothèques de calcul scientifique dans lesquelles de grands ensembles de données parcourus par des algorithmes génériques. La solution proposée est la combinaison de la programmation orientée objet classique et de la programmation statique qui est en fait de la meta-programmation utilisant intensivement les templates du Cxx. Ceci a l'avantage de remplacer le coût à l'éxecution de l'orienté objet dû à la résolution des méthodes virtuelles par un coût `a la compilation. Cependant, cela engendre souvent du code verbeux, difficile à écrire et à maintenir. Malgré sa puissance, le Cxx ne possède pas d'abstractions statiques de haut niveau ce qui encombre la sémantique du code avec des détails d'implémentation. Nous vous présentons Scool, un langage statique fusionnant l'orienté objet et la programmation générique dans le but d'éxploiter toute la puissance du Cxx statique grâce à une syntaxe plus expressive. De plus, toutes les résolutions de méthodes se feront statiquement grâce au fait que le type exact (dynamique) de chaque objet est connu à la compilation. Le but de Scool étant d'apporter toute la puissance de l'orienté objet statique au Cxx, il ne sera pas directement compilé mais traduit en Cxx correctement formaté. Le développement du traducteur a soulevé les problèmes classiques du domaine des DSL comme la stratégie de parcours de l'arbre de syntaxe. Nous proposons une solution originale basée sur la plateforme de transformation de programme Stratego/XT avec des applications à Milena, la bibliothèque générique et performante de traitement d'image de la plateforme Olena.