In article ,
Jean-Marc Bourguet wrote:Manuel Pégourié-Gonnard writes:1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
In article <pxbd2g0k1tt.fsf@bourguet.org>,
Jean-Marc Bourguet <jm@bourguet.org> wrote:
Manuel Pégourié-Gonnard <mpg@elzevir.fr> writes:
1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
In article ,
Jean-Marc Bourguet wrote:Manuel Pégourié-Gonnard writes:1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
Marc Espie scripsit :In article ,
Jean-Marc Bourguet wrote:Manuel Pégourié-Gonnard writes:1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Manuel.
Marc Espie scripsit :
In article <pxbd2g0k1tt.fsf@bourguet.org>,
Jean-Marc Bourguet <jm@bourguet.org> wrote:
Manuel Pégourié-Gonnard <mpg@elzevir.fr> writes:
1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Manuel.
Marc Espie scripsit :In article ,
Jean-Marc Bourguet wrote:Manuel Pégourié-Gonnard writes:1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Manuel.
Manuel Pégourié-Gonnard écrivit :Quelques petites questions sur les types entiers :
1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
Il y a deux questions entremêlées :
- le compilateur supporte-t-il long ?
- le type long fait-il au moins 32 bits ?
Manuel Pégourié-Gonnard écrivit :
Quelques petites questions sur les types entiers :
1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
Il y a deux questions entremêlées :
- le compilateur supporte-t-il long ?
- le type long fait-il au moins 32 bits ?
Manuel Pégourié-Gonnard écrivit :Quelques petites questions sur les types entiers :
1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?
Il y a deux questions entremêlées :
- le compilateur supporte-t-il long ?
- le type long fait-il au moins 32 bits ?
Marc Espie scripsit :C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Marc Espie scripsit :
C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Marc Espie scripsit :C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Quand on analyse les raisons du non-passage de C90 à C99, on peut
repérer plusieurs cas :
- les nouveautés techniques de C99 n'étaient pas suffisantes pour
justifier les investissements ;
- la conformité à C99 implique des inconvénients réels ;
- la latence, qui s'estompe avec le temps.
Des exemples du premier cas pourrait être le cas de Microsoft, ou le cas
de nombreux projets et bibliothèques (qui ont décidés de standardiser
sur C89 plutôt que sur C99 pour pouvoir atteindre une base plus large de
« clients » ; autrement dit, la « pression du marché » eb faveur de C99
a été largement inférieure à celle de C89).
Des exemples du deuxième pourrait être le refus que long ne soit plus le
type des entiers de plus grande magnitude (pour mémoire : cet argument
fut utilise contre C99 au début, mais s'est largement estompé depuis) ;
ou la nécessité de disposer de certaines fonctionnalités «gênantes»
comme les tableaux variables ou les entiers sur 64 bits (qui gênent les
plus petites implémentations, machines 8 ou 16 bits).
Par latence, je veux dire que l'adoption d'une norme prend toujours du
temps ; beaucoup de temps : au minimum le temps que les vendeurs de
compilateurs implémentent la norme, puis (strictement séquentiel) que
les programmeurs utilisent les nouvelles versions des compilateurs. La
situation est proche de celle qui a prévalu entre Fortran 77 et Fortran
90 (et auparavant entre Fortran IV et F77). Autrement dit, la latence
est un phénomène non négligeable. Cela dit, on est maintenant en 2014,
C99 a été révisé substantiellement (et à mon sens positivement pour
faciliter les problèmes de transition) en 2011, donc on devrait
commencer à voir le bout du tunnel...
compilateurs ! Et donc que les programmes « C99 » qui utilisent
aveuglement long long pour manipuler des quantités entières, histoire
d'être « le plus portable possible », vont clairement rater la cible.
Quand on analyse les raisons du non-passage de C90 à C99, on peut
repérer plusieurs cas :
- les nouveautés techniques de C99 n'étaient pas suffisantes pour
justifier les investissements ;
- la conformité à C99 implique des inconvénients réels ;
- la latence, qui s'estompe avec le temps.
Des exemples du premier cas pourrait être le cas de Microsoft, ou le cas
de nombreux projets et bibliothèques (qui ont décidés de standardiser
sur C89 plutôt que sur C99 pour pouvoir atteindre une base plus large de
« clients » ; autrement dit, la « pression du marché » eb faveur de C99
a été largement inférieure à celle de C89).
Des exemples du deuxième pourrait être le refus que long ne soit plus le
type des entiers de plus grande magnitude (pour mémoire : cet argument
fut utilise contre C99 au début, mais s'est largement estompé depuis) ;
ou la nécessité de disposer de certaines fonctionnalités «gênantes»
comme les tableaux variables ou les entiers sur 64 bits (qui gênent les
plus petites implémentations, machines 8 ou 16 bits).
Par latence, je veux dire que l'adoption d'une norme prend toujours du
temps ; beaucoup de temps : au minimum le temps que les vendeurs de
compilateurs implémentent la norme, puis (strictement séquentiel) que
les programmeurs utilisent les nouvelles versions des compilateurs. La
situation est proche de celle qui a prévalu entre Fortran 77 et Fortran
90 (et auparavant entre Fortran IV et F77). Autrement dit, la latence
est un phénomène non négligeable. Cela dit, on est maintenant en 2014,
C99 a été révisé substantiellement (et à mon sens positivement pour
faciliter les problèmes de transition) en 2011, donc on devrait
commencer à voir le bout du tunnel...
compilateurs ! Et donc que les programmes « C99 » qui utilisent
aveuglement long long pour manipuler des quantités entières, histoire
d'être « le plus portable possible », vont clairement rater la cible.
Quand on analyse les raisons du non-passage de C90 à C99, on peut
repérer plusieurs cas :
- les nouveautés techniques de C99 n'étaient pas suffisantes pour
justifier les investissements ;
- la conformité à C99 implique des inconvénients réels ;
- la latence, qui s'estompe avec le temps.
Des exemples du premier cas pourrait être le cas de Microsoft, ou le cas
de nombreux projets et bibliothèques (qui ont décidés de standardiser
sur C89 plutôt que sur C99 pour pouvoir atteindre une base plus large de
« clients » ; autrement dit, la « pression du marché » eb faveur de C99
a été largement inférieure à celle de C89).
Des exemples du deuxième pourrait être le refus que long ne soit plus le
type des entiers de plus grande magnitude (pour mémoire : cet argument
fut utilise contre C99 au début, mais s'est largement estompé depuis) ;
ou la nécessité de disposer de certaines fonctionnalités «gênantes»
comme les tableaux variables ou les entiers sur 64 bits (qui gênent les
plus petites implémentations, machines 8 ou 16 bits).
Par latence, je veux dire que l'adoption d'une norme prend toujours du
temps ; beaucoup de temps : au minimum le temps que les vendeurs de
compilateurs implémentent la norme, puis (strictement séquentiel) que
les programmeurs utilisent les nouvelles versions des compilateurs. La
situation est proche de celle qui a prévalu entre Fortran 77 et Fortran
90 (et auparavant entre Fortran IV et F77). Autrement dit, la latence
est un phénomène non négligeable. Cela dit, on est maintenant en 2014,
C99 a été révisé substantiellement (et à mon sens positivement pour
faciliter les problèmes de transition) en 2011, donc on devrait
commencer à voir le bout du tunnel...
compilateurs ! Et donc que les programmes « C99 » qui utilisent
aveuglement long long pour manipuler des quantités entières, histoire
d'être « le plus portable possible », vont clairement rater la cible.
Si j'etais mauvaise langue, je dirais bien que Microsoft
est LE vendeur qui n'en a eu rien a foutre, vu que la portabilite sur des
machines exotiques etait le cadet de leurs soucis (comme par hasard, maintenant
qu'ils mettent des billes dans les tablettes, ils sont les premiers a pousser
pour, par exemple, C++2014...)
La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Si j'etais mauvaise langue, je dirais bien que Microsoft
est LE vendeur qui n'en a eu rien a foutre, vu que la portabilite sur des
machines exotiques etait le cadet de leurs soucis (comme par hasard, maintenant
qu'ils mettent des billes dans les tablettes, ils sont les premiers a pousser
pour, par exemple, C++2014...)
La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Si j'etais mauvaise langue, je dirais bien que Microsoft
est LE vendeur qui n'en a eu rien a foutre, vu que la portabilite sur des
machines exotiques etait le cadet de leurs soucis (comme par hasard, maintenant
qu'ils mettent des billes dans les tablettes, ils sont les premiers a pousser
pour, par exemple, C++2014...)
La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Marc Espie écrivit :La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads (et à
moindre titre les objets «atomiques») était plutôt du niveau de qualité
«beta», avec même des lacunes plutôt béantes (DR416) et des erreurs
(DR414, DR453) qui montrent que la relecture fut... hâtive !
http://www.open-std.org/jtc1/sc22/wg14/www/docs/summary.htm
Marc Espie écrivit :
La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads (et à
moindre titre les objets «atomiques») était plutôt du niveau de qualité
«beta», avec même des lacunes plutôt béantes (DR416) et des erreurs
(DR414, DR453) qui montrent que la relecture fut... hâtive !
http://www.open-std.org/jtc1/sc22/wg14/www/docs/summary.htm
Marc Espie écrivit :La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... c'est
effectivement un changement extremement positif, puisqu'on a enfin
une description qui colle avec la realite.
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads (et à
moindre titre les objets «atomiques») était plutôt du niveau de qualité
«beta», avec même des lacunes plutôt béantes (DR416) et des erreurs
(DR414, DR453) qui montrent que la relecture fut... hâtive !
http://www.open-std.org/jtc1/sc22/wg14/www/docs/summary.htm
In article <lkt028$s2s$,
Antoine Leca wrote:La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... [...]
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads
[...] était plutôt du niveau de qualité «beta», [...]
Je te trouve bien mechant. C'est quand meme un changement complet par
rapport a la description precedente a base de sequence point. Il eut ete
extrememement surprenant que ca soit parfait du 1e coup.
In article <lkt028$s2s$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... [...]
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads
[...] était plutôt du niveau de qualité «beta», [...]
Je te trouve bien mechant. C'est quand meme un changement complet par
rapport a la description precedente a base de sequence point. Il eut ete
extrememement surprenant que ca soit parfait du 1e coup.
In article <lkt028$s2s$,
Antoine Leca wrote:La plus grosse avancee de C11, c'est de changer le modele de
description pour prendre enfin en compte le multithread... [...]
Oui, enfin c'est le changement qui préfigure l'avenir... parce que quand
on se penche sur la liste des DR4xx (rapport de bogues concernant C11),
on voit que le texte de la norme en ce qui concerne les threads
[...] était plutôt du niveau de qualité «beta», [...]
Je te trouve bien mechant. C'est quand meme un changement complet par
rapport a la description precedente a base de sequence point. Il eut ete
extrememement surprenant que ca soit parfait du 1e coup.
In article <lkm9oi$130h$,
Manuel Pégourié-Gonnard wrote:Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Parfois, il y a des utilisateurs qu'il faut ignorer !
[...]
Sans plus de details, si tu as des utilisateurs qui ont ce genre de soucis,
il *faut* leur demander qu'est-ce qu'ils font qui fait que ca ne marche
pas...
In article <lkm9oi$130h$1@talisker.lacave.net>,
Manuel Pégourié-Gonnard <mpg@elzevir.fr> wrote:
Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Parfois, il y a des utilisateurs qu'il faut ignorer !
[...]
Sans plus de details, si tu as des utilisateurs qui ont ce genre de soucis,
il *faut* leur demander qu'est-ce qu'ils font qui fait que ca ne marche
pas...
In article <lkm9oi$130h$,
Manuel Pégourié-Gonnard wrote:Par exemple, C99 spécifie long long qui doit faire au moins 64 bits de
large sauf erreur, mais j'ai reçu des plaintes d'utilisateurs chez qui
ça ne passe pas.
Parfois, il y a des utilisateurs qu'il faut ignorer !
[...]
Sans plus de details, si tu as des utilisateurs qui ont ce genre de soucis,
il *faut* leur demander qu'est-ce qu'ils font qui fait que ca ne marche
pas...
Manuel Pégourié-Gonnard écrivit :J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Je vois bien l'idée, mais je ne suis pas d'accord avec le raisonnement.
Celui qui a décidé de passer outre C99 et C11 n'a pas obligatoirement
vocation à être conforme à la norme C90 ; en fait, il démontre plutôt /a
priori/ qu'il n'est pas intéressé par le respect des normes ; ce qui est
en soi un problème pour toi : comme l'explique par ailleurs Marc, il y a
un moment où tu vas être obligé de mettre une barrière, probablement sur
des critères extérieurs (coûts/bénéfice ?)
Manuel Pégourié-Gonnard écrivit :
J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Je vois bien l'idée, mais je ne suis pas d'accord avec le raisonnement.
Celui qui a décidé de passer outre C99 et C11 n'a pas obligatoirement
vocation à être conforme à la norme C90 ; en fait, il démontre plutôt /a
priori/ qu'il n'est pas intéressé par le respect des normes ; ce qui est
en soi un problème pour toi : comme l'explique par ailleurs Marc, il y a
un moment où tu vas être obligé de mettre une barrière, probablement sur
des critères extérieurs (coûts/bénéfice ?)
Manuel Pégourié-Gonnard écrivit :J'avais dans l'idée que plus on remonte loin dans les versions de
la norme, plus on a de chances que ça soit effectivement supporté
partout, d'où la référence à C89.
Je vois bien l'idée, mais je ne suis pas d'accord avec le raisonnement.
Celui qui a décidé de passer outre C99 et C11 n'a pas obligatoirement
vocation à être conforme à la norme C90 ; en fait, il démontre plutôt /a
priori/ qu'il n'est pas intéressé par le respect des normes ; ce qui est
en soi un problème pour toi : comme l'explique par ailleurs Marc, il y a
un moment où tu vas être obligé de mettre une barrière, probablement sur
des critères extérieurs (coûts/bénéfice ?)