J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Le 15 juin 2009, Marc Boyer a écrit :J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
Le 15 juin 2009, Marc Boyer a écrit :
J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
Le 15 juin 2009, Marc Boyer a écrit :J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
Le 15 juin 2009, Marc Boyer a écrit :J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
Le 15 juin 2009, Marc Boyer a écrit :
J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
Le 15 juin 2009, Marc Boyer a écrit :J'ai raté un truc ? Ton argument ne tient pas: à tout type
de base, on peut associer un n, ok, mais on reste dénombrable.
Rajoute encore un n, et ça reste dénombrable. Ainsi de suite.
Certes, j'ai parlé un peu vite, mais le « ainsi de suite » me paraît un
peu rapide aussi. C'est sûr que N^p est dénombrable, mais {N^p / p entier}
me paraît moins évident !
In article <h0qqis$tcl$,
Antoine Leca wrote:Que veut dire « tous » ? Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, mais cela fait trop longtemps que ce
sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
N'importe quoi.
Le C est un langage, les types du C ont une expression, sous forme de chaine
de caracteres explicitant le type. Ils sont donc forcement denombrables...
Oui, il y a des trucs marrants en theorie des types. Mais il faut du typage
automatique pour sortir des trucs exprimables par le systeme de types... et
c'est bien le souci, en general.
In article <h0qqis$tcl$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
Que veut dire « tous » ? Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, mais cela fait trop longtemps que ce
sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
N'importe quoi.
Le C est un langage, les types du C ont une expression, sous forme de chaine
de caracteres explicitant le type. Ils sont donc forcement denombrables...
Oui, il y a des trucs marrants en theorie des types. Mais il faut du typage
automatique pour sortir des trucs exprimables par le systeme de types... et
c'est bien le souci, en general.
In article <h0qqis$tcl$,
Antoine Leca wrote:Que veut dire « tous » ? Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, mais cela fait trop longtemps que ce
sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
N'importe quoi.
Le C est un langage, les types du C ont une expression, sous forme de chaine
de caracteres explicitant le type. Ils sont donc forcement denombrables...
Oui, il y a des trucs marrants en theorie des types. Mais il faut du typage
automatique pour sortir des trucs exprimables par le systeme de types... et
c'est bien le souci, en general.
Le 11 juin 2009, Antoine Leca a écrit :Le 11/06/2009 08:14Z, Lucas Levrel écrivit :Ah, l'ambiguïté entre valeur et adresse d'un pointeur...
Personnellement je ne vois aucune ambiguïté.
Je parlais de l'ambiguïté du vocabulaire, pas de la notion bien sûr.
Car la valeur du pointeur est l'adresse de l'objet pointé.
Donc quand je demande si « table[i] existe en mémoire », je suis
trop succinct, car ça peut vouloir dire :
1) est-ce que la valeur de table[i] est une adresse qui existe
ou
2) est-ce que l'objet table[i] est stocké en mémoire
Par ailleurs, le pointeur est lui-même un objet, et comme tout objet
possède son adresse propre.
C'est bien de ça que je parlais.
Je crois que c'est assez clair à la
lumière de la deuxième question de mon post initial, où je parlais de
tableaux dynamiques pour lesquels on crée d'abord int *table[3], puis on
fait pointer chaque table[i] vers un int[4].
Je sais que table[i] est l'adresse d'une zone mémoire allouée,
c'est celle de la valeur table[i][0].
Pour la n-ième fois, je ne comprends pas ta notation.
table[i] == &(table[i][0])
Non ?
le compilateur réserve-t-il trois zones de mémoire pour stocker table[0],
table[1] et table[2] ?
Il réserve une seule zone de 12 int. On peut ensuite voir cela comme
trois zones, mais il n'en reste pas moins que les zones sont contiguës.
Là encore, je ne parlais pas de ce sur quoi pointent les table[i], à
savoir des zones de 4 int, mais des table[i] eux-mêmes.
Mais bon, cela c'est la salade interne des compilateurs, ce n'est pas
important.
C'est ce que je cherche à comprendre, par exemple quand je demande si ça
aurait un intérêt (en vitesse d'exécution) de déclarer int table[12] et de
gérer moi-même l'indexation (voir la Q2 de mon post initial).
Par exemple, que verrait-on si on lisait le code assembleur
produit par le compilo ?
xycc -S > tes_yeux
~> xycc
bash: xycc: command not found
Tous les types du C existent-ils ?
Où ?
Tu sépares les phrases... Dans le code assembleur produit !
Que veut dire « tous » ?
Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, [...]
Y'a des chances, vu qu'on peut mettre autant de [n] qu'on veut avec n
entier strictement positif quelconque, ça fait un beau N^N !
Le 11 juin 2009, Antoine Leca a écrit :
Le 11/06/2009 08:14Z, Lucas Levrel écrivit :
Ah, l'ambiguïté entre valeur et adresse d'un pointeur...
Personnellement je ne vois aucune ambiguïté.
Je parlais de l'ambiguïté du vocabulaire, pas de la notion bien sûr.
Car la valeur du pointeur est l'adresse de l'objet pointé.
Donc quand je demande si « table[i] existe en mémoire », je suis
trop succinct, car ça peut vouloir dire :
1) est-ce que la valeur de table[i] est une adresse qui existe
ou
2) est-ce que l'objet table[i] est stocké en mémoire
Par ailleurs, le pointeur est lui-même un objet, et comme tout objet
possède son adresse propre.
C'est bien de ça que je parlais.
Je crois que c'est assez clair à la
lumière de la deuxième question de mon post initial, où je parlais de
tableaux dynamiques pour lesquels on crée d'abord int *table[3], puis on
fait pointer chaque table[i] vers un int[4].
Je sais que table[i] est l'adresse d'une zone mémoire allouée,
c'est celle de la valeur table[i][0].
Pour la n-ième fois, je ne comprends pas ta notation.
table[i] == &(table[i][0])
Non ?
le compilateur réserve-t-il trois zones de mémoire pour stocker table[0],
table[1] et table[2] ?
Il réserve une seule zone de 12 int. On peut ensuite voir cela comme
trois zones, mais il n'en reste pas moins que les zones sont contiguës.
Là encore, je ne parlais pas de ce sur quoi pointent les table[i], à
savoir des zones de 4 int, mais des table[i] eux-mêmes.
Mais bon, cela c'est la salade interne des compilateurs, ce n'est pas
important.
C'est ce que je cherche à comprendre, par exemple quand je demande si ça
aurait un intérêt (en vitesse d'exécution) de déclarer int table[12] et de
gérer moi-même l'indexation (voir la Q2 de mon post initial).
Par exemple, que verrait-on si on lisait le code assembleur
produit par le compilo ?
xycc -S > tes_yeux
~> xycc
bash: xycc: command not found
Tous les types du C existent-ils ?
Où ?
Tu sépares les phrases... Dans le code assembleur produit !
Que veut dire « tous » ?
Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, [...]
Y'a des chances, vu qu'on peut mettre autant de [n] qu'on veut avec n
entier strictement positif quelconque, ça fait un beau N^N !
Le 11 juin 2009, Antoine Leca a écrit :Le 11/06/2009 08:14Z, Lucas Levrel écrivit :Ah, l'ambiguïté entre valeur et adresse d'un pointeur...
Personnellement je ne vois aucune ambiguïté.
Je parlais de l'ambiguïté du vocabulaire, pas de la notion bien sûr.
Car la valeur du pointeur est l'adresse de l'objet pointé.
Donc quand je demande si « table[i] existe en mémoire », je suis
trop succinct, car ça peut vouloir dire :
1) est-ce que la valeur de table[i] est une adresse qui existe
ou
2) est-ce que l'objet table[i] est stocké en mémoire
Par ailleurs, le pointeur est lui-même un objet, et comme tout objet
possède son adresse propre.
C'est bien de ça que je parlais.
Je crois que c'est assez clair à la
lumière de la deuxième question de mon post initial, où je parlais de
tableaux dynamiques pour lesquels on crée d'abord int *table[3], puis on
fait pointer chaque table[i] vers un int[4].
Je sais que table[i] est l'adresse d'une zone mémoire allouée,
c'est celle de la valeur table[i][0].
Pour la n-ième fois, je ne comprends pas ta notation.
table[i] == &(table[i][0])
Non ?
le compilateur réserve-t-il trois zones de mémoire pour stocker table[0],
table[1] et table[2] ?
Il réserve une seule zone de 12 int. On peut ensuite voir cela comme
trois zones, mais il n'en reste pas moins que les zones sont contiguës.
Là encore, je ne parlais pas de ce sur quoi pointent les table[i], à
savoir des zones de 4 int, mais des table[i] eux-mêmes.
Mais bon, cela c'est la salade interne des compilateurs, ce n'est pas
important.
C'est ce que je cherche à comprendre, par exemple quand je demande si ça
aurait un intérêt (en vitesse d'exécution) de déclarer int table[12] et de
gérer moi-même l'indexation (voir la Q2 de mon post initial).
Par exemple, que verrait-on si on lisait le code assembleur
produit par le compilo ?
xycc -S > tes_yeux
~> xycc
bash: xycc: command not found
Tous les types du C existent-ils ?
Où ?
Tu sépares les phrases... Dans le code assembleur produit !
Que veut dire « tous » ?
Les types du C décrivent un ensemble infini
(peut-être même non dénombrable, [...]
Y'a des chances, vu qu'on peut mettre autant de [n] qu'on veut avec n
entier strictement positif quelconque, ça fait un beau N^N !
Le 11 juin 2009, candide a écrit :Du coup, je n'ai aucun intérêt à déclarer
int table[3*4];
puis à gérer moi-même l'accès à l'élément (i,j) avec table[4*i+j].
Intérêt ? ça dépend de ce que tu veux faire. Je trouve les tableaux
multidimensionnels (les vrais, par ceux qu'on alloue dynamiquement, cf.
ton point numéro2) peu souples puisqu'il faut indiquer toutes les
dimensions sauf la dimension principale lorsque le tableau est amené à
être argument d'une fonction.
OK. Cependant, dans le fil récent « Légallité d'un pointeur de tableau »
Jean-Claude Arbaut nous a appris qu'en C99 on pouvait faire
double get(int n, int p, double t[n][p], int i, int j){return t[i][j];}
Le 11 juin 2009, candide a écrit :
Du coup, je n'ai aucun intérêt à déclarer
int table[3*4];
puis à gérer moi-même l'accès à l'élément (i,j) avec table[4*i+j].
Intérêt ? ça dépend de ce que tu veux faire. Je trouve les tableaux
multidimensionnels (les vrais, par ceux qu'on alloue dynamiquement, cf.
ton point numéro2) peu souples puisqu'il faut indiquer toutes les
dimensions sauf la dimension principale lorsque le tableau est amené à
être argument d'une fonction.
OK. Cependant, dans le fil récent « Légallité d'un pointeur de tableau »
Jean-Claude Arbaut nous a appris qu'en C99 on pouvait faire
double get(int n, int p, double t[n][p], int i, int j){return t[i][j];}
Le 11 juin 2009, candide a écrit :Du coup, je n'ai aucun intérêt à déclarer
int table[3*4];
puis à gérer moi-même l'accès à l'élément (i,j) avec table[4*i+j].
Intérêt ? ça dépend de ce que tu veux faire. Je trouve les tableaux
multidimensionnels (les vrais, par ceux qu'on alloue dynamiquement, cf.
ton point numéro2) peu souples puisqu'il faut indiquer toutes les
dimensions sauf la dimension principale lorsque le tableau est amené à
être argument d'une fonction.
OK. Cependant, dans le fil récent « Légallité d'un pointeur de tableau »
Jean-Claude Arbaut nous a appris qu'en C99 on pouvait faire
double get(int n, int p, double t[n][p], int i, int j){return t[i][j];}
Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
On peut revenir au sujet ?
Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
On peut revenir au sujet ?
Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
On peut revenir au sujet ?
On 2009-06-15, Marc Espie wrote:
> In article <h0qqis$,
> Antoine Leca wrote:
>>Que veut dire « tous » ? Les types du C décrivent un ens emble infini
>>(peut-être même non dénombrable, mais cela fait trop lon gtemps que ce
>>sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
> N'importe quoi.
> Le C est un langage, les types du C ont une expression, sous forme de c haine
> de caracteres explicitant le type. Ils sont donc forcement denombrables ...
Disons qu'il faut arriver à exprimer un infini non dénombrable ave c
un nombre fini de symbole, et c'est pas évident à faire avec
une sémantique raisonnable.
> Oui, il y a des trucs marrants en theorie des types. Mais il faut du ty page
> automatique pour sortir des trucs exprimables par le systeme de types.. . et
> c'est bien le souci, en general.
Voui, avec des constructeurs universels et existentiels, et
un petit point fixe, on doit pouvoir jouer...
M'enfin, on doit être loi du C...
On 2009-06-15, Marc Espie <es...@lain.home> wrote:
> In article <h0qqis$tc...@shakotay.alphanet.ch>,
> Antoine Leca <r...@localhost.invalid> wrote:
>>Que veut dire « tous » ? Les types du C décrivent un ens emble infini
>>(peut-être même non dénombrable, mais cela fait trop lon gtemps que ce
>>sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
> N'importe quoi.
> Le C est un langage, les types du C ont une expression, sous forme de c haine
> de caracteres explicitant le type. Ils sont donc forcement denombrables ...
Disons qu'il faut arriver à exprimer un infini non dénombrable ave c
un nombre fini de symbole, et c'est pas évident à faire avec
une sémantique raisonnable.
> Oui, il y a des trucs marrants en theorie des types. Mais il faut du ty page
> automatique pour sortir des trucs exprimables par le systeme de types.. . et
> c'est bien le souci, en general.
Voui, avec des constructeurs universels et existentiels, et
un petit point fixe, on doit pouvoir jouer...
M'enfin, on doit être loi du C...
On 2009-06-15, Marc Espie wrote:
> In article <h0qqis$,
> Antoine Leca wrote:
>>Que veut dire « tous » ? Les types du C décrivent un ens emble infini
>>(peut-être même non dénombrable, mais cela fait trop lon gtemps que ce
>>sujet ne me préoccupe plus pour que je ne sois pas 100% sûr).
> N'importe quoi.
> Le C est un langage, les types du C ont une expression, sous forme de c haine
> de caracteres explicitant le type. Ils sont donc forcement denombrables ...
Disons qu'il faut arriver à exprimer un infini non dénombrable ave c
un nombre fini de symbole, et c'est pas évident à faire avec
une sémantique raisonnable.
> Oui, il y a des trucs marrants en theorie des types. Mais il faut du ty page
> automatique pour sortir des trucs exprimables par le systeme de types.. . et
> c'est bien le souci, en general.
Voui, avec des constructeurs universels et existentiels, et
un petit point fixe, on doit pouvoir jouer...
M'enfin, on doit être loi du C...
On 15 juin, 15:01, Antoine Leca wrote:Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
Sauf que ce qui est dit ci-dessus est faux ;-)
dénombrable veut dire qu'on peut les compter ou autrement dit, trouver
le successeur d'un élément. Ca n'a rien à voir avec le nombre
d'éléments de l'ensemble, mais avec la possibilité de les énumérer
(discret vs continu).
une suite infinie d'entiers est donc dénombrable.
N, Z, D, Q sont dénombrables, R et C ne le sont pas.On peut revenir au sujet ?
volontier ;-)
On 15 juin, 15:01, Antoine Leca <r...@localhost.invalid> wrote:
Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
Sauf que ce qui est dit ci-dessus est faux ;-)
dénombrable veut dire qu'on peut les compter ou autrement dit, trouver
le successeur d'un élément. Ca n'a rien à voir avec le nombre
d'éléments de l'ensemble, mais avec la possibilité de les énumérer
(discret vs continu).
une suite infinie d'entiers est donc dénombrable.
N, Z, D, Q sont dénombrables, R et C ne le sont pas.
On peut revenir au sujet ?
volontier ;-)
On 15 juin, 15:01, Antoine Leca wrote:Le 15/06/2009 12:43, Marc Espie écrivit :
> pour sortir du denombrable, il faut une suite *infinie* d'entiers. Tant que
> tu restes dans l'arbitrairement long, mais finie, ca ne marche pas.
OK, c'est clair pour moi.
Sauf que ce qui est dit ci-dessus est faux ;-)
dénombrable veut dire qu'on peut les compter ou autrement dit, trouver
le successeur d'un élément. Ca n'a rien à voir avec le nombre
d'éléments de l'ensemble, mais avec la possibilité de les énumérer
(discret vs continu).
une suite infinie d'entiers est donc dénombrable.
N, Z, D, Q sont dénombrables, R et C ne le sont pas.On peut revenir au sujet ?
volontier ;-)