Skip to topic | Skip to bottom
Home
Publications
Publications.200901-Seminar-VanNoppenr1.1 - 20 Jan 2009 - 16:15 - MaximeVanNoppentopic end

Start of topic | Skip to actions
Maxime van Noppen, Roland Levillain, Akim Demaille. Introducing SCOOL. CSI Seminar van-noppen.09.dslwc January 2009

English:

C++ has proved to be a powerful language to write generic and efficient libraries. However using classical Object Oriented C++ does not suffice to reach the levels of efficiency required in domains where large data sets have to be processed through generic algorithms, e.g., scientific libraries.

A solution consists in combining the power of Object Oriented Programming and static programming --- which is in fact meta-code expressed thanks to C++ template constructs. This has the advantage of replacing the OO run-time overhead (due to virtual method dispatch) by compile-time computations. However, such an approach relies on code that is verbose, hard to write and to maintain. Though powerful, C++ lacks high-level static features, and thus clutters the semantics of static constructs with unrelated code.

We present SCOOL, a ``static'' language mixing OO and Generic Programming, created to take advantage of all the power of static C++ thanks to a more expressive syntax and high-level constructs, without the drawbacks of plain C++.

As a full-fledged static OOP language, SCOOL provides polymorphic methods (i.e., inclusion polymorphism), with the notable difference that every polymorphic call is statically-resolved: the design of SCOOL is based on the property that the exact (dynamic) type of every object is known at compile-time.

As the aim of SCOOL is to bring all the power of static OOP to C++, it is not directly compiled but translated into human-readable C++. The development of the translator raised classical problems found in Domain Specific Languages like traversal strategies of the abstract syntax tree. We propose an original solution based on the Stratego/XT program transformation framework, in the context of Milena, a generic and efficient C++ library from the Olena image processing platform.

French:

Le C++ est un langage puissant pour écrire des bibliothèques génériques et performantes. Cependant, dans 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 C++. Ceci a l'avantage de remplacer le coût à l'execution de l'orienté objet dû à la résolution des méthodes virtuelles par un coût à la compilation. Cependant, cela engendre souvent du code verbeux, difficile à écrire et à maintenir. Malgré sa puissance, le C++ 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'exploiter toute la puissance du C++ 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 C++, il ne sera pas directement compilé mais traduit en C++ 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énrique et performante de traitement d'image de la plateforme Olena.


to top

PublicationForm
Logo:
Category:  
Title: Introducing SCOOL
Authors: Maxime van Noppen, Roland Levillain, Akim Demaille
Type: StudentReport
Whereprefix:  
Where: CSI Seminar
Ref: van-noppen.09.dslwc
Place:  
Date: January 2009
Note:  
Lang: english
Keywords:  
Status: submitted


You are here: Publications > 200901-Seminar-VanNoppen

to top

Copyright © 1999-2010 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback