Discussion:
Retour sur les "expressions constantes" (DR#261)
(trop ancien pour répondre)
Vincent Lefevre
2004-10-29 15:32:42 UTC
Permalink
Je suis tombé sur le document suivant:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_261.htm

Il est donné notamment comme exemple:

[contexte: char *p2;]
p2 = 0; // Line X3
p2 = 1 - 1; // Line X4

Ce sont des exemples où la grammaire n'attend pas des expressions
constantes, donc 0 et 1 - 1 ne devraient pas être des expressions
constantes (cf ce qu'avait dit Antoine Leca le 14 octobre dans
<ckld3l$c15$***@shakotay.alphanet.ch>). Or le comité a répondu:

Lines X3 and X4 are legitimate because the expressions are constant
expressions with value 0 and therefore null pointer constants.

Une explication?

S'il s'agit vraiment d'expressions constantes, alors la note 88
de la norme me semble buggée (en se basant alors sur le fait que
1 / 0 est une expression constante et qu'une implémentation peut
évaluer 1 / 0 en phase de traduction, mais le || de 2 || 1 / 0 en
phase d'exécution).
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-10-29 18:29:40 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Je suis tombé sur le document suivant:
|
| http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_261.htm
|
| Il est donné notamment comme exemple:
|
| [contexte: char *p2;]
| p2 = 0; // Line X3
| p2 = 1 - 1; // Line X4
|
| Ce sont des exemples où la grammaire n'attend pas des expressions
| constantes, donc 0 et 1 - 1 ne devraient pas être des expressions
| constantes (cf ce qu'avait dit Antoine Leca le 14 octobre dans
| <ckld3l$c15$***@shakotay.alphanet.ch>).

Je ne te suis pas. Dans les lignes X3 et X4, il est *aussi* attendu des
expressions constantes évaluant à zéro -- constante de pointeur nul.

| Or le comité a répondu:
|
| Lines X3 and X4 are legitimate because the expressions are constant
| expressions with value 0 and therefore null pointer constants.
|
| Une explication?

Voir ci-dessus.

| S'il s'agit vraiment d'expressions constantes, alors la note 88
| de la norme me semble buggée (en se basant alors sur le fait que
| 1 / 0 est une expression constante et qu'une implémentation peut
| évaluer 1 / 0 en phase de traduction, mais le || de 2 || 1 / 0 en
| phase d'exécution).

Non. Pourquoi ? Voir le long thread. Et si tu ne vois pas, ce n'est
pas grave.

-- Gaby
Vincent Lefevre
2004-10-29 18:57:49 UTC
Permalink
Post by Gabriel Dos Reis
|
| http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_261.htm
|
|
| [contexte: char *p2;]
| p2 = 0; // Line X3
| p2 = 1 - 1; // Line X4
|
| Ce sont des exemples où la grammaire n'attend pas des expressions
| constantes, donc 0 et 1 - 1 ne devraient pas être des expressions
| constantes (cf ce qu'avait dit Antoine Leca le 14 octobre dans
Je ne te suis pas. Dans les lignes X3 et X4, il est *aussi* attendu des
expressions constantes évaluant à zéro -- constante de pointeur nul.
Pas spécifiquement. Sinon en quoi dans

p2 = 1 - 1;

1 - 1 est considérée comme une expression constante, mais dans

return argc > 1 ? 0 : 1 / 0;

1 / 0 n'est pas considéré comme une expression constante?

Peux-tu citer des passages de la norme qui montre que ces deux cas
sont différents?
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-10-29 20:36:26 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | Je suis tombé sur le document suivant:
| > |
| > | http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_261.htm
| > |
| > | Il est donné notamment comme exemple:
| > |
| > | [contexte: char *p2;]
| > | p2 = 0; // Line X3
| > | p2 = 1 - 1; // Line X4
| > |
| > | Ce sont des exemples où la grammaire n'attend pas des expressions
| > | constantes, donc 0 et 1 - 1 ne devraient pas être des expressions
| > | constantes (cf ce qu'avait dit Antoine Leca le 14 octobre dans
| > | <ckld3l$c15$***@shakotay.alphanet.ch>).
|
| > Je ne te suis pas. Dans les lignes X3 et X4, il est *aussi* attendu des
| > expressions constantes évaluant à zéro -- constante de pointeur nul.
|
| Pas spécifiquement. Sinon en quoi dans
|
| p2 = 1 - 1;
|
| 1 - 1 est considérée comme une expression constante, mais dans
|
| return argc > 1 ? 0 : 1 / 0;
|
| 1 / 0 n'est pas considéré comme une expression constante?
|
| Peux-tu citer des passages de la norme qui montre que ces deux cas
| sont différents?

Cela a été cité longuement dans le thread en question. Tu
comprends vite quand on explique longtemps, c'est ça ?
Vincent Lefevre
2004-10-29 21:42:19 UTC
Permalink
Post by Gabriel Dos Reis
Cela a été cité longuement dans le thread en question. Tu
comprends vite quand on explique longtemps, c'est ça ?
En gros, tu est incapable de donner le moindre argument.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-10-30 01:04:04 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Cela a été cité longuement dans le thread en question. Tu
| > comprends vite quand on explique longtemps, c'est ça ?
|
| En gros, tu est incapable de donner le moindre argument.

Les arguments ont déjà été répétés plusieurs fois, tu veux qu'on les
répète encore ? On peut discuter du fait que tu sois incapable de les
comprendre, si tu veux.
Le bottom line est que les expressions constantes ne sont évaluées par
la machine abstraite que lorsque nécessaire.

La notion de fonctionnement indéfini est fondamentalement une *notion
« runtime »*. Il peut apparaître en translation-time uniquement
lorsque l'implémentation peut prouver que tous les chemins d'éxécution
passent par ce fonctionnement. Maintenant, si tu ne peux pas te mettre
ça dans le crâne, change de langage ou de métier.

-- Gaby
Vincent Lefevre
2004-10-30 08:00:37 UTC
Permalink
Post by Gabriel Dos Reis
Les arguments ont déjà été répétés plusieurs fois, tu veux qu'on les
répète encore ? On peut discuter du fait que tu sois incapable de les
comprendre, si tu veux.
Le bottom line est que les expressions constantes ne sont évaluées par
la machine abstraite que lorsque nécessaire.
Où est-ce que la norme dit cela? Le 6.6#2 dit:

[#2] A constant expression can be evaluated during
translation rather than runtime, and accordingly may be used
in any place that a constant may be.

Pas de "nécessaire" ici. Ou alors par "machine abstraite", tu entends
seulement ce qui se passe à l'exécution. Mais ce qui m'intéresse là,
c'est ce qui se passe à la traduction.
Post by Gabriel Dos Reis
La notion de fonctionnement indéfini est fondamentalement une *notion
« runtime »*. Il peut apparaître en translation-time uniquement
lorsque l'implémentation peut prouver que tous les chemins d'éxécution
passent par ce fonctionnement.
Où est-ce que la norme dit cela? À la rigueur, c'est le 6.6#11 qui s'y
rapproche le plus, mais il parle de la sémantique de l'évaluation d'une
expression constante et non de la sémantique du programme (ce n'est pas
pareil).

En tout cas, il y a au moins un compilateur qui évalue les expressions
constantes à la traduction même si leurs valeurs ne seront jamais
utilisées: MSVC6. En particulier, la compilation de MPFR échoue parce
qu'à un endroit, on renvoie 0.0/0.0 (dans mpfr_get_d, qui converti un
nombre MPFR en double, dans le cas où le nombre MPFR est un NaN). Je
précise que le 0.0/0.0 n'est pas utilisé dans une initialisation.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-10-30 11:39:13 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Les arguments ont déjà été répétés plusieurs fois, tu veux qu'on les
| > répète encore ? On peut discuter du fait que tu sois incapable de les
| > comprendre, si tu veux.
| > Le bottom line est que les expressions constantes ne sont évaluées par
| > la machine abstraite que lorsque nécessaire.
|
| Où est-ce que la norme dit cela?

Tu as certainement lu « le bottom line », non ?

| Le 6.6#2 dit:
|
| [#2] A constant expression can be evaluated during
| translation rather than runtime, and accordingly may be used
| in any place that a constant may be.
|
| Pas de "nécessaire" ici.

mais en ce qui concerne le fonctionnement de la machine abstraite, le
compilateur ne peut pas introduire un fonctionnement indéfini là où
cela n'existe pas. Du point de vue la machine abstraite, cela se passe
comme si l'évaluation n'a lieu que si c'est nécessaire

Semantics

[#5] An expression that evaluates to a constant is required
in several contexts. If a floating expression is evaluated
in the translation environment, the arithmetic precision and
range shall be at least as great as if the expression were
being evaluated in the execution environment.

[...]

[#11] The semantic rules for the evaluation of a constant
expression are the same as for nonconstant expressions.97)


| Ou alors par "machine abstraite",

oui, je parle de la machine abstraite


| tu entends
| seulement ce qui se passe à l'exécution. Mais ce qui m'intéresse là,

La norme C décrit le fonctionnement d'une machine abstraite avec des
paramètres.

[#3] A program that is correct in all other aspects,
operating on correct data, containing unspecified behavior
shall be a correct program and act in accordance with
5.1.2.3.


5.1.2.3 Program execution

[#1] The semantic descriptions in this International
Standard describe the behavior of an abstract machine in
which issues of optimization are irrelevant.

| c'est ce qui se passe à la traduction.

Mauvaise question.

[#11] The semantic rules for the evaluation of a constant
expression are the same as for nonconstant expressions.97)

Ah.

[#1] This International Standard specifies the form and
establishes the interpretation of programs written in the C
programming language.1) It specifies

-- the representation of C programs;

-- the syntax and constraints of the C language;

-- the semantic rules for interpreting C programs;

-- the representation of input data to be processed by C
programs;

-- the representation of output data produced by C
programs;

-- the restrictions and limits imposed by a conforming
implementation of C.

[#2] This International Standard does not specify

-- the mechanism by which C programs are transformed for
use by a data-processing system;

-- the mechanism by which C programs are invoked for use
by a data-processing system;

-- the mechanism by which input data are transformed for
use by a C program;

-- the mechanism by which output data are transformed
after being produced by a C program;

-- the size or complexity of a program and its data that
will exceed the capacity of any specific data-
processing system or the capacity of a particular
processor;

-- all minimal requirements of a data-processing system
that is capable of supporting a conforming
implementation.

| > La notion de fonctionnement indéfini est fondamentalement une *notion
| > « runtime »*. Il peut apparaître en translation-time uniquement
| > lorsque l'implémentation peut prouver que tous les chemins d'éxécution
| > passent par ce fonctionnement.
|
| Où est-ce que la norme dit cela? À la rigueur, c'est le 6.6#11 qui s'y
| rapproche le plus, mais il parle de la sémantique de l'évaluation d'une
| expression constante et non de la sémantique du programme (ce n'est pas
| pareil).

Voir ci-dessus. 6.6/11 ne fait que rappeler ce qui a déjà en 5.1.2.3/1.
C'est si dur pour toi à comprendre ?

| En tout cas, il y a au moins un compilateur qui évalue les expressions
| constantes à la traduction même si leurs valeurs ne seront jamais
| utilisées: MSVC6.

Et tu crois que cela pourve quoi ? La dernière fois que j'ai vérifié
MSVC6 n'est pas une référence en matière de conformité de traducteur
de programme C.

| En particulier, la compilation de MPFR échoue parce
| qu'à un endroit, on renvoie 0.0/0.0 (dans mpfr_get_d, qui converti un

Si tu utilises un compilateur qui implémente la sémantique de C90 dans
ce cas, tu n'as pas grand chose à dire. Si ton compilateur te dit
qu'il implémente la sémantique de C99 dans ce cas, alors tu peux leur
reporter un bug.

Autrement tu changes de langage si tu ne peux pas comprendre que la
sémantique est spécifiée pour le fonctionnement de la machine
abstraite, i.e. on parle de « run time ». Ou tu changes de métier.

| nombre MPFR en double, dans le cas où le nombre MPFR est un NaN). Je
| précise que le 0.0/0.0 n'est pas utilisé dans une initialisation.

Si tu veux la sémantique C99 utilise C99 -- NAN.

-- Gaby
Vincent Lefevre
2004-10-30 13:11:58 UTC
Permalink
Post by Gabriel Dos Reis
| > Le bottom line est que les expressions constantes ne sont évaluées par
| > la machine abstraite que lorsque nécessaire.
|
| Où est-ce que la norme dit cela?
Tu as certainement lu « le bottom line », non ?
Qu'est-ce que c'est que le "bottom line"? (Cette expression n'est
mentionnée nulle part dans la norme, ni dans mon dictionnaire
d'anglais.)
Post by Gabriel Dos Reis
|
| [#2] A constant expression can be evaluated during
| translation rather than runtime, and accordingly may be used
| in any place that a constant may be.
|
| Pas de "nécessaire" ici.
mais en ce qui concerne le fonctionnement de la machine abstraite, le
compilateur ne peut pas introduire un fonctionnement indéfini là où
cela n'existe pas.
Si j'écris

if (cond)
x = 1 / 0;

et que la norme autorise à ce que le 1 / 0 soit évalué à la traduction
(ce n'est pas ce que dit le 6.6#2 dans la mesure où toutes les
contraintes sont vérifiées?), alors on ne peut pas nier la possibilité
d'un fonctionnement indéfini lors de cette évaluation. Et ceci, même
si cond est toujours faux dans la pratique.
Post by Gabriel Dos Reis
Du point de vue la machine abstraite, cela se passe comme si
l'évaluation n'a lieu que si c'est nécessaire
Semantics
[#5] An expression that evaluates to a constant is required
in several contexts. If a floating expression is evaluated
in the translation environment, the arithmetic precision and
range shall be at least as great as if the expression were
being evaluated in the execution environment.
[...]
[#11] The semantic rules for the evaluation of a constant
expression are the same as for nonconstant expressions.97)
Je n'ai jamais contredit le #11. Par exemple, dans l'exemple ci-dessus

if (cond)
x = 1 / 0;

l'évaluation de 1 / 0 génère un comportement indéfini, comme pour
une expression non constante. Tout ce que je fais, c'est *ajouter*
des choses à la traduction, autorisées par le 6.6#2.
Post by Gabriel Dos Reis
| Ou alors par "machine abstraite",
oui, je parle de la machine abstraite
| tu entends
| seulement ce qui se passe à l'exécution. Mais ce qui m'intéresse là,
La norme C décrit le fonctionnement d'une machine abstraite avec des
paramètres.
Mais la norme décrit aussi comment se passe la traduction (il peut
y avoir des diagnostics, etc.).
Post by Gabriel Dos Reis
[#3] A program that is correct in all other aspects,
operating on correct data, containing unspecified behavior
shall be a correct program and act in accordance with
5.1.2.3.
5.1.2.3 Program execution
[#1] The semantic descriptions in this International
Standard describe the behavior of an abstract machine in
which issues of optimization are irrelevant.
| c'est ce qui se passe à la traduction.
Mauvaise question.
Pourquoi mauvaise question?
Post by Gabriel Dos Reis
[#11] The semantic rules for the evaluation of a constant
expression are the same as for nonconstant expressions.97)
Ah.
Cf ma remarque plus haut concernant le #11.

[...]
Post by Gabriel Dos Reis
| > La notion de fonctionnement indéfini est fondamentalement une *notion
| > « runtime »*. Il peut apparaître en translation-time uniquement
| > lorsque l'implémentation peut prouver que tous les chemins d'éxécution
| > passent par ce fonctionnement.
|
| Où est-ce que la norme dit cela? À la rigueur, c'est le 6.6#11 qui s'y
| rapproche le plus, mais il parle de la sémantique de l'évaluation d'une
| expression constante et non de la sémantique du programme (ce n'est pas
| pareil).
Voir ci-dessus. 6.6/11 ne fait que rappeler ce qui a déjà en 5.1.2.3/1.
C'est si dur pour toi à comprendre ?
Je ne vois pas en quoi le 5.1.2.3/1 change quelque chose. Note que le
5.1.2.3 est "Program execution" alors que le problème que je signale
se passe à la traduction. Dès lors qu'il y a un comportement indéfini
intervenant quelque part (dans n'importe quelle phase de traduction),
le comportement à l'exécution (s'il y a exécution) est indéfini, non?
Post by Gabriel Dos Reis
| En tout cas, il y a au moins un compilateur qui évalue les expressions
| constantes à la traduction même si leurs valeurs ne seront jamais
| utilisées: MSVC6.
Et tu crois que cela pourve quoi ? La dernière fois que j'ai vérifié
MSVC6 n'est pas une référence en matière de conformité de traducteur
de programme C.
| En particulier, la compilation de MPFR échoue parce
| qu'à un endroit, on renvoie 0.0/0.0 (dans mpfr_get_d, qui converti un
Si tu utilises un compilateur qui implémente la sémantique de C90 dans
ce cas, tu n'as pas grand chose à dire.
Quelle était la sémantique de C90? C'est peut-être la raison...
(Je n'ai pas accès au compilo, mais de toute façon, que ce soit
un bug du compilo ou que ce soit parce que la sémantique de C90
est implémentée, ça ne change pas grand chose pour la compilation
de MPFR.)
Post by Gabriel Dos Reis
| nombre MPFR en double, dans le cas où le nombre MPFR est un NaN). Je
| précise que le 0.0/0.0 n'est pas utilisé dans une initialisation.
Si tu veux la sémantique C99 utilise C99 -- NAN.
C'est une possibilité, maintenant qu'on s'est réellement séparé de GMP
(les développeurs de GMP ne voulaient pas). Mais ça ne résout pas le
fond du problème, car la macro NAN n'est pas forcément définie. Dans
ce cas, qu'est-ce que tu suggères pour renvoyer un signaling NaN?
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-10-30 18:30:34 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | Dans l'article <***@merlin.cs.tamu.edu>,
| > | Gabriel Dos Reis <***@cs.tamu.edu> écrit:
| > | > Le bottom line est que les expressions constantes ne sont évaluées par
| > | > la machine abstraite que lorsque nécessaire.
| > |
| > | Où est-ce que la norme dit cela?
|
| > Tu as certainement lu « le bottom line », non ?
|
| Qu'est-ce que c'est que le "bottom line"? (Cette expression n'est
| mentionnée nulle part dans la norme, ni dans mon dictionnaire
| d'anglais.)

C'est dommage qu'ils pratiquent plus les bonnets d'âne. Tu fais quoi
dans la vie déjà ?

| > | Le 6.6#2 dit:
| > |
| > | [#2] A constant expression can be evaluated during
| > | translation rather than runtime, and accordingly may be used
| > | in any place that a constant may be.
| > |
| > | Pas de "nécessaire" ici.
|
| > mais en ce qui concerne le fonctionnement de la machine abstraite, le
| > compilateur ne peut pas introduire un fonctionnement indéfini là où
| > cela n'existe pas.
|
| Si j'écris
|
| if (cond)
| x = 1 / 0;
|
| et que la norme autorise à ce que le 1 / 0 soit évalué à la traduction
| (ce n'est pas ce que dit le 6.6#2 dans la mesure où toutes les
| contraintes sont vérifiées?), alors on ne peut pas nier la possibilité
| d'un fonctionnement indéfini lors de cette évaluation. Et ceci, même
| si cond est toujours faux dans la pratique.

Du point de vue de la machine abstraite, il n'y a de fonctionnement
indéfini que si l'expression « cond » est vraie. Donc quoi que fasse
ton compilateur, il ne peut introduire de fonctionnement indéfini là
où il n'y en a pas. C'est compilqué pour toi ?

| > Du point de vue la machine abstraite, cela se passe comme si
| > l'évaluation n'a lieu que si c'est nécessaire
|
| > Semantics
|
| > [#5] An expression that evaluates to a constant is required
| > in several contexts. If a floating expression is evaluated
| > in the translation environment, the arithmetic precision and
| > range shall be at least as great as if the expression were
| > being evaluated in the execution environment.
|
| > [...]
|
| > [#11] The semantic rules for the evaluation of a constant
| > expression are the same as for nonconstant expressions.97)
|
| Je n'ai jamais contredit le #11.

Bah si. Tu crois que tu peux évaluer la condition d'une branche if
même si elle n'est jamais prises.

| Par exemple, dans l'exemple ci-dessus
|
| if (cond)
| x = 1 / 0;
|
| l'évaluation de 1 / 0 génère un comportement indéfini, comme pour

parc que cond est vraie ?

| une expression non constante. Tout ce que je fais, c'est *ajouter*
| des choses à la traduction, autorisées par le 6.6#2.

Bah non, tu changes la sémantique du programme.

| > | Ou alors par "machine abstraite",
|
| > oui, je parle de la machine abstraite
|
| > | tu entends
| > | seulement ce qui se passe à l'exécution. Mais ce qui m'intéresse là,
|
| > La norme C décrit le fonctionnement d'une machine abstraite avec des
| > paramètres.
|
| Mais la norme décrit aussi comment se passe la traduction (il peut
| y avoir des diagnostics, etc.).

et as-tu bien lu ce qu'elle décrit ou te contentes-tu de dire qu'elle
décrit comment se passe la traduction.

| > [#3] A program that is correct in all other aspects,
| > operating on correct data, containing unspecified behavior
| > shall be a correct program and act in accordance with
| > 5.1.2.3.
|
|
| > 5.1.2.3 Program execution
|
| > [#1] The semantic descriptions in this International
| > Standard describe the behavior of an abstract machine in
| > which issues of optimization are irrelevant.
|
| > | c'est ce qui se passe à la traduction.
|
| > Mauvaise question.
|
| Pourquoi mauvaise question?

Parce qu'elle en est une.

| > [#11] The semantic rules for the evaluation of a constant
| > expression are the same as for nonconstant expressions.97)
|
| > Ah.
|
| Cf ma remarque plus haut concernant le #11.
|
| [...]
| > | > La notion de fonctionnement indéfini est fondamentalement une *notion
| > | > « runtime »*. Il peut apparaître en translation-time uniquement
| > | > lorsque l'implémentation peut prouver que tous les chemins d'éxécution
| > | > passent par ce fonctionnement.
| > |
| > | Où est-ce que la norme dit cela? À la rigueur, c'est le 6.6#11 qui s'y
| > | rapproche le plus, mais il parle de la sémantique de l'évaluation d'une
| > | expression constante et non de la sémantique du programme (ce n'est pas
| > | pareil).
|
| > Voir ci-dessus. 6.6/11 ne fait que rappeler ce qui a déjà en 5.1.2.3/1.
| > C'est si dur pour toi à comprendre ?
|
| Je ne vois pas en quoi le 5.1.2.3/1 change quelque chose.

ce paragraphe te dit que tout ce que la norme te dit à propos de la
sémantique, c'est pour la machine abstraitre. Mais toi tu veux refuse
de comprendre que ce qui importe c'est comment la machine abtraitre
est censée fonctionner.

| Note que le
| 5.1.2.3 est "Program execution" alors que le problème que je signale
| se passe à la traduction.

Mais ce que tu ne comprends pas, c'est que ton programme est
interprété selon les règles sémantiques qui elles sont à
l'éxécution.

1. Scope

[#1] This International Standard specifies the form and
establishes the interpretation of programs written in the C
programming language.1) It specifies

-- the representation of C programs;

-- the syntax and constraints of the C language;

-- the semantic rules for interpreting C programs;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Dès lors qu'il y a un comportement indéfini
| intervenant quelque part (dans n'importe quelle phase de traduction),
| le comportement à l'exécution (s'il y a exécution) est indéfini, non?

Et la question est : y a-t-il fonctionnement indéfini dans ton
programme

if (cond)
x = 1/ 0;

La réponse est oui si et seulement si il existe un chemin d'exécution
qui passe par cette instruction et pour lequel cond évalue à vrai. Si
ton compilateur peut le prouver alors il peut faire kidnapper ta
cervelle. Autrement, non (à moins que tu aies d'autres fonctionnements
indéfinis ailleurs).


| > | En tout cas, il y a au moins un compilateur qui évalue les expressions
| > | constantes à la traduction même si leurs valeurs ne seront jamais
| > | utilisées: MSVC6.
|
| > Et tu crois que cela pourve quoi ? La dernière fois que j'ai vérifié
| > MSVC6 n'est pas une référence en matière de conformité de traducteur
| > de programme C.
|
| > | En particulier, la compilation de MPFR échoue parce
| > | qu'à un endroit, on renvoie 0.0/0.0 (dans mpfr_get_d, qui converti un
|
| > Si tu utilises un compilateur qui implémente la sémantique de C90 dans
| > ce cas, tu n'as pas grand chose à dire.
|
| Quelle était la sémantique de C90? C'est peut-être la raison...

Pratiquement rien n'était imposé sur les floating points.
(désolé je n'ai plus de copies de C90 et la seule que l'AFNOR m'a
envoyée a été kidnappée par quelqu'un. J'ai demandé à John la semaine
dernière s'il y avait un diff ou une copie electronique, il m'a
répondu "non").
Le support de fp dans C99 est une nouveau par rapport à C90 et K+R.

| (Je n'ai pas accès au compilo, mais de toute façon, que ce soit
| un bug du compilo ou que ce soit parce que la sémantique de C90
| est implémentée, ça ne change pas grand chose pour la compilation
| de MPFR.)

Écoute, si tu écris des programmes buggués, c'est ton problème.

| > | nombre MPFR en double, dans le cas où le nombre MPFR est un NaN). Je
| > | précise que le 0.0/0.0 n'est pas utilisé dans une initialisation.
|
| > Si tu veux la sémantique C99 utilise C99 -- NAN.
|
| C'est une possibilité, maintenant qu'on s'est réellement séparé de GMP
| (les développeurs de GMP ne voulaient pas). Mais ça ne résout pas le
| fond du problème, car la macro NAN n'est pas forcément définie. Dans
| ce cas, qu'est-ce que tu suggères pour renvoyer un signaling NaN?

Ce que ton compilateur dit (en supposant qu'il support les sNaN).
C'est pas tous les compilateurs qui le supportent, et c'est pas
forcément surpporté sur toutes les machines.

-- Gaby
drkm
2004-10-30 18:58:51 UTC
Permalink
Post by Gabriel Dos Reis
| > Tu as certainement lu « le bottom line », non ?
| Qu'est-ce que c'est que le "bottom line"? (Cette expression n'est
| mentionnée nulle part dans la norme, ni dans mon dictionnaire
| d'anglais.)
C'est dommage qu'ils pratiquent plus les bonnets d'âne.
Au risque de paraître stupide, je ne vois pas non plus ce que tu
entends par ce terme. Qu'est-ce ?

--drkm
Serge Paccalin
2004-10-30 19:38:16 UTC
Permalink
Post by drkm
Post by Gabriel Dos Reis
| > Tu as certainement lu « le bottom line », non ?
| Qu'est-ce que c'est que le "bottom line"? (Cette expression n'est
| mentionnée nulle part dans la norme, ni dans mon dictionnaire
| d'anglais.)
Pour la norme, c'est normal, mais pour le dictionnaire, il faut en
acheter un autre.
Post by drkm
Post by Gabriel Dos Reis
C'est dommage qu'ils pratiquent plus les bonnets d'âne.
Au risque de paraître stupide, je ne vois pas non plus ce que tu
entends par ce terme. Qu'est-ce ?
La « bottom line », c'est « ce qu'il faut retenir, en résumé ».
Littéralement, c'est la ligne au bas d'un bilan financier de société,
avec le bénéfice (ou le déficit).
--
___________ 2004-10-30 21:33:55
_/ _ \_`_`_`_) Serge PACCALIN -- sp ad mailclub.net
\ \_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Emmanuel Delahaye
2004-10-30 19:53:00 UTC
Permalink
La « bottom line », c'est « ce qu'il faut retenir, en résumé ».
Littéralement, c'est la ligne au bas d'un bilan financier de société,
avec le bénéfice (ou le déficit).
Synthèse, conclusion...
--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"
Jean-Marc Bourguet
2004-10-31 08:17:30 UTC
Permalink
Post by Gabriel Dos Reis
(désolé je n'ai plus de copies de C90 et la seule que l'AFNOR m'a
envoyée a été kidnappée par quelqu'un. J'ai demandé à John la semaine
dernière s'il y avait un diff ou une copie electronique, il m'a
répondu "non").
Schildt est à 100$ en seconde main sur Amazon.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Emmanuel Delahaye
2004-10-31 09:13:58 UTC
Permalink
Post by Jean-Marc Bourguet
Post by Gabriel Dos Reis
(désolé je n'ai plus de copies de C90 et la seule que l'AFNOR m'a
envoyée a été kidnappée par quelqu'un. J'ai demandé à John la semaine
dernière s'il y avait un diff ou une copie electronique, il m'a
répondu "non").
Schildt est à 100$ en seconde main sur Amazon.
Aie, tu as prononcé l'innomable...
--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"
Jean-Marc Bourguet
2004-10-31 12:16:11 UTC
Permalink
Post by Emmanuel Delahaye
Post by Jean-Marc Bourguet
Post by Gabriel Dos Reis
(désolé je n'ai plus de copies de C90 et la seule que
l'AFNOR m'a envoyée a été kidnappée par quelqu'un. J'ai
demandé à John la semaine dernière s'il y avait un diff
ou une copie electronique, il m'a répondu "non").
Schildt est à 100$ en seconde main sur Amazon.
Aie, tu as prononcé l'innomable...
Je suis sur que Gabriel est capable d'en tirer profit.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Antoine Leca
2004-11-02 08:56:25 UTC
Permalink
Post by Emmanuel Delahaye
Post by Jean-Marc Bourguet
Schildt est à 100$ en seconde main sur Amazon.
Aie, tu as prononcé l'innomable...
Bah, au moins celui-là est lisible, à condition d'accepter de regarder ce
qui se passe à gauche, mais pas à droite.

Je l'ai même amené une fois au comité C, j'au eu droit à quelques sourires,
mais au moment où il a fallu vérifier le texte de C90 et que j'étais un des
deux seuls qui avaient (la partie subtancielle de) la norme sur moi, il y
eut moins de sourire.


Antoine
Charlie Gordon
2004-11-04 13:09:30 UTC
Permalink
Post by Antoine Leca
Post by Emmanuel Delahaye
Post by Jean-Marc Bourguet
Schildt est à 100$ en seconde main sur Amazon.
Aie, tu as prononcé l'innomable...
Bah, au moins celui-là est lisible, à condition d'accepter de regarder ce
qui se passe à gauche, mais pas à droite.
Je l'ai même amené une fois au comité C, j'au eu droit à quelques sourires,
mais au moment où il a fallu vérifier le texte de C90 et que j'étais un des
deux seuls qui avaient (la partie subtancielle de) la norme sur moi, il y
eut moins de sourire.
Cela n'eût pas été un problème si ces textes étaient libres de droits ;-)
La plupart des programmeurs à qui j'explique qu'il faut payer cher pour avoir le
pdf de la norme tombent des nues !
En ce qui me concerne, je trouve que c'est une escroquerie.

Chqrlie.
Antoine Leca
2004-11-04 16:57:47 UTC
Permalink
Post by Charlie Gordon
Cela n'eût pas été un problème si ces textes étaient libres de droits
Bah non... Les autres avaient leurs copies électroniques du brouillon (celle
qui circule sur le net). Mais il s'agissait de vérifier quelque chose sur la
version officielle, l'imprimée.


Antoine
Charlie Gordon
2004-11-05 10:32:16 UTC
Permalink
Post by Antoine Leca
Post by Charlie Gordon
Cela n'eût pas été un problème si ces textes étaient libres de droits
Bah non... Les autres avaient leurs copies électroniques du brouillon (celle
qui circule sur le net). Mais il s'agissait de vérifier quelque chose sur la
version officielle, l'imprimée.
C'est bien ce que je dis, la version officielle devrait être libre de droits et
disponible en pdf. Vous l'auriez alors tous eue sur vos laptops.

Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de l'escroquerie,
c'est de l'extorsion.

Chqrlie.
Jean-Marc Bourguet
2004-11-05 10:35:08 UTC
Permalink
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Charlie Gordon
2004-11-05 10:56:58 UTC
Permalink
Post by Jean-Marc Bourguet
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.
As-tu des chiffres pour appuyer cette affirmation ?
Quel chiffre d'affaires font-ils en vente de papier, de pdf...
Quelle proportion de leurs coûts cela couvre-t-il ?
D'où vient le reste du financement ?
Cette méthode n'est-elle pas contradictoire avec l'objectif de la normalisation
même et en particulier de l'adoption large des dites normes ?

Chqrlie.
Jean-Marc Bourguet
2004-11-05 12:39:11 UTC
Permalink
Post by Charlie Gordon
Post by Jean-Marc Bourguet
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.
As-tu des chiffres pour appuyer cette affirmation ?
Aucun. C'est une pure hypothese. Mais il ne faut pas oublier que
c'est le genre d'institutions qui evoluent lentement et qui sont loin
de ne faire que de l'informatique ou de l'electronique.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Antoine Leca
2004-11-05 15:52:22 UTC
Permalink
Post by Charlie Gordon
Cette méthode n'est-elle pas contradictoire avec l'objectif de la
normalisation même
Je ne pense pas.
Post by Charlie Gordon
et en particulier de l'adoption large des dites normes ?
Je ne pense pas que l'objectif réel de la normalisation soit de permettre
l'accès libre aux normes. De la même manière que je ne pense pas que
l'objectif des brevets soit de répandre la connaissance technique. De la
même manière que je ne pense pas que l'objectif initial du dépot légal fut
la diffusion de la connaissance. De la même manière que je ne pense pas que
l'objectif de la lutte contre Napster fut la recherche de nouveaux talents
musicaux.

Au moins, le copyright ou le dépôt des marques ou des dessins sont plus
clair, en disant bien que leurs objectifs sont de protéger les droits des
auteurs et de leurs représentants.


Antoine
Charlie Gordon
2004-11-07 11:18:50 UTC
Permalink
Post by Antoine Leca
Je ne pense pas que l'objectif réel de la normalisation soit de permettre
l'accès libre aux normes. De la même manière que je ne pense pas que
l'objectif des brevets soit de répandre la connaissance technique. De la
même manière que je ne pense pas que l'objectif initial du dépot légal fut
la diffusion de la connaissance.
Bien sûr que si !
Le brevet est un contrat : en échange de la protection de l'invention pendant un
certain temps (bien trop long dans le cas de l'informatique), les détails de
celle-ci doivent être librement consultables dans un office gouvernemental. On
ne paye pas quand on ne rend sur place (rue de Saint-Petersbourg pour la
France). Les technologies actuelles permettraient aisément de rendre l'accès
en ligne à la fois efficace et gratuit. Mais l'INPI est noyautée par les
lobbies et les incompétents, comme l'EOB ou le USPO. Si bien qu'au final ce
sont des sociétés privées, comme IBM, qui permettent un accès public à ces
données.

C'est bien dommage que des contributeurs que toi et Gabriel se laissent berner
par ces pratiques !
Quel monde de merde où les efforts des plus brillants concepteurs de langages
n'ont pas comme objectif de faire connaitre le résultat de leurs travaux ! Pas
étonnant que des tas de boue comme perl ou php connaissent un tel succès. Même
java est mieux promu que C99. Vous devriez vous rebeller contre cet état de
fait, et suivre l'exemple de ADA, dont on a obtenu qu'il soit librement
disponible.

L'Ansi pratique des tarifs moins confiscatoires que l'ISO, tant mieux, mais
c'est quand même pathologiquement stupide de faire payer son propre catalogue en
ligne ! http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+Catalog : 15$
pour avoir le droit de télécharger un pdf de 1.7 MB, c'est quoi la justification
? La sclérose généralisée qui leur fait confondre coûts d'impression et d'envoi
et accès à l'information. Au moins ne font-ils pas payer les corrigenda en
ligne !

Quel fabricant de chips ferait payer les pdf de spécifications de ses produits ?
Post by Antoine Leca
De la même manière que je ne pense pas que
l'objectif de la lutte contre Napster fut la recherche de nouveaux talents
musicaux.
C'est pourquoi je pense que cette lutte est vaine. Le vrai problème de
piraterie est dans le commerce de contrefaçons qui fait prospérer mafias et
marginaux, et qui se pratique au grand jour sur tous les marchés de France et
d'ailleurs. Les téléchargeurs compulsifs ne sont pas plus dangereux sur le plan
économique que la promotion audiovisuelle et radiophonique. Pour moi, ils
jouent le même rôle.
Post by Antoine Leca
Au moins, le copyright ou le dépôt des marques ou des dessins sont plus
clair, en disant bien que leurs objectifs sont de protéger les droits des
auteurs et de leurs représentants.
Pour une durée invraisemblable : 70 ans après la mort de l'auteur en ce qui
concerne le copyright !

Chqrlie.

PS: David Bowie est réaliste à ce sujet :

David Bowie on copyright

"I don't even know why I would want to be on a label in a few years, because I
don't think it's going to work by labels and by distribution systems in the same
way," he said. "The absolute transformation of everything that we ever thought
about music will take place within 10 years, and nothing is going to be able to
stop it. I see absolutely no point in pretending that it's not going to happen.
I'm fully confident that copyright, for instance, will no longer exist in 10
years, and authorship and intellectual property is in for such a bashing."
Gabriel Dos Reis
2004-11-07 17:37:38 UTC
Permalink
"Charlie Gordon" <***@chqrlie.org> writes:

| C'est bien dommage que des contributeurs que toi et Gabriel se laissent berner
| par ces pratiques !

Je ne pense pas me faire berner.
Je participe à cet effort en connaissance de cause -- non pas que je
sois complètement d'accord avec le processus bureaucratique
sous-jacente. Au sein du comité WG21, nous sommes bien conscients du
problème et lorsque possible, nous faisons ce que nous pouvons pour
rendre les documents les plus accessibles possibles.

Si tu prends la chose aussi à coeur ou si tu penses que c'est de
l'escroquerie, il ne suffit pas d'envoyer des messages dans fclc -- ça,
c'est à la portée du premier venu. Il faudrait que tu engages des
actions tendant à changer la situation. J'ose croire que des
contributeurs de fclc comme toi ne font pas que du vent.

-- Gaby
Charlie Gordon
2004-11-07 18:02:27 UTC
Permalink
Post by Gabriel Dos Reis
| C'est bien dommage que des contributeurs que toi et Gabriel se laissent berner
| par ces pratiques !
Je ne pense pas me faire berner.
Je participe à cet effort en connaissance de cause -- non pas que je
sois complètement d'accord avec le processus bureaucratique
sous-jacente. Au sein du comité WG21, nous sommes bien conscients du
problème et lorsque possible, nous faisons ce que nous pouvons pour
rendre les documents les plus accessibles possibles.
Quel est donc l'obstacle majeur à la diffusion libre de C99 ?
Post by Gabriel Dos Reis
Si tu prends la chose aussi à coeur ou si tu penses que c'est de
l'escroquerie, il ne suffit pas d'envoyer des messages dans fclc -- ça,
c'est à la portée du premier venu. Il faudrait que tu engages des
actions tendant à changer la situation. J'ose croire que des
contributeurs de fclc comme toi ne font pas que du vent.
Je suis d'accord avec toi, et si je me lache sur ce forum, sache que j'oeuvre
aussi dans ce sens de facon plus subtile au sein d'autres organisations où ces
vues sont largement partagées, mais qui essaient d'éviter la stigmatisation (ex:
logiciels libres = gauchistes utopiques) qui empêche le débat et conforte les
lobbies et le statu quo.

Chqrlie.
Gabriel Dos Reis
2004-11-08 01:04:22 UTC
Permalink
"Charlie Gordon" <***@chqrlie.org> writes:

| "Gabriel Dos Reis" <***@cs.tamu.edu> wrote in message
| news:***@merlin.cs.tamu.edu...
| > "Charlie Gordon" <***@chqrlie.org> writes:
| >
| > | C'est bien dommage que des contributeurs que toi et Gabriel se laissent
| berner
| > | par ces pratiques !
| >
| > Je ne pense pas me faire berner.
| > Je participe à cet effort en connaissance de cause -- non pas que je
| > sois complètement d'accord avec le processus bureaucratique
| > sous-jacente. Au sein du comité WG21, nous sommes bien conscients du
| > problème et lorsque possible, nous faisons ce que nous pouvons pour
| > rendre les documents les plus accessibles possibles.
|
| Quel est donc l'obstacle majeur à la diffusion libre de C99 ?

Va demander à ISO de diffuser le document.

|
| > Si tu prends la chose aussi à coeur ou si tu penses que c'est de
| > l'escroquerie, il ne suffit pas d'envoyer des messages dans fclc -- ça,
| > c'est à la portée du premier venu. Il faudrait que tu engages des
| > actions tendant à changer la situation. J'ose croire que des
| > contributeurs de fclc comme toi ne font pas que du vent.
|
| Je suis d'accord avec toi, et si je me lache sur ce forum, sache que j'oeuvre
| aussi dans ce sens de facon plus subtile au sein d'autres
| organisations

En ce qui concerne la norme C, il s'agit de ISO/CEI JTC1/SC22/WG14 ;
éventuellement tu arriveras à ISO/CEI JTC1. C'est là qu'il te faut
frapper, camarade ; pas à côté.

Bonne chance,

-- Gaby
Poutine, Tchéchénie,
Chirac, Côte d'Ivoire,
...
Antoine Leca
2004-11-08 15:19:57 UTC
Permalink
Post by Charlie Gordon
Post by Antoine Leca
Je ne pense pas que l'objectif réel de la normalisation soit de
permettre l'accès libre aux normes. De la même manière que je ne
pense pas que l'objectif des brevets soit de répandre la
connaissance technique. De la même manière que je ne pense pas
que l'objectif initial du dépot légal fut la diffusion de la
connaissance.
Bien sûr que si !
Le brevet est un contrat : en échange de la protection de l'invention
pendant un certain temps (bien trop long dans le cas de
l'informatique), les détails de celle-ci doivent être librement
consultables dans un office gouvernemental.
Bon. Et si tu crois que ce qui importe, c'est la seconde partie du contrat,
bin... on est pas d'accord sur le fond.

C'est un peu comme si on voulait essayer de me convaincre que l'article 17
de la déclaration des droits de l'homme (sur la propriété) est là pour le
bien des serfs et des manœuvres.
Post by Charlie Gordon
C'est bien dommage que des contributeurs que toi et Gabriel se
laissent berner par ces pratiques !
En quoi suis-je berné ?
Je ne suis pas dupe du système, et je le dénonce. Mais je n'ai pas le
pouvoir, ni la volonté, de « faire la révolution » tout seul. Alors je
participe au système tel qu'il est, aux RFC, aux standards plutôt libres, ou
aux normes internationales, pour apporter mon grain de sel; mais pas pour
tourner la loi.
Post by Charlie Gordon
Quel monde de merde où les efforts des plus brillants concepteurs de
langages n'ont pas comme objectif de faire connaitre le résultat de
leurs travaux !
C'est tout le contraire. Comment veux-tu qu'un concepteur de langage
obtienne la reconnaissance, si ce n'est par la publication sous forme de
norme, avec la publicité qui y est liée ?
Post by Charlie Gordon
Vous devriez vous rebeller contre cet état de fait,
1) je ne suis pas un concepteur de langage
2) qu'est ce que cela m'apporterait, à moi personnellement
Post by Charlie Gordon
et suivre l'exemple de ADA, dont on a obtenu qu'il soit librement
disponible.
En quoi Jean Ichbiah a quoi que ce soit à voir là-dedans ?
Post by Charlie Gordon
La sclérose généralisée qui leur fait confondre
coûts d'impression et d'envoi et accès à l'information.
Certains semblent penser que l'accès à l'information devrait être gratuit,
sous prétexte que les coûts de transmission baissent. J'ai peur qu'il y ait
des réveils difficiles.
Post by Charlie Gordon
Quel fabricant de chips ferait payer les pdf de spécifications de ses produits ?
Personne, et c'est pour cela qu'ils se permettent de les modifier tous les
quatre matins.
Post by Charlie Gordon
C'est pourquoi je pense que cette lutte est vaine. Le vrai problème
de piraterie est dans le commerce de contrefaçons qui fait prospérer
mafias et marginaux, et qui se pratique au grand jour sur tous les
marchés de France et d'ailleurs.
Ce ne sont pas les contrefaçons qui font prospérer les mafias, c'est la trop
grande différence de prix entre la contrefaçon et la version légale, ou si
tu préfères entre le coût de revient et le prix de vente. C'est un effet du
mécanisme capitaliste (qui a pour principe d'attendre que la situation
s'équilibre par effets « des lois du marché »).
Je ne suis pas loin de partager plusieurs de ses idées. Mais je ne me place
pas sur le même plan que lui: je n'ai pas gagné autant sur le dos du
système, et je n'ai pas le même détachement que lui quant à l'avenir.


Antoine
Gabriel Dos Reis
2004-11-09 02:33:32 UTC
Permalink
"Antoine Leca" <***@localhost.gov> writes:

| C'est un peu comme si on voulait essayer de me convaincre que l'article 17
| de la déclaration des droits de l'homme (sur la propriété) est là pour le
| bien des serfs et des manœuvres.

Et alors, t'es pas convaincu ?

-- Gaby

Erwann ABALEA
2004-11-05 11:09:09 UTC
Permalink
Bonjour,
Post by Jean-Marc Bourguet
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.
Je ne dirais pas cela. Par exemple, les normes X.680 (ASN.1) et X.690
(BER,DER) sont gratuites, alors que la X.509 est payante. Je dirais que la
norme X.509 est de diffusion plus restreinte que les X.680/690.
--
Erwann ABALEA <***@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
Puisque nous n'avons aucun problème traduisant le Suédois au frencece
ne devrait pas être aucun problème pour que vous le fassiezl'autre voie
autour. Sucez sur ceci: www.Hlookslikeshit.xxx.com
-+- H in GNU : Pour qui sont ces suédois qui sucent sur nos sites ? -+-
Jean-Marc Bourguet
2004-11-05 12:42:19 UTC
Permalink
Post by Erwann ABALEA
Bonjour,
Post by Jean-Marc Bourguet
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.
Je ne dirais pas cela. Par exemple, les normes X.680 (ASN.1) et
X.690 (BER,DER) sont gratuites, alors que la X.509 est payante. Je
dirais que la norme X.509 est de diffusion plus restreinte que les
X.680/690.
Je ne vois pas le rapport. Je ne connais en particulier pas la raison
pour laquelle ASN.1 et BER,DER sont gratuites. Parmi les normes
gratuites (ou du moins librement copiables), il y a celle de l'Ada.
Il me semble me souvenir que R. Dewar a raconte sur cla le combat que
ce fut pour y parvenir.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Olivier Dubuisson
2004-11-08 07:42:04 UTC
Permalink
Post by Jean-Marc Bourguet
Post by Erwann ABALEA
Bonjour,
Post by Jean-Marc Bourguet
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Je crois que plus simplement ils financent les normes a diffusions
restreintes par celles a diffusion plus grande.
Je ne dirais pas cela. Par exemple, les normes X.680 (ASN.1) et
X.690 (BER,DER) sont gratuites, alors que la X.509 est payante. Je
dirais que la norme X.509 est de diffusion plus restreinte que les
X.680/690.
Je ne vois pas le rapport. Je ne connais en particulier pas la raison
pour laquelle ASN.1 et BER,DER sont gratuites.
Pour avoir été l'un des acteurs de l'obtention de cette gratuité, je
me permets de répondre. Les Recommandations ASN.1 sont gratuites à
l'UIT-T depuis quelques années :
http://www.itu.int/ITU-T/studygroups/com17/languages/
Ce n'est pas encore le cas à l'ISO, mais la demande est en cours. Pour
rappel, les textes sont communs, donc il n'y a pas de différence entre
la norme ISO et la Recommandation UIT-T.

Toutes les Recommandations de l'UIT-T sur les langages pour les
télécommunications qui relèvent de la Commission d'Etudes 17 sont
gratuites parce que les Membres considèrent que ce sont des briques de
base pour les autres normes et que pour avoir accéder facilement à ces
normes favorisera l'utilisation de ces langages.

Pour ceux qui connaissent, les Recommandations UIT-T des séries X.660
et X.670 sur la notion d'identificateurs d'objet (OID) qui régissent
notamment le répertoire d'OID à http://oid.elibel.tm.fr vont aussi
être prochainement gratuites à l'UIT (mais pas [encore] à l'ISO).
Post by Jean-Marc Bourguet
Parmi les normes
gratuites (ou du moins librement copiables), il y a celle de l'Ada.
Il me semble me souvenir que R. Dewar a raconte sur cla le combat que
ce fut pour y parvenir.
Il est plus difficile d'obtenir la gratuité des normes ISO (ou JTC1)
parce que l'ISO, mais aussi ses représentants nationaux (les "National
Bodies" en anglais) se financent partiellement par la vente de ces
normes. C'est moins le cas de l'UIT qui, en tant qu'agence spécialisée
des Nations-Unies, dispose (au moins) d'un socle de financement par
les pays-Membres. A l'UIT-T actuellement, il suffit d'obtenir l'accord
du directeur du TSB (Bureau de la Normalisation des
Télécommunications) pour donner l'accès gratuit à une Recommandation.

O. Dubuisson
Charlie Gordon
2004-11-08 08:31:16 UTC
Permalink
Post by Olivier Dubuisson
Il est plus difficile d'obtenir la gratuité des normes ISO (ou JTC1)
parce que l'ISO, mais aussi ses représentants nationaux (les "National
Bodies" en anglais) se financent partiellement par la vente de ces
normes. C'est moins le cas de l'UIT qui, en tant qu'agence spécialisée
des Nations-Unies, dispose (au moins) d'un socle de financement par
les pays-Membres. A l'UIT-T actuellement, il suffit d'obtenir l'accord
du directeur du TSB (Bureau de la Normalisation des
Télécommunications) pour donner l'accès gratuit à une Recommandation.
Merci de ces explications.
Je ne suis pas un révolutionnaire exalté, mais je pense que le financement même
partiel par la vente des normes n'est pas un modèle tenable pour les versions
dites électroniques. La protection par des moyens cryptologiques ou
stéganographiques de ces fichiers serait une solution encore pire. Il faut se
résoudre à un financement public. C'est le sens de l'histoire. Au moins cela
favorisera-t-il la diffusion des normes !

Chqrlie.

PS: pour ceux qui ont des doutes, je paye déjà énormément d'impôts ;-)
Jean-Marc Bourguet
2004-11-08 08:35:36 UTC
Permalink
Post by Olivier Dubuisson
Je ne connais en particulier pas la raison pour laquelle ASN.1 et
BER,DER sont gratuites.
Pour avoir été l'un des acteurs de l'obtention de cette gratuité, je
me permets de répondre. Les Recommandations ASN.1 sont gratuites à
Ok, c'est le meme systeme qui permet d'avoir gratuitement les normes
qui sont a la fois ECMA et ISO ou d'avoir POSIX par l'OpenGroup plutot
que l'IEEE: on les optient par l'autre organisme.

Merci.
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Erwann ABALEA
2004-11-08 11:15:53 UTC
Permalink
Bonjour,
Post by Olivier Dubuisson
Toutes les Recommandations de l'UIT-T sur les langages pour les
télécommunications qui relèvent de la Commission d'Etudes 17 sont
gratuites parce que les Membres considèrent que ce sont des briques de
base pour les autres normes et que pour avoir accéder facilement à ces
normes favorisera l'utilisation de ces langages.
Pour ceux qui connaissent, les Recommandations UIT-T des séries X.660
et X.670 sur la notion d'identificateurs d'objet (OID) qui régissent
notamment le répertoire d'OID à http://oid.elibel.tm.fr vont aussi
être prochainement gratuites à l'UIT (mais pas [encore] à l'ISO).
Merci pour ces actions (j'en bénéficie), et ces explications.
--
Erwann ABALEA <***@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
Emmanuel Delahaye
2004-11-08 18:44:30 UTC
Permalink
Post by Erwann ABALEA
Post by Olivier Dubuisson
Toutes les Recommandations de l'UIT-T sur les langages pour les
télécommunications qui relèvent de la Commission d'Etudes 17 sont
gratuites parce que les Membres considèrent que ce sont des briques de
<...>
Post by Erwann ABALEA
Merci pour ces actions (j'en bénéficie), et ces explications.
Pareil.
--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"
Emmanuel Delahaye
2004-11-05 17:55:34 UTC
Permalink
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Faut faire jouer la concurrence. Le même est à 20 USD ici
http://webstore.ansi.org
--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"
Antoine Leca
2004-11-05 18:12:12 UTC
Permalink
Post by Emmanuel Delahaye
Post by Charlie Gordon
Que l'ISO vende l'accès aux pdf un tel prix, ce n'est même pas de
l'escroquerie, c'est de l'extorsion.
Faut faire jouer la concurrence. Le même est à 20 USD ici
http://webstore.ansi.org
$18, sauf imprévu; et je ne les vois pas en train d'ajouter de monstrueux
frais de port!

Comme cela m'a coûté un peu de trouver la page, la voici:

http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+989
9%2D1999



Antoine
Emmanuel Delahaye
2004-11-05 17:54:04 UTC
Permalink
Post by Charlie Gordon
La plupart des programmeurs à qui j'explique qu'il faut payer cher pour avoir
le pdf de la norme tombent des nues !
20 USD, c'est cher ?
Post by Charlie Gordon
En ce qui me concerne, je trouve que c'est une escroquerie.
La baguette à 1 euro aussi ?
--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"
Richard Delorme
2004-11-05 18:11:41 UTC
Permalink
Post by Emmanuel Delahaye
Post by Charlie Gordon
La plupart des programmeurs à qui j'explique qu'il faut payer cher
pour avoir le pdf de la norme tombent des nues !
20 USD, c'est cher ?
Non.
Post by Emmanuel Delahaye
La baguette à 1 euro aussi ?
Ah, là c'est de l'escroquerie... Pour 1 euro, mon boulanger me vend une
flûte toute entière.
--
Richard
Gabriel Dos Reis
2004-11-06 03:55:05 UTC
Permalink
Richard Delorme <***@nospam.fr> writes:

| > La baguette à 1 euro aussi ?
|
| Ah, là c'est de l'escroquerie... Pour 1 euro, mon boulanger me vend
| une flûte toute entière.

Il y a un an et demi, je travaillais dans le sud (Antibes) et la
baguette était effectivement à 1 euro -- le seul endroit où c'était
moins cher, c'était chaz Carrefour... m'enfin bon là on parle plus de
pain.

-- Gaby
Charlie Gordon
2004-11-07 18:23:59 UTC
Permalink
Post by Emmanuel Delahaye
Post by Charlie Gordon
La plupart des programmeurs à qui j'explique qu'il faut payer cher pour avoir
le pdf de la norme tombent des nues !
20 USD, c'est cher ?
La question est plus subtile : qui possède ce document ?
S'il est dans le domaine public, 20 USD pour l'accès au téléchargement, c'est
abusif, mais n'importe quel autre site web peut le mettre à disposition
gratuitement. S'il est copyright ISO, alors comment expliquer le différentiel
monstrueux entre les prix pratiqués par l'ISO et l'ANSI ? Les "réparateurs" à
domicile qui vendent aux personnes trop crédules des téléviseurs pour 10 fois
leur prix habituel en magasin sont indubitablement des escrocs, passibles de la
correctionnelle. En quoi cette situation diffère-t-elle :

18 USD soit 13,88 euros chez l'ANSI :
http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+9899%2D
1999

340 CHF soit 222.70 euros chez l'ISO
http://www.iso.org/iso/en/CombinedQueryResult.CombinedQueryResult?queryString=98
99

un facteur 16 !
Post by Emmanuel Delahaye
Post by Charlie Gordon
En ce qui me concerne, je trouve que c'est une escroquerie.
La baguette à 1 euro aussi ?
Je ne vois là qu'une marge commerciale légèrement plus importante sur un produit
manufacturé courant, rien à voir avec le sujet qui nous occupe.
Pierre Maurette
2004-11-07 17:41:20 UTC
Permalink
"Charlie Gordon" <***@chqrlie.org> a écrit:
[...]
Post by Emmanuel Delahaye
Post by Charlie Gordon
La plupart des programmeurs à qui j'explique qu'il faut payer cher pour
avoir
Post by Emmanuel Delahaye
Post by Charlie Gordon
le pdf de la norme tombent des nues !
20 USD, c'est cher ?
Démarche certainement illégale:
dans Google: "ISO/IEC 9899:1999(E)" filetype:pdf
Vérifié aujourd'hui, le premier lien (même pas en .ru ;-)) est
complet, avec signets fonctionnels.
--
Pierre, pas vraiment voleur, mais pas tout à fait hypocrite
Antoine Leca
2004-11-08 16:02:10 UTC
Permalink
[Anastasie]
Post by Pierre Maurette
Vérifié aujourd'hui, le premier lien (même pas en .ru ;-)) est
complet, avec signets fonctionnels.
En fait, je suis tombé dessus (en tête de liste) vendredi avec un spectre
beaucoup plus large que filetype:pdf et l'entête. Bien évidemment je ne
cherchais pas cela, mais cela montre que ce lien commence à devenir vraiment
très connu, donc monte dans la valorisation google.

Dans le même genre, je l'ai lu en clair sur un forum.


Antoine
Vincent Lefevre
2004-10-31 23:55:32 UTC
Permalink
Post by Gabriel Dos Reis
Du point de vue de la machine abstraite, il n'y a de fonctionnement
indéfini que si l'expression « cond » est vraie. Donc quoi que fasse
ton compilateur, il ne peut introduire de fonctionnement indéfini là
où il n'y en a pas. C'est compilqué pour toi ?
Ce que tu dis donc, c'est qu'à la traduction, une expression constante
ne doit pas être évaluée[*] si on n'est pas sûr qu'elle sera évaluée à
l'exécution. C'est ça? Mais que fais-tu du 6.6#2?

Et quel serait le but de la norme de dire "A constant expression can be
evaluated during translation rather than runtime"?

[*] Évidemment, on ne tient pas compte des optimisations, c'est HS.
Post by Gabriel Dos Reis
| > [#11] The semantic rules for the evaluation of a constant
| > expression are the same as for nonconstant expressions.97)
|
| Je n'ai jamais contredit le #11.
Bah si. Tu crois que tu peux évaluer la condition d'une branche if
même si elle n'est jamais prises.
Ça ne contredit pas le #11: je dis que le 1 / 0 en tant qu'expression
constante s'évalue comme une expression non constante: c'est un
comportement indéfini. Le fait qu'une expression constante (ici 1 / 0)
soit évaluée ou non ne rentre pas dans le cadre du #11.

À moins qu'on ait une interprétation différente du #11...
Post by Gabriel Dos Reis
| Par exemple, dans l'exemple ci-dessus
|
| if (cond)
| x = 1 / 0;
|
| l'évaluation de 1 / 0 génère un comportement indéfini, comme pour
parc que cond est vraie ?
parce qu'elle est évaluée à la traduction (6.6#2).
Post by Gabriel Dos Reis
| une expression non constante. Tout ce que je fais, c'est *ajouter*
| des choses à la traduction, autorisées par le 6.6#2.
Bah non, tu changes la sémantique du programme.
La norme autorise les changements de sémantique (si on peut appeler ça
comme cela): cf la contraction des expressions flottantes constantes,
par exemple. En quoi ce serait différent ici?
Post by Gabriel Dos Reis
| Mais la norme décrit aussi comment se passe la traduction (il peut
| y avoir des diagnostics, etc.).
et as-tu bien lu ce qu'elle décrit ou te contentes-tu de dire qu'elle
décrit comment se passe la traduction.
Si elle ne décrivait pas comment se passe la traduction (entre autres),
comment expliques-tu les diagnostics produits à la traduction?
Post by Gabriel Dos Reis
| (Je n'ai pas accès au compilo, mais de toute façon, que ce soit
| un bug du compilo ou que ce soit parce que la sémantique de C90
| est implémentée, ça ne change pas grand chose pour la compilation
| de MPFR.)
Écoute, si tu écris des programmes buggués, c'est ton problème.
Que ce soit un bug ou non, ça devra être corrigé.
Post by Gabriel Dos Reis
| C'est une possibilité, maintenant qu'on s'est réellement séparé de GMP
| (les développeurs de GMP ne voulaient pas). Mais ça ne résout pas le
| fond du problème, car la macro NAN n'est pas forcément définie. Dans
| ce cas, qu'est-ce que tu suggères pour renvoyer un signaling NaN?
Ce que ton compilateur dit (en supposant qu'il support les sNaN).
N'y a-t-il pas un moyen standard de générer un sNaN si ça existe?
Si ça n'existe pas, on accepte n'importe quel comportement (c'est
alors de la faute de l'utilisateur qui ne doit pas chercher à
utiliser les NaN).
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-01 03:26:59 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Du point de vue de la machine abstraite, il n'y a de fonctionnement
| > indéfini que si l'expression « cond » est vraie. Donc quoi que fasse
| > ton compilateur, il ne peut introduire de fonctionnement indéfini là
| > où il n'y en a pas. C'est compilqué pour toi ?
|
| Ce que tu dis donc, c'est qu'à la traduction, une expression constante
| ne doit pas être évaluée[*] si on n'est pas sûr qu'elle sera évaluée à
| l'exécution. C'est ça?

Non.

Je dis que s'il est nécessaire pour la machine abstraite que
l'expression constant soit évaluée (et la norme dit là où c'est
nécessaire) et si cette évaluation donne un fonctionnement indéfini,
alors effectivement tu as un fonctionnement indéfini. Autrement non,
le compilateur n'a pas le droit d'introduire un fonctionnement
indéfini là où cela n'existe pas.
Voilà.


| Mais que fais-tu du 6.6#2?

La même chose que je fais de la norme.

| Et quel serait le but de la norme de dire "A constant expression can be
| evaluated during translation rather than runtime"?
|
| [*] Évidemment, on ne tient pas compte des optimisations, c'est HS.
|
| > | > [#11] The semantic rules for the evaluation of a constant
| > | > expression are the same as for nonconstant expressions.97)
| > |
| > | Je n'ai jamais contredit le #11.
|
| > Bah si. Tu crois que tu peux évaluer la condition d'une branche if
| > même si elle n'est jamais prises.
|
| Ça ne contredit pas le #11: je dis que le 1 / 0 en tant qu'expression

Si, tu fais abtraction du contexte où cette expression apparaît et
donc tu en déduis du non-sens -- ce n'est pas surprenant, puisque tu
pars d'hypothèses qui n'ont pas de sens.


sizoef (1/ 0); // ce n'est pas un fonctionnement indéfini
if (0)
*(int*)0; // itou

if(0)
1 / 0; // idem

[...]

| > | Par exemple, dans l'exemple ci-dessus
| > |
| > | if (cond)
| > | x = 1 / 0;
| > |
| > | l'évaluation de 1 / 0 génère un comportement indéfini, comme pour
|
| > parc que cond est vraie ?
|
| parce qu'elle est évaluée à la traduction (6.6#2).

Pour la n-ième fois : cette expression fait partie d'une branche
conditionelle et de plus apparaît dans un contexte où une expression
constante n'est pas exigée. Donc, cela n'introduit pas de
fonctionnement indéfini si cette branche n'est jamais prise.

| > | une expression non constante. Tout ce que je fais, c'est *ajouter*
| > | des choses à la traduction, autorisées par le 6.6#2.
|
| > Bah non, tu changes la sémantique du programme.
|
| La norme autorise les changements de sémantique (si on peut appeler ça
| comme cela): cf la contraction des expressions flottantes constantes,
| par exemple. En quoi ce serait différent ici?

La différence ici est l'introduction de fonctionnement indéfini là où
il n'existe pas et où la norme dit explicitement que la sémantique est
la même que celle de runtime.

| > | Mais la norme décrit aussi comment se passe la traduction (il peut
| > | y avoir des diagnostics, etc.).
|
| > et as-tu bien lu ce qu'elle décrit ou te contentes-tu de dire qu'elle
| > décrit comment se passe la traduction.
|
| Si elle ne décrivait pas comment se passe la traduction (entre autres),
| comment expliques-tu les diagnostics produits à la traduction?

La norme n'interdit pas à un compilateur d'émettre des diagnostics sur
des programmes bien formés. Genre

vl.c:1: Veuillez contacter une agence de greffe de cerveau.

| > | (Je n'ai pas accès au compilo, mais de toute façon, que ce soit
| > | un bug du compilo ou que ce soit parce que la sémantique de C90
| > | est implémentée, ça ne change pas grand chose pour la compilation
| > | de MPFR.)
|
| > Écoute, si tu écris des programmes buggués, c'est ton problème.
|
| Que ce soit un bug ou non, ça devra être corrigé.

Ça c'est ton problème -- je ne suis pas l'auteur de MPFF.

| > | C'est une possibilité, maintenant qu'on s'est réellement séparé de GMP
| > | (les développeurs de GMP ne voulaient pas). Mais ça ne résout pas le
| > | fond du problème, car la macro NAN n'est pas forcément définie. Dans
| > | ce cas, qu'est-ce que tu suggères pour renvoyer un signaling NaN?
|
| > Ce que ton compilateur dit (en supposant qu'il support les sNaN).
|
| N'y a-t-il pas un moyen standard de générer un sNaN si ça existe?

F.2.1 Infinities, signed zeros, and NaNs

[#1] This specification does not define the behavior of
signaling NaNs.300) It generally uses the term NaN to
denote quiet NaNs. The NAN and INFINITY macros and the nan
functions in <math.h> provide designations for IEC 60559
NaNs and infinities.

| Si ça n'existe pas, on accepte n'importe quel comportement (c'est
| alors de la faute de l'utilisateur qui ne doit pas chercher à
| utiliser les NaN).

Comme j'ai dit, si tu écris un programme buggué, c'est ton problème.

-- Gaby
Vincent Lefevre
2004-11-03 09:38:16 UTC
Permalink
Post by Gabriel Dos Reis
| La norme autorise les changements de sémantique (si on peut
| appeler ça comme cela): cf la contraction des expressions
| flottantes constantes, par exemple. En quoi ce serait différent
| ici?
La différence ici est l'introduction de fonctionnement indéfini là
où il n'existe pas et
Si la norme autorise l'évaluation d'une expression constante à la
traduction, elle autorise donc un comportement indéfini dans le cas
où une telle évaluation ne serait pas définie par la norme, et ce
comportement indéfini existe donc bien.
Post by Gabriel Dos Reis
où la norme dit explicitement que la sémantique est la même que
celle de runtime.
Elle ne dit pas cela. Elle dit que la sémantique de l'évaluation
d'une expression constante est la même que celle d'une expression
non constante.
Post by Gabriel Dos Reis
| Si ça n'existe pas, on accepte n'importe quel comportement (c'est
| alors de la faute de l'utilisateur qui ne doit pas chercher à
| utiliser les NaN).
Comme j'ai dit, si tu écris un programme buggué, c'est ton problème.
Si tu estimes que le 0.0/0.0 ne doit pas être évalué à la compilation
si la branche n'est pas forcément prise, alors il n'est pas buggé.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-03 14:59:38 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | La norme autorise les changements de sémantique (si on peut
| > | appeler ça comme cela): cf la contraction des expressions
| > | flottantes constantes, par exemple. En quoi ce serait différent
| > | ici?
|
| > La différence ici est l'introduction de fonctionnement indéfini là
| > où il n'existe pas et
|
| Si la norme autorise l'évaluation d'une expression constante à la
| traduction, elle autorise donc un comportement indéfini dans le cas
| où une telle évaluation ne serait pas définie par la norme, et ce
| comportement indéfini existe donc bien.

Bah non.

| > où la norme dit explicitement que la sémantique est la même que
| > celle de runtime.
|
| Elle ne dit pas cela. Elle dit que la sémantique de l'évaluation
| d'une expression constante est la même que celle d'une expression
| non constante.
|
| > | Si ça n'existe pas, on accepte n'importe quel comportement (c'est
| > | alors de la faute de l'utilisateur qui ne doit pas chercher à
| > | utiliser les NaN).
|
| > Comme j'ai dit, si tu écris un programme buggué, c'est ton problème.
|
| Si tu estimes que le 0.0/0.0 ne doit pas être évalué à la compilation
| si la branche n'est pas forcément prise, alors il n'est pas buggé.

Hello? Relis bien ce que j'ai écris en ce qui concerne 0.0/0.0.

* dans C90, 0.0/0.0 n'est pas une expression constante; de plus, sa
valeur n'est pas définie par la norme ;

* dans C99, la valeur de 0.0/0.0 dépend du fait que le compilateur
suppprte IEEE-756 ;

* si cette branche n'est jamais prise, pourquoi te plains-tu ?

-- Gaby
Vincent Lefevre
2004-11-04 21:35:22 UTC
Permalink
Post by Gabriel Dos Reis
| Si tu estimes que le 0.0/0.0 ne doit pas être évalué à la compilation
| si la branche n'est pas forcément prise, alors il n'est pas buggé.
Hello? Relis bien ce que j'ai écris en ce qui concerne 0.0/0.0.
* dans C90, 0.0/0.0 n'est pas une expression constante; de plus, sa
valeur n'est pas définie par la norme ;
Tu n'avais pas dit que dans C90, 0.0/0.0 n'est pas une expression
constante. Cf ci-dessous. Donc, pas de problème pour MPFR.

------------------------------------------------------------------------
| Quelle était la sémantique de C90? C'est peut-être la raison...

Pratiquement rien n'était imposé sur les floating points.
(désolé je n'ai plus de copies de C90 et la seule que l'AFNOR m'a
envoyée a été kidnappée par quelqu'un. J'ai demandé à John la semaine
dernière s'il y avait un diff ou une copie electronique, il m'a
répondu "non").
Le support de fp dans C99 est une nouveau par rapport à C90 et K+R.
------------------------------------------------------------------------
Post by Gabriel Dos Reis
* dans C99, la valeur de 0.0/0.0 dépend du fait que le compilateur
suppprte IEEE-756 ;
Si le compilateur supporte la norme IEEE-754, alors l'utilisateur a le
droit de faire des conversions MPFR NaN -> double. Sinon, il n'en a pas
forcément le droit. Enfin, plus précisément, la conversion MPFR NaN ->
double est définie comme étant le comportement de 0.0/0.0.
Post by Gabriel Dos Reis
* si cette branche n'est jamais prise, pourquoi te plains-tu ?
Parce que MSVC refuse de compiler MPFR, juste parce qu'il y a un 0.0/0.0
quelque part dans le source. C'est un peu bête d'avoir une compilation
qui échoue juste pour cette raison. On l'a finalement contourné (mais ça
pourrait changer dans le futur) par un

static double double_zero = 0.0;
#define DBL_NAN (double_zero/double_zero)
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-05 16:30:46 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | Si tu estimes que le 0.0/0.0 ne doit pas être évalué à la compilation
| > | si la branche n'est pas forcément prise, alors il n'est pas buggé.
|
| > Hello? Relis bien ce que j'ai écris en ce qui concerne 0.0/0.0.
|
| > * dans C90, 0.0/0.0 n'est pas une expression constante; de plus, sa
| > valeur n'est pas définie par la norme ;
|
| Tu n'avais pas dit que dans C90, 0.0/0.0 n'est pas une expression
| constante.

Je t'ai dit que dans C90, pratiquement rien n'est dit sur
l'arithmétique floating-point. Non ?

(De fait, en regardant la version de C++ qui est basée sur C90, il est
claire que 0.0/0.0 N'est PAS une expressions constante).

| Cf ci-dessous. Donc, pas de problème pour MPFR.

Reste dans ton monde autiste, avec ton programme qui ne marche pas.

| ------------------------------------------------------------------------
| | Quelle était la sémantique de C90? C'est peut-être la raison...
|
| Pratiquement rien n'était imposé sur les floating points.
| (désolé je n'ai plus de copies de C90 et la seule que l'AFNOR m'a
| envoyée a été kidnappée par quelqu'un. J'ai demandé à John la semaine
| dernière s'il y avait un diff ou une copie electronique, il m'a
| répondu "non").
| Le support de fp dans C99 est une nouveau par rapport à C90 et K+R.
| ------------------------------------------------------------------------
|
| > * dans C99, la valeur de 0.0/0.0 dépend du fait que le compilateur
| > suppprte IEEE-756 ;
|
| Si le compilateur supporte la norme IEEE-754, alors l'utilisateur a le
| droit de faire des conversions MPFR NaN -> double. Sinon, il n'en a pas
| forcément le droit. Enfin, plus précisément, la conversion MPFR NaN ->
| double est définie comme étant le comportement de 0.0/0.0.
|
| > * si cette branche n'est jamais prise, pourquoi te plains-tu ?
|
| Parce que MSVC refuse de compiler MPFR, juste parce qu'il y a un 0.0/0.0

Alors ramène le problème à l'équipe de MSVC.

| quelque part dans le source. C'est un peu bête d'avoir une compilation
| qui échoue juste pour cette raison. On l'a finalement contourné (mais ça

Ah, je pensais que tu voulais le contourner avec la norme.

| pourrait changer dans le futur) par un
|
| static double double_zero = 0.0;
| #define DBL_NAN (double_zero/double_zero)
|
| --
| Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
| 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
| Work: CR INRIA - computer arithmetic / SPACES project at LORIA
--
Gabriel Dos Reis
***@cs.tamu.edu
Texas A&M University -- Department of Computer Science
301, Bright Building -- College Station, TX 77843-3112
Vincent Lefevre
2004-11-07 13:42:07 UTC
Permalink
Post by Gabriel Dos Reis
| Tu n'avais pas dit que dans C90, 0.0/0.0 n'est pas une expression
| constante.
Je t'ai dit que dans C90, pratiquement rien n'est dit sur
l'arithmétique floating-point. Non ?
Oui, mais si absolument rien n'est dit, c'est du comportement indéfini.
Si tu ne précise pas le "pratiquement rien", je ne peux pas déduire
grand chose.
Post by Gabriel Dos Reis
(De fait, en regardant la version de C++ qui est basée sur C90, il est
claire que 0.0/0.0 N'est PAS une expressions constante).
| Cf ci-dessous. Donc, pas de problème pour MPFR.
Reste dans ton monde autiste, avec ton programme qui ne marche pas.
En quoi il ne marche pas (hors bug du compilo)?
Post by Gabriel Dos Reis
Alors ramène le problème à l'équipe de MSVC.
Je laisse les utilisateurs de MSVC le faire.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-07 17:40:41 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | Tu n'avais pas dit que dans C90, 0.0/0.0 n'est pas une expression
| > | constante.
|
| > Je t'ai dit que dans C90, pratiquement rien n'est dit sur
| > l'arithmétique floating-point. Non ?
|
| Oui, mais si absolument rien n'est dit, c'est du comportement indéfini.
| Si tu ne précise pas le "pratiquement rien", je ne peux pas déduire
| grand chose.

Justement.

| > (De fait, en regardant la version de C++ qui est basée sur C90, il est
| > claire que 0.0/0.0 N'est PAS une expressions constante).
|
| > | Cf ci-dessous. Donc, pas de problème pour MPFR.
|
| > Reste dans ton monde autiste, avec ton programme qui ne marche pas.
|
| En quoi il ne marche pas (hors bug du compilo)?

C'est à toi de le dire : c'est pas moi qui suis venu sur ce groupe
pleurer avec des histoires de 0.0/0.0 qu'un compilo n'accepte pas.

|
| > Alors ramène le problème à l'équipe de MSVC.
|
| Je laisse les utilisateurs de MSVC le faire.

?

-- Gaby
Jean-Marc Bourguet
2004-10-30 17:17:17 UTC
Permalink
Post by Vincent Lefevre
http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_261.htm
[...]
Post by Vincent Lefevre
Une explication?
Qu'est-ce qui n'est pas clair dans le texte auquel tu fais
référence? Je cite la fin:

In general, the interpretation of an expression for
constantness is context sensitive. For any expression which
contains only constants:

* If the syntax or context only permits a constant
expression, the constraints of 6.6#3 and 6.6#4 shall
apply.

* Otherwise, if the expression meets the requirements of
6.6 (including any form accepted in accordance with
6.6#10), it is a constant expression.

* Otherwise it is not a constant expression.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Vincent Lefevre
2004-10-31 23:19:42 UTC
Permalink
Post by Jean-Marc Bourguet
Qu'est-ce qui n'est pas clair dans le texte auquel tu fais
référence?
D'après ce texte, le 1 / 0 dans

return argc > 1 ? 0 : 1 / 0;

est une expression constante, alors qu'Antoine avait dit dans le
message que je donnais en référence:

Non. Parce que la grammaire n'attend pas d'expression constante ici,
et rien (du point de vue de la grammaire) ne différencie cette
expression d'une autre plus compliquée où on comparerait par rapport
à 0.

Il me semble qu'Antoine considérait qu'on avait une expression
Post by Jean-Marc Bourguet
In general, the interpretation of an expression for
constantness is context sensitive. For any expression which
* If the syntax or context only permits a constant
expression, the constraints of 6.6#3 and 6.6#4 shall
apply.
* Otherwise, if the expression meets the requirements of
6.6 (including any form accepted in accordance with
6.6#10), it is a constant expression.
* Otherwise it is not a constant expression.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Jean-Marc Bourguet
2004-11-01 07:32:38 UTC
Permalink
Post by Vincent Lefevre
Post by Jean-Marc Bourguet
Qu'est-ce qui n'est pas clair dans le texte auquel tu fais
référence?
D'après ce texte, le 1 / 0 dans
return argc > 1 ? 0 : 1 / 0;
est une expression constante, alors qu'Antoine avait dit dans le
Non. Parce que la grammaire n'attend pas d'expression constante ici,
et rien (du point de vue de la grammaire) ne différencie cette
expression d'une autre plus compliquée où on comparerait par rapport
à 0.
Il me semble qu'Antoine considérait qu'on avait une expression
Post by Jean-Marc Bourguet
In general, the interpretation of an expression for
constantness is context sensitive. For any expression which
* If the syntax or context only permits a constant
expression, the constraints of 6.6#3 and 6.6#4 shall
apply.
* Otherwise, if the expression meets the requirements of
6.6 (including any form accepted in accordance with
6.6#10), it is a constant expression.
* Otherwise it is not a constant expression.
Pour l'ensemble de l'expression argc > 1 ? 0 : 1 / 0
a/ est-ce que la syntaxe demande une expression
constante? Non.

b/ est-ce que le contexte demande une expression
constante? Peut-être (si le contexte est qu'il faut
retourner un pointeur). Mais dans ce cas, argc n'est pas
une constante donc il y aurait déjà un problème.
Donc ni le contexte ni la syntaxe demande que 1/0 soit une
expression constante. Le premier point ne tient pas.

Est-ce que 1/0 respecte la condition 6.6/4? Non. Le
deuxième point ne tient pas.

Ce n'est donc pas une expression constante.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Vincent Lefevre
2004-11-03 09:28:00 UTC
Permalink
Post by Jean-Marc Bourguet
Post by Vincent Lefevre
Il me semble qu'Antoine considérait qu'on avait une expression
Oups, je voulais dire le point 2 (trop habitué à compter à partir
de 0 :).
Post by Jean-Marc Bourguet
Est-ce que 1/0 respecte la condition 6.6/4? Non. Le
deuxième point ne tient pas.
J'aimerais avoir une explication sur le fait que 6.6#4 n'est pas
respecté.

[#4] Each constant expression shall evaluate to a constant
that is in the range of representable values for its type.

Pour le 1 / 0, l'implémentation a le droit de choisir la sémantique
suivante: le résultat est nul (avec potentiellement un effet de bord).
Avec une telle implémentation, la contrainte est respectée.

Au moins, Gabriel ne m'a pas contredit sur ce point-là. :)
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-03 15:01:04 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@news.bourguet.org>,
| Jean-Marc Bourguet <***@bourguet.org> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > > Il me semble qu'Antoine considérait qu'on avait une expression
| > > constante uniquement dans le point 1 ci-dessous:
|
| Oups, je voulais dire le point 2 (trop habitué à compter à partir
| de 0 :).
|
| > Est-ce que 1/0 respecte la condition 6.6/4? Non. Le
| > deuxième point ne tient pas.
|
| J'aimerais avoir une explication sur le fait que 6.6#4 n'est pas
| respecté.
|
| [#4] Each constant expression shall evaluate to a constant
| that is in the range of representable values for its type.
|
| Pour le 1 / 0, l'implémentation a le droit de choisir la sémantique
| suivante: le résultat est nul (avec potentiellement un effet de bord).
| Avec une telle implémentation, la contrainte est respectée.
|
| Au moins, Gabriel ne m'a pas contredit sur ce point-là. :)

Tu dois lire un autre thread.

-- Gaby
Vincent Lefevre
2004-11-04 21:48:08 UTC
Permalink
Post by Gabriel Dos Reis
| Au moins, Gabriel ne m'a pas contredit sur ce point-là. :)
Tu dois lire un autre thread.
Message-ID: <***@merlin.cs.tamu.edu>

+ Les arguments ont déjà été répétés plusieurs fois, tu veux qu'on les
+ répète encore ? On peut discuter du fait que tu sois incapable de les
+ comprendre, si tu veux.
+ Le bottom line est que les expressions constantes ne sont évaluées par
+ la machine abstraite que lorsque nécessaire.

Tu as bien accepté le fait que le 1 / 0 est une expression constante,
sinon pourquoi parles-tu de l'évaluation d'expressions constantes ici
au lieu de dire simplement que le 1 / 0 n'est pas une expression
constante et expliquer pourquoi?
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-05 16:32:56 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Vincent Lefevre <vincent+***@vinc17.org> writes:
|
| > | Au moins, Gabriel ne m'a pas contredit sur ce point-là. :)
|
| > Tu dois lire un autre thread.
|
| Message-ID: <***@merlin.cs.tamu.edu>
|
| + Les arguments ont déjà été répétés plusieurs fois, tu veux qu'on les
| + répète encore ? On peut discuter du fait que tu sois incapable de les
| + comprendre, si tu veux.
| + Le bottom line est que les expressions constantes ne sont évaluées par
| + la machine abstraite que lorsque nécessaire.
|
| Tu as bien accepté le fait que le 1 / 0 est une expression constante,

Non.

Sinon, il n'y aurait pas ce thread. Je t'ai dit à plusieurs fois
que si « 1 / 0 » aprraît dans un contexte où une expression constante
est requise alors elle est évaluée est cela donne lieu à un
fonctionnement indéfini.

| sinon pourquoi parles-tu de l'évaluation d'expressions constantes ici
| au lieu de dire simplement que le 1 / 0 n'est pas une expression
| constante et expliquer pourquoi?

Parce que tu ne sais pas lire ?

-- Gaby
Vincent Lefevre
2004-11-07 13:45:38 UTC
Permalink
Post by Gabriel Dos Reis
Sinon, il n'y aurait pas ce thread. Je t'ai dit à plusieurs fois
que si « 1 / 0 » aprraît dans un contexte où une expression constante
est requise alors elle est évaluée est cela donne lieu à un
fonctionnement indéfini.
Et si 1 / 0 n'apparaît *pas* dans un contexte où une expression
constante est requise (cas de l'exemple que j'ai donné), tu n'as
pas dit que ce n'était pas une expression constante.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Gabriel Dos Reis
2004-11-07 17:42:28 UTC
Permalink
Vincent Lefevre <vincent+***@vinc17.org> writes:

| Dans l'article <***@merlin.cs.tamu.edu>,
| Gabriel Dos Reis <***@cs.tamu.edu> écrit:
|
| > Sinon, il n'y aurait pas ce thread. Je t'ai dit à plusieurs fois
| > que si « 1 / 0 » aprraît dans un contexte où une expression constante
| > est requise alors elle est évaluée est cela donne lieu à un
| > fonctionnement indéfini.
|
| Et si 1 / 0 n'apparaît *pas* dans un contexte où une expression
| constante est requise (cas de l'exemple que j'ai donné), tu n'as
| pas dit que ce n'était pas une expression constante.

Tu as visiblement un problème.

-- Gaby
Jean-Marc Bourguet
2004-11-03 20:04:07 UTC
Permalink
Post by Vincent Lefevre
Post by Jean-Marc Bourguet
Post by Vincent Lefevre
Il me semble qu'Antoine considérait qu'on avait une expression
Oups, je voulais dire le point 2 (trop habitué à compter à partir
de 0 :).
Post by Jean-Marc Bourguet
Est-ce que 1/0 respecte la condition 6.6/4? Non. Le
deuxième point ne tient pas.
J'aimerais avoir une explication sur le fait que 6.6#4 n'est pas
respecté.
[#4] Each constant expression shall evaluate to a constant
that is in the range of representable values for its type.
Le résultat de la division par zéro est un UB, ce n'est pas
ce que j'appelle une valeur représentable.

De toute manière si tu dis que l'implémentation peut définir
cet UB comme étant la valeur 0 (je préfèrerais INT_MAX mais
bon...), il n'y a dans ce cas de toute façon plus de
problèmes.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Vincent Lefevre
2004-11-04 21:11:19 UTC
Permalink
Post by Jean-Marc Bourguet
Post by Vincent Lefevre
J'aimerais avoir une explication sur le fait que 6.6#4 n'est pas
respecté.
[#4] Each constant expression shall evaluate to a constant
that is in the range of representable values for its type.
Le résultat de la division par zéro est un UB, ce n'est pas
ce que j'appelle une valeur représentable.
L'implémentation a le droit de faire ce qu'elle veut quand il y a
UB, y compris choisir une valeur particulière fixée représentable.
Dans ce cas, l'expression constante en question s'évalue bien en
une constante représentable (même si ce n'est pas requis par la
norme).
Post by Jean-Marc Bourguet
De toute manière si tu dis que l'implémentation peut définir
cet UB comme étant la valeur 0 (je préfèrerais INT_MAX mais
bon...), il n'y a dans ce cas de toute façon plus de
problèmes.
L'implémentation pourrait très bien choisir la valeur 0 (ou INT_MAX
si tu préfères) *et* positionner un flag provoquant une exception à
un moment particulier. Dans ce cas, il y a problème.
--
Vincent Lefèvre <***@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Continuer la lecture sur narkive:
Loading...