OVH Cloud OVH Cloud

Contigüité des éléments d'un `std::vector´

167 réponses
Avatar
drkm
Je viens de tomber sur un message de Michel, d'il y a un mois, dont
voici un extrait :

> From: "Michel Michaud" <mm@gdzid.com>
> Subject: Re: buffer et std::vector<char> passage de l'un a l'autre
> Message-ID: <pQnHa.816$5d.225371@news20.bellglobal.com>
> Date: Mon, 16 Jun 2003 14:16:52 -0400

> Avec

> vector<char> v(taille);

> &v[0] est un char* qui peut être passé aux fonctions attendant un
> char[]/char*. La norme ne dit pas explicitement que les char sont
> contigus, mais c'est un fait et il y a une correction à la norme qui
> l'indique aussi.

J'avais toujours entendu dire que la contigüités des éléments d'un
vecteur était garantie. Apparemment non. Pour ce qui est de la
correction à la norme, je suppose que tu parlais d'un DR. En as-tu la
référence, stp ?

--drkm

10 réponses

Avatar
Arnaud Meurgues
Gabriel Dos Reis wrote:

| calviniste. Il faut interdire ce qui est Mal (par exemple, modifier
| l'indice d'une boucle for dans le corps de la boucle).
Que dire d'Ada?


Ada a puisé ses bases dans Pascal, il me semble. Ce ne serait pas
étonnant d'y voir des similitudes.

| Le C vient d'une culture beaucoup plus pragmatique.
Bof.


Tu ne trouves pas ?

Arnaud

Avatar
Christophe Lephay
"Arnaud Meurgues" a écrit dans le message
de news:3f15630e$0$18434$
wrote:
Dans la pratique, ce qui est resté dans son for intérieur n'a pas
existé.
Transposé en langage informatique, ça veut dire que tu considère que

n'existe que le comportement observable et pas les détails
d'implémentation.


La transposition en "langage informatique" ne me parait pas particulièrement
pertinente. La pensée, la reflexion, est quelque chose de très mobile et,
d'une manière générale, un individu n'a pas les idées arretées tant qu'il ne
les a pas exprimer (un individu ouvert s'efforce de ne pas les arreter alors
même qu'il les a exprimées, bien que celà aille un peu à l'encontre du
principe de l'expression, qui veut bel et bien que l'on "arrete" une idée si
on veut lui donner un tant soit peu de cohérence).

Chris


Avatar
Christophe Lephay
"Gabriel Dos Reis" a écrit dans le message de
news:
Arnaud Meurgues writes:
| En fait, il suffirait de savoir si les protagonistes de l'histoire
| (Stroustrup, Stepanov) sont d'accord avec cette version des faits et
| que la seule raison pour laquelle ils ont fait croire que l'intention
| y était était de tromper l'ISO.

Stroustrup lit régulièrement (Sans répondre directement) ce groupe. Je
ne sais pas s'il répondra.


lol, j'en doute :)

Chris

Avatar
Alain Naigeon
"Gabriel Dos Reis" a écrit dans le message
news:


Tu n'aimes pas les citations des gens célèbres, mais la meilleure
réponse que je peux te donner c'est de regarder « the Design and
Evolution of C++ », chapitre 3 (si j'ai bonne mémoire) vers la fin,
sur la syntaxe et le résultat de diverses tentatives.


Je n'aime pas les citations de gens célèbres lorsqu'elles ressemblent
à un argument d'autorité... mais la référence que tu donnes est
certainement une bonne lecture (je ne l'ai pas, celui-là).


Attention : je n'ai jamais entendu les acteurs actifs de l'évolution
de C++ dire que C est mauvais. Au contraire, j'ai souvent vu que la
question de compatibilité avec le C a toujours été prise très au sérieux.


Bon, peut-être parce que, vu l'importance du marché C, on ne pouvait
se permettre de s'opposer frontalement sauf à condamner le langage
dès sa naissance.
Ou alors parce que C++ a été conçu pour ajouter un paradigme nouveau,
proposé en plus de ce que C savait déjà faire. J'ai cru comprendre que
c'est plutôt ça que tu me dis.

Concernant une réaction un peu épidermique par rapport à un langage,
j'ai envie d'ajouter : le groupe semble fréquenté à 95% par des
professionnels.
Donc, le choix d'un langage s'effectue, en principe, sur des bases
rationnelles.
(disponibilité de compétences dans ce langage, nature du projet, etc)
En pratique des éléments peuvent perturber cette rationalité : un existant,
une exigence du client, etc. Pour une programmation occasionnelle ou
amateur il y a peu de contraintes, et le goût personnel joue beaucoup.
Ceci dit, toutes choses égales par ailleurs, je suis sûr que même un "pro"
programme mieux dans un langage qu'il aime...

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

Avatar
Christophe Lephay
a écrit dans le message de
news:
Il y a beaucoup de problèmes avec C++, mais les plus grands viennent
prèsque tous de l'héritage C. En revanche, les plus grands sont tels
qu'on aurait du mal à s'en défaire : le syntaxe des declarations, des
conversions implicites dans tous les sens...


Peut-être que les plus grands problèmes du C++ viennent de l'héritage du C,
mais, d'un autre coté, les plus grands problèmes du C n'existent plus en C++
;)

Chris

Avatar
Gabriel Dos Reis
"Alain Naigeon" writes:

| "Gabriel Dos Reis" a écrit dans le message
| news:
|
| >
| > Tu n'aimes pas les citations des gens célèbres, mais la meilleure
| > réponse que je peux te donner c'est de regarder « the Design and
| > Evolution of C++ », chapitre 3 (si j'ai bonne mémoire) vers la fin,
| > sur la syntaxe et le résultat de diverses tentatives.
|
| Je n'aime pas les citations de gens célèbres lorsqu'elles ressemblent
| à un argument d'autorité... mais la référence que tu donnes est
| certainement une bonne lecture (je ne l'ai pas, celui-là).

c'est une référence d'autorité.

[...]

| Ou alors parce que C++ a été conçu pour ajouter un paradigme nouveau,
| proposé en plus de ce que C savait déjà faire. J'ai cru comprendre que
| c'est plutôt ça que tu me dis.

Oui.

| Concernant une réaction un peu épidermique par rapport à un langage,
| j'ai envie d'ajouter : le groupe semble fréquenté à 95% par des
| professionnels.
| Donc, le choix d'un langage s'effectue, en principe, sur des bases
| rationnelles.

Je n'en suis pas certain. Surtout en principe.

-- Gaby
Avatar
Gabriel Dos Reis
Arnaud Meurgues writes:

| Gabriel Dos Reis wrote:
|
| > | calviniste. Il faut interdire ce qui est Mal (par exemple, modifier
| > | l'indice d'une boucle for dans le corps de la boucle).
| > Que dire d'Ada?
|
| Ada a puisé ses bases dans Pascal, il me semble. Ce ne serait pas
| étonnant d'y voir des similitudes.

qu'en est-il de la culture pramatique alors ?

| > | Le C vient d'une culture beaucoup plus pragmatique.
| > Bof.
|
| Tu ne trouves pas ?

Je trouve que les fondements de Pascal ou d'Ada sont tout aussi
pragmatiques.

-- Gaby
Avatar
Alain Naigeon
"Arnaud Meurgues" a écrit dans le message
news: 3f164ef1$0$23551$

Alain Naigeon wrote:

Et l'on se rapproche du Pascal qui interdit ce qui est jugé mauvais par
le concepteur du langage.
Si seulement on s'en rapprochait !



C'est une question de goût. Un prof de fac expliquait que ce n'était pas
pour rien que Pascal avait été inventé par un suisse, de tradition
calviniste. Il faut interdire ce qui est Mal


Amusant ;-) J'ai de bons amis là-bas, mais quand j'y suis je
sens toujours coupable, sans savoir exactement de quoi :-)
Je crois qu'un jour je les ai choqués, en demandant si, chez
eux, les condamnés à mort tiraient eux-mêmes sur le levier
de la guillotine...

(par exemple, modifier
l'indice d'une boucle for dans le corps de la boucle).


Là tu fais fort, ça me paraît effectivement scabreux.
J'en connais même qui parleraient de machiavélisme ;-)

Le C vient d'une culture beaucoup plus pragmatique.


Je n'aime pas trop ce mot, ou plutôt l'absence de rigueur
qu'il recouvre souvent. Qu'est-ce qui empêche de définir en
C un style de programmation, et des règles très précises pour
aboutir à quelque chose d'efficace et de raisonnablement sûr ?

L'argument du pragmatisme est utilisé pour justifier certains
aspects permissifs de C++ ; le problème, c'est qu'il est aussi
utilisé par certains pour refuser le passage à C++.
Ce qu'il faudrait démontrer, c'est que C++ constitue un point
moyen justifiable selon des critères explicites et objectifs.

Le simple refus de privilégier un paradigme n'est pas en soi
une position claire. Dans une constitution, il y a un préambule
qui en définit l'esprit général, et qui guide les gens pour des
décisions difficiles. J'ai bien peur que certains débats (réticences
et retard à introduire "bool", par exemple !!) prouvent qu'une telle
ligne directrice fait cruellement défaut.

Je ne connais pas Modula-2. Mais Ada n'a-t-il pas nombre des qualités
que tu attends d'un langage ?


Oui, je l'avais essayé du temps où j'avais accès à un compilateur,
et ça m'avait pas mal plu. Mais c'était juste une petite exploration.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France



Avatar
Gabriel Dos Reis
Arnaud Meurgues writes:

| Gabriel Dos Reis wrote:
|
| > Comme dirait Steve Clamage, C++ te protège de Murphy, pas de Machiavel.
|
| :-D J'aime beaucoup.
|
| Mais j'ai un doute sur le réalisme de cette déclaration.

en quel sens ?

| Dans le cas
| cité par Jean-Marc, par exemple, sur les passage de paramètres avec
| des auto_ptr, j'y vois du machiavelisme de C++ et non une protection
| contre Murphy...

explique un peu plus.

| À moins que Clamage ait voulu distinguer le langage syntaxique de la
| bibliothèque ?

Steve l'attribue lui-même à Damian Conway (que je ne connais pas), et
il explique ce qu'il veut dire par là :

http://groups.google.fr/groups?q=Clamage+%2B+machiavelli&hl=fr&lr=&ie=UTF-8&selm=6jh1qv%24eot%40netlab.cs.rpi.edu&rnum=2
http://groups.google.fr/groups?q=Clamage+%2B+machiavelli&hl=fr&lr=&ie=UTF-8&selm=8v1f5t0qmi8u0tvoo37f16kjdsrg24pumq%404ax.com&rnum=3

En ce qui concerne la phrase BS, il suffit de lire D&E ;-)

-- Gaby
Avatar
Gabriel Dos Reis
"Christophe Lephay" writes:

| Dans le deuxième cas, quand on voit avec quel soin (pointillisme ?) chaque
| mot est discuté pendant de nombreuses heures par le comité (à ce qu'il
| semble), on voit mal comment celà aurait pu passer à travers et être oublié.

alors pourquoi le comité a-t-il mis enplace le processus de DR ?
Regarde la liste des DRs tant core que bibliothèque.

http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html

| Je trouve le premier cas plus crédible,

Je trouve surtout que ces deux catégorisations reflètent une ignorance
profonde du processus de normalisation, en tout cas dans WG21.

-- Gaby