Il me semble que l'expression suivante est autorisée (même si elle a
un comportement indéfini) :
int x= x+1;
Y a-t-il une raison pour laquelle les auteurs de la norme n'ont pas
purement et simplement interdit cette écriture ? Accessoirement, y
a-t-il des cas (pas trop tordus) où elle peut être utile ?
Très joli lapsus. Le clavier a ses raisons, que la raison freudienne ignore...
Matthieu Moy
Gabriel Dos Reis writes:
Si tu penses qu'elle est fausse parce que c'est un langage jouet c'est bien aussi
Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école d'ingé _est_ un langage jouet. Je le mentionnais pour souligner la facilité de faire un compilateur qui implémente cette règle, mais tu n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
-- Matthieu
Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
Si tu penses qu'elle est fausse parce que c'est un langage jouet
c'est bien aussi
Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école
d'ingé _est_ un langage jouet. Je le mentionnais pour souligner la
facilité de faire un compilateur qui implémente cette règle, mais tu
n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
Si tu penses qu'elle est fausse parce que c'est un langage jouet c'est bien aussi
Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école d'ingé _est_ un langage jouet. Je le mentionnais pour souligner la facilité de faire un compilateur qui implémente cette règle, mais tu n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
-- Matthieu
Gabriel Dos Reis
Matthieu Moy writes:
| Gabriel Dos Reis writes: | | > Si tu penses qu'elle est fausse parce que c'est un langage jouet | > c'est bien aussi | | Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école | d'ingé _est_ un langage jouet.
Je doute que tu aies compris le problème en question et ma remarque.
| Je le mentionnais pour souligner la | facilité de faire un compilateur qui implémente cette règle, mais tu ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
Merci de confirmer que tu n'as cherché à comprendre la remarque.
| Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
|
| > Si tu penses qu'elle est fausse parce que c'est un langage jouet
| > c'est bien aussi
|
| Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école
| d'ingé _est_ un langage jouet.
Je doute que tu aies compris le problème en question et ma remarque.
| Je le mentionnais pour souligner la
| facilité de faire un compilateur qui implémente cette règle, mais tu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
Merci de confirmer que tu n'as cherché à comprendre la remarque.
| Gabriel Dos Reis writes: | | > Si tu penses qu'elle est fausse parce que c'est un langage jouet | > c'est bien aussi | | Tu te doutes qu'un compilo fait en un mois en projet de 2A d'école | d'ingé _est_ un langage jouet.
Je doute que tu aies compris le problème en question et ma remarque.
| Je le mentionnais pour souligner la | facilité de faire un compilateur qui implémente cette règle, mais tu ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | n'as pas l'air d'avoir cherché à comprendre ce que je voulais dire.
Merci de confirmer que tu n'as cherché à comprendre la remarque.
-- Gaby
Matthieu Moy
Gabriel Dos Reis writes:
Pourquoi ne leur demandes-tu pas ?
Peut-être parce que je sais comment ils font.
Tu as l'air d'affirmer que c'est indispensable de pouvoir faire référence à un objet pendant sa déclaration (en tout cas, un langage qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple que tu donnes est un exemple qui s'implémente très bien dans les langages en questions.
Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de punch, un message aussi peu insultant.
-- Matthieu
Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
Pourquoi ne leur demandes-tu pas ?
Peut-être parce que je sais comment ils font.
Tu as l'air d'affirmer que c'est indispensable de pouvoir faire
référence à un objet pendant sa déclaration (en tout cas, un langage
qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple
que tu donnes est un exemple qui s'implémente très bien dans les
langages en questions.
Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni
d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de
punch, un message aussi peu insultant.
Tu as l'air d'affirmer que c'est indispensable de pouvoir faire référence à un objet pendant sa déclaration (en tout cas, un langage qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple que tu donnes est un exemple qui s'implémente très bien dans les langages en questions.
Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de punch, un message aussi peu insultant.
-- Matthieu
Matthieu Moy
Gabriel Dos Reis writes:
Merci de confirmer que tu n'as cherché à comprendre la remarque.
En effet, je n'ai toujours pas compris pourquoi tu avais supposé que le langage dont je parlais (mini-pascal pour les intimes) était largement utilisé dans la programmation système.
En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis pas arrivé), j'avais cru sentir un brin d'ironie dans cette supposition, j'ai du me tromper.
Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet au C++, qui est bien connu pour être très utilisé dans la programmation système (cf. les dires de Mr Torvalds à ce sujet par exemple).
-- Matthieu
Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
Merci de confirmer que tu n'as cherché à comprendre la remarque.
En effet, je n'ai toujours pas compris pourquoi tu avais supposé que
le langage dont je parlais (mini-pascal pour les intimes) était
largement utilisé dans la programmation système.
En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis
pas arrivé), j'avais cru sentir un brin d'ironie dans cette
supposition, j'ai du me tromper.
Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet
au C++, qui est bien connu pour être très utilisé dans la
programmation système (cf. les dires de Mr Torvalds à ce sujet par
exemple).
Merci de confirmer que tu n'as cherché à comprendre la remarque.
En effet, je n'ai toujours pas compris pourquoi tu avais supposé que le langage dont je parlais (mini-pascal pour les intimes) était largement utilisé dans la programmation système.
En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis pas arrivé), j'avais cru sentir un brin d'ironie dans cette supposition, j'ai du me tromper.
Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet au C++, qui est bien connu pour être très utilisé dans la programmation système (cf. les dires de Mr Torvalds à ce sujet par exemple).
-- Matthieu
Gabriel Dos Reis
Matthieu Moy writes:
| Gabriel Dos Reis writes: | | > Merci de confirmer que tu n'as cherché à comprendre la remarque. | | En effet, je n'ai toujours pas compris pourquoi tu avais supposé que | le langage dont je parlais (mini-pascal pour les intimes) était | largement utilisé dans la programmation système.
Parce que je pensais que tu voulais qu'on prenne ta remarque au sérieux. Je n'avais pas compris que tu voulais juste parler.
| En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis | pas arrivé), j'avais cru sentir un brin d'ironie dans cette | supposition, j'ai du me tromper.
Je ne dirais pas ironie, peut-être un brin de sarcasme mais pas trop.
| Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet | au C++,
| Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
|
| > Merci de confirmer que tu n'as cherché à comprendre la remarque.
|
| En effet, je n'ai toujours pas compris pourquoi tu avais supposé que
| le langage dont je parlais (mini-pascal pour les intimes) était
| largement utilisé dans la programmation système.
Parce que je pensais que tu voulais qu'on prenne ta remarque au
sérieux. Je n'avais pas compris que tu voulais juste parler.
| En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis
| pas arrivé), j'avais cru sentir un brin d'ironie dans cette
| supposition, j'ai du me tromper.
Je ne dirais pas ironie, peut-être un brin de sarcasme mais pas trop.
| Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet
| au C++,
| Gabriel Dos Reis writes: | | > Merci de confirmer que tu n'as cherché à comprendre la remarque. | | En effet, je n'ai toujours pas compris pourquoi tu avais supposé que | le langage dont je parlais (mini-pascal pour les intimes) était | largement utilisé dans la programmation système.
Parce que je pensais que tu voulais qu'on prenne ta remarque au sérieux. Je n'avais pas compris que tu voulais juste parler.
| En cherchant à comprendre (car j'ai bien cherché, même si je n'y suis | pas arrivé), j'avais cru sentir un brin d'ironie dans cette | supposition, j'ai du me tromper.
Je ne dirais pas ironie, peut-être un brin de sarcasme mais pas trop.
| Un instant, j'ai même cru que tu cherchais à opposer mon langage jouet | au C++,
Là tu t'es trompé.
-- Gaby
Gabriel Dos Reis
Matthieu Moy writes:
| Gabriel Dos Reis writes: | | > Pourquoi ne leur demandes-tu pas ? | | Peut-être parce que je sais comment ils font. | | Tu as l'air d'affirmer que c'est indispensable de pouvoir faire | référence à un objet pendant sa déclaration (en tout cas, un langage | qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple | que tu donnes est un exemple qui s'implémente très bien dans les | langages en questions.
J'ai montré un exemple où c'est utile pour les constructeurs. Maintenant, je t'invite à méditer sur la sémantique de constructeur.
| Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni | d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de | punch, un message aussi peu insultant.
C'est parce que je suis occupé à faire autre chose en ce moment. Mais, je le note pour la prochaine fois.
| Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
|
| > Pourquoi ne leur demandes-tu pas ?
|
| Peut-être parce que je sais comment ils font.
|
| Tu as l'air d'affirmer que c'est indispensable de pouvoir faire
| référence à un objet pendant sa déclaration (en tout cas, un langage
| qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple
| que tu donnes est un exemple qui s'implémente très bien dans les
| langages en questions.
J'ai montré un exemple où c'est utile pour les
constructeurs. Maintenant, je t'invite à méditer sur la sémantique de
constructeur.
| Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni
| d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de
| punch, un message aussi peu insultant.
C'est parce que je suis occupé à faire autre chose en ce moment. Mais,
je le note pour la prochaine fois.
| Gabriel Dos Reis writes: | | > Pourquoi ne leur demandes-tu pas ? | | Peut-être parce que je sais comment ils font. | | Tu as l'air d'affirmer que c'est indispensable de pouvoir faire | référence à un objet pendant sa déclaration (en tout cas, un langage | qui ne le permet pas ne t'intéresse pas). Pour l'instant, l'exemple | que tu donnes est un exemple qui s'implémente très bien dans les | langages en questions.
J'ai montré un exemple où c'est utile pour les constructeurs. Maintenant, je t'invite à méditer sur la sémantique de constructeur.
| Sinon, tu as oublié un truc dans ton message, tu ne m'es traité ni | d'ignorant ni de naïf. Venant de toi, je trouve que ça manque de | punch, un message aussi peu insultant.
C'est parce que je suis occupé à faire autre chose en ce moment. Mais, je le note pour la prochaine fois.
-- Gaby
Matthieu Moy
Gabriel Dos Reis writes:
Parce que je pensais que tu voulais qu'on prenne ta remarque au sérieux. Je n'avais pas compris que tu voulais juste parler.
Tu as vraiment lu la phrase que tu as souligné deux posts plus hauts ? Non, parce que c'est là que j'expliquais la raison de ma remarque. Et non, je ne voulais pas juste parler, je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
-- Matthieu
Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
Parce que je pensais que tu voulais qu'on prenne ta remarque au
sérieux. Je n'avais pas compris que tu voulais juste parler.
Tu as vraiment lu la phrase que tu as souligné deux posts plus hauts ?
Non, parce que c'est là que j'expliquais la raison de ma remarque. Et
non, je ne voulais pas juste parler, je voulais _vraiment_ signifier
que c'était facile d'implémenter cette règle.
Parce que je pensais que tu voulais qu'on prenne ta remarque au sérieux. Je n'avais pas compris que tu voulais juste parler.
Tu as vraiment lu la phrase que tu as souligné deux posts plus hauts ? Non, parce que c'est là que j'expliquais la raison de ma remarque. Et non, je ne voulais pas juste parler, je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
-- Matthieu
Fabien LE LEZ
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy :
je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est effectivement facile d'implémenter cette règle dans un langage simple, mais pas forcément dans un langage aussi riche, complexe et tordu que C++.
Valà valà.
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy
<MatthieuNOSPAM.Moy@imag.fr.invalid>:
je voulais _vraiment_ signifier
que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est
effectivement facile d'implémenter cette règle dans un langage simple,
mais pas forcément dans un langage aussi riche, complexe et tordu que
C++.
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy :
je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est effectivement facile d'implémenter cette règle dans un langage simple, mais pas forcément dans un langage aussi riche, complexe et tordu que C++.
Valà valà.
Matthieu Moy
Fabien LE LEZ writes:
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy :
je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est effectivement facile d'implémenter cette règle dans un langage simple, mais pas forcément dans un langage aussi riche, complexe et tordu que C++.
Non, c'est aussi simple à implémenter. Par contre, Gabriel donnait des exemples de trucs qu'on peut légitimement vouloir faire en C++ et qui seraient interdit par cette règle.
En fait, ce n'est pas « il y a une règle qui interdit ça » ou « il n'y en a pas », c'est « il y a une règle qui dit à partir de quand la déclaration est utilisable », de toutes façons, et cette règle peut soit dire « tout de suite, et la variable est utilisable dans l'initialisation », ou dire « à la fin de la déclaration ». Il n'y a pas un cas réellement plus simple que l'autre, ni dans la spec, ni dans l'implémentation.
Jusqu'ici, je n'ai pas trouvé de cas (y compris dans ces exemples) ou cette interdiction soit vraiment problématique. Les concepteurs de langages comme Java ou Ada (je me suis peut-être avancé sur Pascal, je n'ai que de vieux souvenirs et pas de compilos sous la main) sont d'accord avec moi. Bon, la philosophie du C++ (et du C) étant d'autoriser tout ce qui a une chance même minime d'être utilisé, même si c'est casse gueule dans 95% des autres cas, les gens ont préféré la version la plus permissive de la règle.
-- Matthieu
Fabien LE LEZ <gramster@gramster.com> writes:
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy
<MatthieuNOSPAM.Moy@imag.fr.invalid>:
je voulais _vraiment_ signifier
que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est
effectivement facile d'implémenter cette règle dans un langage simple,
mais pas forcément dans un langage aussi riche, complexe et tordu que
C++.
Non, c'est aussi simple à implémenter. Par contre, Gabriel donnait
des exemples de trucs qu'on peut légitimement vouloir faire en C++ et
qui seraient interdit par cette règle.
En fait, ce n'est pas « il y a une règle qui interdit ça » ou « il n'y
en a pas », c'est « il y a une règle qui dit à partir de quand la
déclaration est utilisable », de toutes façons, et cette règle peut
soit dire « tout de suite, et la variable est utilisable dans
l'initialisation », ou dire « à la fin de la déclaration ». Il n'y a
pas un cas réellement plus simple que l'autre, ni dans la spec, ni
dans l'implémentation.
Jusqu'ici, je n'ai pas trouvé de cas (y compris dans ces exemples) ou
cette interdiction soit vraiment problématique. Les concepteurs de
langages comme Java ou Ada (je me suis peut-être avancé sur Pascal, je
n'ai que de vieux souvenirs et pas de compilos sous la main) sont
d'accord avec moi. Bon, la philosophie du C++ (et du C) étant
d'autoriser tout ce qui a une chance même minime d'être utilisé, même
si c'est casse gueule dans 95% des autres cas, les gens ont préféré la
version la plus permissive de la règle.
On Mon, 03 Oct 2005 21:15:23 +0200, Matthieu Moy :
je voulais _vraiment_ signifier que c'était facile d'implémenter cette règle.
Justement, si j'ai bien compris le propos de Gabriel, c'est effectivement facile d'implémenter cette règle dans un langage simple, mais pas forcément dans un langage aussi riche, complexe et tordu que C++.
Non, c'est aussi simple à implémenter. Par contre, Gabriel donnait des exemples de trucs qu'on peut légitimement vouloir faire en C++ et qui seraient interdit par cette règle.
En fait, ce n'est pas « il y a une règle qui interdit ça » ou « il n'y en a pas », c'est « il y a une règle qui dit à partir de quand la déclaration est utilisable », de toutes façons, et cette règle peut soit dire « tout de suite, et la variable est utilisable dans l'initialisation », ou dire « à la fin de la déclaration ». Il n'y a pas un cas réellement plus simple que l'autre, ni dans la spec, ni dans l'implémentation.
Jusqu'ici, je n'ai pas trouvé de cas (y compris dans ces exemples) ou cette interdiction soit vraiment problématique. Les concepteurs de langages comme Java ou Ada (je me suis peut-être avancé sur Pascal, je n'ai que de vieux souvenirs et pas de compilos sous la main) sont d'accord avec moi. Bon, la philosophie du C++ (et du C) étant d'autoriser tout ce qui a une chance même minime d'être utilisé, même si c'est casse gueule dans 95% des autres cas, les gens ont préféré la version la plus permissive de la règle.