writes:
[...]
| Quelqu'un m'a racconté aussi un essai de ce genre sur un compilateur
| C. D'après ce que j'ai compris, il y avait quelque chose qui le
| rendait moins faisable, mais j'avoue ne pas pouvoir trouver ce que
| c'était.
Je serai bien curieux de savoir quoi.
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation. GCC/gcc, depuis un
bon bout de temps (depuis EGCS au moins), en offrait une. Une version
plus élaborée existe dans GCC-3.x/gcc. Une version envore plus
élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc, peu importe comment il
sera appelé).
Cependant, c'est un peu plus dur à faire correctement pour C++ à cause
de la sémantique des destructreurs.
kanze@gabi-soft.fr writes:
[...]
| Quelqu'un m'a racconté aussi un essai de ce genre sur un compilateur
| C. D'après ce que j'ai compris, il y avait quelque chose qui le
| rendait moins faisable, mais j'avoue ne pas pouvoir trouver ce que
| c'était.
Je serai bien curieux de savoir quoi.
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation. GCC/gcc, depuis un
bon bout de temps (depuis EGCS au moins), en offrait une. Une version
plus élaborée existe dans GCC-3.x/gcc. Une version envore plus
élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc, peu importe comment il
sera appelé).
Cependant, c'est un peu plus dur à faire correctement pour C++ à cause
de la sémantique des destructreurs.
writes:
[...]
| Quelqu'un m'a racconté aussi un essai de ce genre sur un compilateur
| C. D'après ce que j'ai compris, il y avait quelque chose qui le
| rendait moins faisable, mais j'avoue ne pas pouvoir trouver ce que
| c'était.
Je serai bien curieux de savoir quoi.
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation. GCC/gcc, depuis un
bon bout de temps (depuis EGCS au moins), en offrait une. Une version
plus élaborée existe dans GCC-3.x/gcc. Une version envore plus
élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc, peu importe comment il
sera appelé).
Cependant, c'est un peu plus dur à faire correctement pour C++ à cause
de la sémantique des destructreurs.
wrote:
<Mode chipotage>
Pourquoi pas simplement : une fonction F() est dite récursive si elle
contient un appel à elle-même, que cet appel soit direct ou indirect.
La fonction suivante est-elle récursive ?
void f()
{
if (false)
{
f();
}
}
Les diptères ont mal au cucu ....
kanze@gabi-soft.fr wrote:
<Mode chipotage>
Pourquoi pas simplement : une fonction F() est dite récursive si elle
contient un appel à elle-même, que cet appel soit direct ou indirect.
La fonction suivante est-elle récursive ?
void f()
{
if (false)
{
f();
}
}
Les diptères ont mal au cucu ....
wrote:
<Mode chipotage>
Pourquoi pas simplement : une fonction F() est dite récursive si elle
contient un appel à elle-même, que cet appel soit direct ou indirect.
La fonction suivante est-elle récursive ?
void f()
{
if (false)
{
f();
}
}
Les diptères ont mal au cucu ....
writes:
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation.
GCC/gcc, depuis un bon bout de temps (depuis EGCS au moins), en
offrait une. Une version plus élaborée existe dans GCC-3.x/gcc. Une
version envore plus élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc,
peu importe comment il sera appelé).
kanze@gabi-soft.fr writes:
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation.
GCC/gcc, depuis un bon bout de temps (depuis EGCS au moins), en
offrait une. Une version plus élaborée existe dans GCC-3.x/gcc. Une
version envore plus élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc,
peu importe comment il sera appelé).
writes:
S'il est vrai que traditionnellement, les compilateurs C
implémentaient rarement l'optimisation de recrusivité finale, ils
commencent maintenant à offrir cette optimisation.
GCC/gcc, depuis un bon bout de temps (depuis EGCS au moins), en
offrait une. Une version plus élaborée existe dans GCC-3.x/gcc. Une
version envore plus élaborée sera dans GCC-3.5/gcc (ou GCC-4.0/gcc,
peu importe comment il sera appelé).
writes:Je suis content de l'apprendre. Il faut dire que souvent dans de
tels cas, on a un problème de la poule et de l'oeuf : les
compilatateurs ne font pas l'optimisation, parce que ce type de
code est rare dans les programmes réels (dans le langage
considéré), et ce type de code est rare, parce que les
compilateurs ne l'optimisent pas bien.
En effet. Mais, de nos jours, les compilateurs C partagent le
middle-end et les back-end avec d'autres langages pour lesquelles
ces optimisations sont essentielles, sinon bienvenues. Aussi, il me
kanze@gabi-soft.fr writes:
Je suis content de l'apprendre. Il faut dire que souvent dans de
tels cas, on a un problème de la poule et de l'oeuf : les
compilatateurs ne font pas l'optimisation, parce que ce type de
code est rare dans les programmes réels (dans le langage
considéré), et ce type de code est rare, parce que les
compilateurs ne l'optimisent pas bien.
En effet. Mais, de nos jours, les compilateurs C partagent le
middle-end et les back-end avec d'autres langages pour lesquelles
ces optimisations sont essentielles, sinon bienvenues. Aussi, il me
writes:Je suis content de l'apprendre. Il faut dire que souvent dans de
tels cas, on a un problème de la poule et de l'oeuf : les
compilatateurs ne font pas l'optimisation, parce que ce type de
code est rare dans les programmes réels (dans le langage
considéré), et ce type de code est rare, parce que les
compilateurs ne l'optimisent pas bien.
En effet. Mais, de nos jours, les compilateurs C partagent le
middle-end et les back-end avec d'autres langages pour lesquelles
ces optimisations sont essentielles, sinon bienvenues. Aussi, il me
"Alain Naigeon" writes:
Une entité est récursive si sa définition contient une référence à
elle-même. Ainsi
struct list {
int data;
list* link;
};
"Alain Naigeon" <anaigeon@free.fr> writes:
Une entité est récursive si sa définition contient une référence à
elle-même. Ainsi
struct list {
int data;
list* link;
};
"Alain Naigeon" writes:
Une entité est récursive si sa définition contient une référence à
elle-même. Ainsi
struct list {
int data;
list* link;
};