OVH Cloud OVH Cloud

Post Mont Tremblant mailing

27 réponses
Avatar
Gabriel Dos Reis
C'est disponible en ligne depuis quelque temps

http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/#mailing2005-10

====

Comme cela se passait qu Québec, Michel Michaud nous a rendu visite et a
activement participé aux travaux. Et on a aussi discuté vin :-)

====

Le papier intitulé « Specifying C++ Concepts » a été accepté à la
conférence « Principles of Programming Languages 2006 »

http://www.cs.princeton.edu/~dpw/popl/06/acceptedpapers.htm

La version finale qui apparaîtra dans les « proceedings » est
différente de celle qui se trouve sur le site du comité. Nous comptons
la mettre en ligne dès que possible.
Les commentaires et suggestions sont toujours les bienvenus.

-- Gaby

10 réponses

1 2 3
Avatar
loic.actarus.joly
Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu (une
première fois, d'autres lectures seront nécessaires) le document "A
formalism for C++". Un point me gêne : Je ne vois pas à quoi peut
servir ce formalisme. As-tu un exemple ?

Autre question, qui m'est venue en lisant ça, et par le fait que je
découvre un peu le Java et le C# en ce moment. J'ai un peu
l'impression que dans ces langages, les interfaces remplissent assez
souvent le rôle que l'on voudrait faire remplire aux concepts en C++.
Suis-je le seul à être de cet avis ?


PS : J'ai l'impression que depuis quelque temps, mes posts
n'apparaissent pas. J'ai retenté ce massage via google. Si jamais vous
avez lu mon message précédent, merci de bien vouloir me le dire.
Avatar
Jean-Marc Bourguet
"" writes:

Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu
(une première fois, d'autres lectures seront nécessaires) le
document "A formalism for C++". Un point me gêne : Je ne vois pas à
quoi peut servir ce formalisme. As-tu un exemple ?


Parmis les utilisations possibles (je ne sais pas quelles sont celles
envisagee par Gaby et Bjarne; je n'ai pas encore lu le papier et donc
je ne sais pas si le formalisme propose convient pour ca).
- etre moins ambigu que des descriptions textuelles,
- faire de la preuve de coherence sur la norme,
- faire de la preuve sur les programmes

Autre question, qui m'est venue en lisant ça, et par le fait que je
découvre un peu le Java et le C# en ce moment. J'ai un peu
l'impression que dans ces langages, les interfaces remplissent assez
souvent le rôle que l'on voudrait faire remplire aux concepts en
C++. Suis-je le seul à être de cet avis ?


Je ne connais pas particulierement Java et pas du tout C#, mais les
deux me semblent bien lies.

Si j'ai bonne memoire (je n'ai pas beaucoup pratique SmallTalk), en
SmallTalk on utilise le dispatch dynamique avec la meme liberte qu'en
C++ on utilise des membres d'une classe qui est un parametre template:
il suffit que le membre existe. L'heritage est simplement utilise
pour recuperer de l'implementation.

En C++, on utilise aussi l'heritage comme moyen de s'assurer
statiquement que les membres sont presents. L'utilisation
d'interfaces a la Java/C# abandonne alors la reutilisation de
l'implementation pour ne garder que la validation statique de
l'interface utilisee.

Les concepts relevent du meme mecanisme: abandonner une certaine
souplesse au profit d'une verification statique plus poussee.

PS : J'ai l'impression que depuis quelque temps, mes posts
n'apparaissent pas. J'ai retenté ce massage via google. Si jamais
vous avez lu mon message précédent, merci de bien vouloir me le
dire.


Je doit avouer que ca fait longtemps que je n'ai pas vu de messages de
toi dans ce groupe.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Marc Boyer
Le 19-11-2005, écrit :
Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu (une
première fois, d'autres lectures seront nécessaires) le document "A
formalism for C++". Un point me gêne : Je ne vois pas à quoi peut
servir ce formalisme. As-tu un exemple ?


Je me demande si sans ce formalisme ils auraient pu prétendre
aussi facilement que leur notion de concept permettait de
vérifier à la compilation qu'un ensemble de contraintes
suffit à garantir la signature d'un template.
Ceci dit, je me base sur des similutudes de formes,
sur le fond, je suis pas aller regarder les détails.

Autre question, qui m'est venue en lisant ça, et par le fait que je
découvre un peu le Java et le C# en ce moment. J'ai un peu
l'impression que dans ces langages, les interfaces remplissent assez
souvent le rôle que l'on voudrait faire remplire aux concepts en C++.
Suis-je le seul à être de cet avis ?


Oui et non.
La question que tout le monde cherche à résoudre dans le
polymorphisme, c'est d'écrire un code f() qui manipule
un type T sans savoir quel sera vraiment ce type T.
En C++, on aimerait bien avoir une vérification du typage
à la compilation.

Cette notion de typage peut se faire avec l'héritage.
Quelqu'un écrit un type X, celui qui écrit le code de
f dit qu'il faut un T en paramètre, et celui qui veut
utiliser f avec une variable de type T' doit déclarer
que T' hérite de T.
Le compilateur vérifie que celui qui écrit f n'utilise
que ce qui est dans T, et que T' correspond bien à T.
Mais, pour l'exécution, il faut résoudre dynamiquement
les appels réel au code de T'.

Une limite de cette approche, c'est qu'il faut que T
existe avant f, et il faut dire que T' hérite de T,
ce qui préssupose que T' soit définit après T.

Maintenant, si je fais la fonction suivante
void accumulate(I begin, I end, T& defValue){
for( ; begin != end ; ++begin){
defValue+= *begin;
}
}
Quel est le type T ? Un truc qui admet un + depuis un *I.
J'aimerais bien pouvoir faire:
int i=0;
vector v;
uneFonctionQuiRemplitV(v);
accumulate(v);
mais je ne peux pas dire que int hérite de T ?
Et même si j'avais Integer (à la Java), comment dire
qu'il hérite de T ?

je peux m'en sortir (Java existe) en disant que
T doit être Numeric. OK, mais je ne peux plus faire
string r= "Results are:";
vector< string > v;
uneFonctionQuiRemplitDesChaines(v);
accumulate(v);


PS : J'ai l'impression que depuis quelque temps, mes posts
n'apparaissent pas. J'ai retenté ce massage via google. Si jamais vous
avez lu mon message précédent, merci de bien vouloir me le dire.


Quel message précédent ? Il parlait de quoi ?

Marc Boyer
--
Dans "Les misérables", Victor Hugo opposait émeute et insurrection.
L'émeute est le moment chaotique de destruction. L'insurrection,
au contraire, est le moment qui projette politiquement dans l'avenir
un groupe qui a conscience de lui-même et qui veut construire
quelque chose. (Pierre Rosanvallon, Libération 21/11/05)

Avatar
Marc Boyer
Le 19-11-2005, a écrit :
Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu (une
première fois, d'autres lectures seront nécessaires) le document "A
formalism for C++". Un point me gêne : Je ne vois pas à quoi peut
servir ce formalisme. As-tu un exemple ?


Difficile de répondre 'à la place de', mais en théoricien
(d'un autre domaine) j'aurais tendance à dire que la théorie,
ça ne sert à rien, jusqu'au jour où ça manque ;-)


--
Dans "Les misérables", Victor Hugo opposait émeute et insurrection.
L'émeute est le moment chaotique de destruction. L'insurrection,
au contraire, est le moment qui projette politiquement dans l'avenir
un groupe qui a conscience de lui-même et qui veut construire
quelque chose. (Pierre Rosanvallon, Libération 21/11/05)

Avatar
loic.actarus.joly

Parmis les utilisations possibles (je ne sais pas quelles sont celles
envisagee par Gaby et Bjarne; je n'ai pas encore lu le papier et donc
je ne sais pas si le formalisme propose convient pour ca).
- etre moins ambigu que des descriptions textuelles,
- faire de la preuve de coherence sur la norme,
- faire de la preuve sur les programmes


Ok, j'attend donc d'avoir eu le temps de lire le papier sur les
concepts (un rapide survol me montre qu'ils utilisent effectivement les
mêmes symboles...)

PS : J'ai l'impression que depuis quelque temps, mes posts
n'apparaissent pas. J'ai retenté ce massage via google. Si jamais
vous avez lu mon message précédent, merci de bien vouloir me le
dire.


Je doit avouer que ca fait longtemps que je n'ai pas vu de messages de
toi dans ce groupe.


Ah, alors ce n'est pas seulement que mes messages n'intéressaient
personne... Bon, je vais contacter mon fai.

--
Loïc


Avatar
Gabriel Dos Reis
"" writes:

| Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu (une
| première fois, d'autres lectures seront nécessaires) le document "A
| formalism for C++". Un point me gêne : Je ne vois pas à quoi peut
| servir ce formalisme. As-tu un exemple ?

Comme nous avons essayé de l'expliquer dans l'introduction, le
problème est que nous avons plusieurs propositions affectant le
système de type de C++. Il devient de plus en plus dur de voir que les
choses se tiennent bien sans un outil de raisonnement formel derrière.

BS et moi développons également un outil pour l'analyse statique et
transformation de programmes (guidées par la sémantique) de programmes
C++. Ces transformations, en général non triviales, sont difficiles à
faire correctement sans un support de raisonnement formel/mathématique.

| Autre question, qui m'est venue en lisant ça, et par le fait que je
| découvre un peu le Java et le C# en ce moment. J'ai un peu
| l'impression que dans ces langages, les interfaces remplissent assez
| souvent le rôle que l'on voudrait faire remplire aux concepts en C++.
| Suis-je le seul à être de cet avis ?

Je crois que la ressemblance est seulement superficielle. En générale,
les gens ont tendance à dire que les concepts ressemblent aux « type
classes » de Haskell. Mais là, également, nous avons expliqué dans les
deux papiers (ainsi qu'à POPL) la semaine dernière que la
ressemblaence est encore superficielle même si elle est forte.

-- Gaby
Avatar
Gabriel Dos Reis
Gabriel Dos Reis writes:

[...]

| Le papier intitulé « Specifying C++ Concepts » a été accepté à la
| conférence « Principles of Programming Languages 2006 »
|
| http://www.cs.princeton.edu/~dpw/popl/06/acceptedpapers.htm
|
| La version finale qui apparaîtra dans les « proceedings » est
| différente de celle qui se trouve sur le site du comité. Nous comptons
| la mettre en ligne dès que possible.
| Les commentaires et suggestions sont toujours les bienvenus.

Désolé d'avoir « disparu » du forum après avoir lancé cette
disucssion. Pour ceux que cela intéresse toujours, la version finale
du papier présentée à POPL la semaine dernière est disponible sur la
page de BS

http://www.research.att.com/~bs/papers.html

-- Gaby
Avatar
Gabriel Dos Reis
Jean-Marc Bourguet writes:

| "" writes:
|
| > Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu
| > (une première fois, d'autres lectures seront nécessaires) le
| > document "A formalism for C++". Un point me gêne : Je ne vois pas à
| > quoi peut servir ce formalisme. As-tu un exemple ?
|
| Parmis les utilisations possibles (je ne sais pas quelles sont celles
| envisagee par Gaby et Bjarne; je n'ai pas encore lu le papier et donc
| je ne sais pas si le formalisme propose convient pour ca).
| - etre moins ambigu que des descriptions textuelles,
| - faire de la preuve de coherence sur la norme,
| - faire de la preuve sur les programmes

tu as raison sur ces points. Le formalisme est motivé par la myriade
de modifications potentielles du système de type C++ et notre
framework « The Pivot » pour faire de l'analyse statique et des
transformations de programmes C++.

| > Autre question, qui m'est venue en lisant ça, et par le fait que je
| > découvre un peu le Java et le C# en ce moment. J'ai un peu
| > l'impression que dans ces langages, les interfaces remplissent assez
| > souvent le rôle que l'on voudrait faire remplire aux concepts en
| > C++. Suis-je le seul à être de cet avis ?
|
| Je ne connais pas particulierement Java et pas du tout C#, mais les
| deux me semblent bien lies.
|
| Si j'ai bonne memoire (je n'ai pas beaucoup pratique SmallTalk), en
| SmallTalk on utilise le dispatch dynamique avec la meme liberte qu'en
| C++ on utilise des membres d'une classe qui est un parametre template:
| il suffit que le membre existe. L'heritage est simplement utilise
| pour recuperer de l'implementation.
|
| En C++, on utilise aussi l'heritage comme moyen de s'assurer
| statiquement que les membres sont presents. L'utilisation
| d'interfaces a la Java/C# abandonne alors la reutilisation de
| l'implementation pour ne garder que la validation statique de
| l'interface utilisee.
|
| Les concepts relevent du meme mecanisme: abandonner une certaine
| souplesse au profit d'une verification statique plus poussee.

Note cependant que pour nous, les concepts sont des prédicats de types
et de valeurs, et donc peuvent être manipulés direcrement avec les
opérateurs logiques. De plus, on peut faire de la surcharge à base des
concepts

concept Small<typename T, int N>
where sizeof (T) < N
{ }

template<typename T> where Small<T, 256>
void f(const T&);

template<typename T> where !Small<T, 256>
void f(const T&);

-- Gaby
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Le 19-11-2005, écrit :
| > Miam, il y a l'air d'y avoir du bon. Pour l'instant, j'ai juste lu (une
| > première fois, d'autres lectures seront nécessaires) le document "A
| > formalism for C++". Un point me gêne : Je ne vois pas à quoi peut
| > servir ce formalisme. As-tu un exemple ?
|
| Je me demande si sans ce formalisme ils auraient pu prétendre
| aussi facilement que leur notion de concept permettait de
| vérifier à la compilation qu'un ensemble de contraintes
| suffit à garantir la signature d'un template.

cela serait effectivement beaucoup plus dur à avancer :-)
Nous avons appris beaucoup de choses avec ce formalisme (même
incomplet) :-)

-- Gaby
Avatar
Jean-Marc Bourguet
Gabriel Dos Reis writes:

Gabriel Dos Reis writes:

[...]

| Le papier intitulé « Specifying C++ Concepts » a été accepté à la
| conférence « Principles of Programming Languages 2006 »
|
| http://www.cs.princeton.edu/~dpw/popl/06/acceptedpapers.htm
|
| La version finale qui apparaîtra dans les « proceedings » est
| différente de celle qui se trouve sur le site du comité. Nous comptons
| la mettre en ligne dès que possible.
| Les commentaires et suggestions sont toujours les bienvenus.

Désolé d'avoir « disparu » du forum après avoir lancé cette
disucssion. Pour ceux que cela intéresse toujours, la version finale
du papier présentée à POPL la semaine dernière est disponible sur la
page de BS

http://www.research.att.com/~bs/papers.html


Les papiers sur SELL ont l'air interessant aussi.

Pas sans rapport avec ce dernier sujet, vous avez regarde SystemC?

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

1 2 3