La coloration pour l’implémentation des langages objets à typage statique
L’implémentation des langages à objets n’a toujours pas vu de solution simple et effi-
cace en cas d’héritage multiple et de compilation séparée. En particulier, les implémentations
existantes, celle de C++ par exemple, ont un surcoût important même en cas d’héritage simple.
Parmi les nombreuses techniques alternatives qui ont été proposées, la coloration de sélecteurs
a été écartée, car les premières expérimentations ont été décevantes et que l’approche
paraissait implicitement incompatible avec une compilation séparée. Nous proposons, dans cet
article, une utilisation du principe de la coloration qui offre une efficacité supérieure, sur tous
les points, à celle de l’implémentation standard de l’héritage multiple et qui, en cas d’héritage
simple, donne exactement l’implémentation standard. La technique est compatible avec
une compilation séparée, au prix d’une phase de pré-édition de liens, qui calcule la coloration
proprement dite.
Implementing object-oriented programming languages remains difficult in case of
multiple inheritance and separate compilation. Existing implementations, e.g. C++, have a
considerable overhead, even in case of single inheritance. Among the various approaches proposed
as alternatives, selector coloring has been rejected due to negative experiments and supposed
incompatibility with separate compilation. In this paper, we propose to use coloring to
solve all the problems of the standard multiple inheritance implementation, in the context of
static typing and separate compilation. We show that, in case of single inheritance, coloring
gives the same implementation as standard single inheritance implementation, and that coloring
is always better, on all points, than standard multiple inheritance implementation. Moreover,
coloring can be done at link-time.
R.DUCOURNAU
langage à objets, implémentation, compilation séparée, édition de liens, envoi de message, coloration de sélecteurs, vérification de type.
object-oriented languages, implementation, separate compilation, late binding, method dispatch, selector coloring, type inclusion test.
Français
|