suite à des réflexions suscitées sur ce forum, j'ai réflechi
à une librairie inspirée de la STL qui offre en C des containers
génériques, efficaces et typés.
Le premier jet est disponible à l'URL:
http://www.enseeiht.fr/~boyer/BPL/
C'est un tout premier jet, mais je suis à la recherches d'avis,
de marques d'intérêt et de critiques avant de partir plus avant
dans les développements.
Merci d'avance de vos remarques,
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
In 'fr.comp.lang.c', Bertrand Mollinier Toublet wrote:
void* est indispensabple pour faire de la programmation générique. Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
sans le dire. Ca fait partie du langage.
La, il va falloir que tu clarifies, parce que j'ai pas suivi.
C'est le B.A. BA de l'ADT! J'ai maintes fois exposé cette technique...
/* main.c */ typedef struct obj obj_s;
int main (void) { obj_s *p_obj;
return 0; }
A part '= NULL', je ne peux rien faire de plus, car le type sous-jacent de 'p_obj' est 'void*' (La taille de l'objet n'est pas définie).
Question idiote, reponse... a cote de la plaque :-)
Ce n'est pas ce que je voulais dire. Je connais bien la technique decrite (et coupee), et je sais bien comment elle marche. Ce qui me fait tiquer, c'est la phrase ci-dessus: "le type sous-jacent de 'p_obj' est 'void *'". La je ne suis pas bien sur d'etre d'accord.
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le dereferencer, d'accord, que ce soit un type void *, il va falloir me le prouver.
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Bertrand Mollinier Toublet
<bertrand.molliniertoublet@enst-bretagne.fr> wrote:
void* est indispensabple pour faire de la programmation générique. Même
l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
sans le dire. Ca fait partie du langage.
La, il va falloir que tu clarifies, parce que j'ai pas suivi.
C'est le B.A. BA de l'ADT! J'ai maintes fois exposé cette technique...
/* main.c */
typedef struct obj obj_s;
int main (void)
{
obj_s *p_obj;
return 0;
}
A part '= NULL', je ne peux rien faire de plus, car le type sous-jacent de
'p_obj' est 'void*' (La taille de l'objet n'est pas définie).
Question idiote, reponse... a cote de la plaque :-)
Ce n'est pas ce que je voulais dire. Je connais bien la technique
decrite (et coupee), et je sais bien comment elle marche. Ce qui me fait
tiquer, c'est la phrase ci-dessus: "le type sous-jacent de 'p_obj' est
'void *'". La je ne suis pas bien sur d'etre d'accord.
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le
dereferencer, d'accord, que ce soit un type void *, il va falloir me le
prouver.
--
Bertrand Mollinier Toublet
"Reality exists" - Richard Heathfield, 1 July 2003
In 'fr.comp.lang.c', Bertrand Mollinier Toublet wrote:
void* est indispensabple pour faire de la programmation générique. Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
sans le dire. Ca fait partie du langage.
La, il va falloir que tu clarifies, parce que j'ai pas suivi.
C'est le B.A. BA de l'ADT! J'ai maintes fois exposé cette technique...
/* main.c */ typedef struct obj obj_s;
int main (void) { obj_s *p_obj;
return 0; }
A part '= NULL', je ne peux rien faire de plus, car le type sous-jacent de 'p_obj' est 'void*' (La taille de l'objet n'est pas définie).
Question idiote, reponse... a cote de la plaque :-)
Ce n'est pas ce que je voulais dire. Je connais bien la technique decrite (et coupee), et je sais bien comment elle marche. Ce qui me fait tiquer, c'est la phrase ci-dessus: "le type sous-jacent de 'p_obj' est 'void *'". La je ne suis pas bien sur d'etre d'accord.
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le dereferencer, d'accord, que ce soit un type void *, il va falloir me le prouver.
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
Marc Boyer
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Marc Boyer wrote:
Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s; typedef struct bar bar_s;
int main(){ foo_s *pfoo; bar_s *pbar; void* pvoid; pfoo = pvoid; pvoid= pfoo; pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur incompatible */ return 0; }
C'est l'avertissement qui fait, à mon sens, toute la différence.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> wrote:
Je m'adresse plus à des gens qui font du C procédural
"classique", qui manipulent déjà des listes à coup de
macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s;
typedef struct bar bar_s;
int main(){
foo_s *pfoo;
bar_s *pbar;
void* pvoid;
pfoo = pvoid;
pvoid= pfoo;
pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur incompatible */
return 0;
}
C'est l'avertissement qui fait, à mon sens, toute la différence.
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s; typedef struct bar bar_s;
int main(){ foo_s *pfoo; bar_s *pbar; void* pvoid; pfoo = pvoid; pvoid= pfoo; pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur incompatible */ return 0; }
C'est l'avertissement qui fait, à mon sens, toute la différence.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Emmanuel Delahaye
In 'fr.comp.lang.c', Bertrand Mollinier Toublet wrote:
/* main.c */ typedef struct obj obj_s;
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le
dereferencer, d'accord, que ce soit un type void *, il va falloir me le prouver.
Disons que sémantiquement, c'est un void*, puisqu'on ne peut pas le déreférencer, et qu'on ne connait pas la taille de l'objet pointé. Par contre, il est 'nommé', ce qui permet au compilateur de faire quelques vérifications de cohérence.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Bertrand Mollinier Toublet
<bertrand.molliniertoublet@enst-bretagne.fr> wrote:
/* main.c */
typedef struct obj obj_s;
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le
dereferencer, d'accord, que ce soit un type void *, il va falloir me le
prouver.
Disons que sémantiquement, c'est un void*, puisqu'on ne peut pas le
déreférencer, et qu'on ne connait pas la taille de l'objet pointé. Par
contre, il est 'nommé', ce qui permet au compilateur de faire quelques
vérifications de cohérence.
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Bertrand Mollinier Toublet wrote:
/* main.c */ typedef struct obj obj_s;
Que le type de p_obj soit incomplet, d'accord, qu'on ne puisse pas le
dereferencer, d'accord, que ce soit un type void *, il va falloir me le prouver.
Disons que sémantiquement, c'est un void*, puisqu'on ne peut pas le déreférencer, et qu'on ne connait pas la taille de l'objet pointé. Par contre, il est 'nommé', ce qui permet au compilateur de faire quelques vérifications de cohérence.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', Marc Boyer wrote:
Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s; typedef struct bar bar_s;
int main(){ foo_s *pfoo; bar_s *pbar; void* pvoid; pfoo = pvoid; pvoid= pfoo; pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur incompatible */ return 0; }
C'est l'avertissement qui fait, à mon sens, toute la différence.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un 'diagnostic'.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> wrote:
Je m'adresse plus à des gens qui font du C procédural
"classique", qui manipulent déjà des listes à coup de
macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s;
typedef struct bar bar_s;
int main(){
foo_s *pfoo;
bar_s *pbar;
void* pvoid;
pfoo = pvoid;
pvoid= pfoo;
pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur
incompatible */ return 0;
}
C'est l'avertissement qui fait, à mon sens, toute la différence.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par
certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un
'diagnostic'.
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
Même l'idiome:
typedef struct obj obj_s;
<...>
obj_s *p_obj;
definit en fait un
void *p_obj;
typedef struct foo foo_s; typedef struct bar bar_s;
int main(){ foo_s *pfoo; bar_s *pbar; void* pvoid; pfoo = pvoid; pvoid= pfoo; pfoo= pbar; /* AVERTISSEMENT: affectation d'un type pointeur incompatible */ return 0; }
C'est l'avertissement qui fait, à mon sens, toute la différence.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un 'diagnostic'.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Marc Boyer
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Marc Boyer wrote:
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
C'est une archive, puisque cela regroupe plusieurs fichiers, compressée, par respect pour ceux qui ont peu de bande passante. Le code est en texte pur. Le document d'accompagnement fait 16 pages avec des figures. En général, les gens préfèrent alors avoir un format imprimable. Toute requête particulière de format texte, pdf ou html est étudiable.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un 'diagnostic'.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> wrote:
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
C'est une archive, puisque cela regroupe plusieurs fichiers,
compressée, par respect pour ceux qui ont peu de bande passante.
Le code est en texte pur.
Le document d'accompagnement fait 16 pages avec des
figures. En général, les gens préfèrent alors avoir un
format imprimable. Toute requête particulière de format
texte, pdf ou html est étudiable.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par
certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un
'diagnostic'.
void* est indispensabple pour faire de la programmation générique.
As-tu regardé la proposition que j'ai faite ?
Non. Illisible. Pourquoi c'est pas du texte pur?
C'est une archive, puisque cela regroupe plusieurs fichiers, compressée, par respect pour ceux qui ont peu de bande passante. Le code est en texte pur. Le document d'accompagnement fait 16 pages avec des figures. En général, les gens préfèrent alors avoir un format imprimable. Toute requête particulière de format texte, pdf ou html est étudiable.
Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un 'diagnostic'.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Gabriel Dos Reis
Bertrand Mollinier Toublet writes:
| > C'est peut-être une erreur de présentation de ma part. | > La solution "standart", c'est d'avoir un fichier qui recense | > les instanciations courantes. | > #ifdef VECTOR_INT | > #include "VectorInt.h" | > #else | > #ifdef VECTOR_STRING | > #include "VectorInt.h" | > #endif | > #endif | > C'est rédibitoire à ton avis ? | > | En comparaison d'autres solutions, un petit peu, oui. Pour etre | honnete, je ne suis pas un grand fan du preprocesseur.
| > C'est peut-être une erreur de présentation de ma part.
| > La solution "standart", c'est d'avoir un fichier qui recense
| > les instanciations courantes.
| > #ifdef VECTOR_INT
| > #include "VectorInt.h"
| > #else
| > #ifdef VECTOR_STRING
| > #include "VectorInt.h"
| > #endif
| > #endif
| > C'est rédibitoire à ton avis ?
| >
| En comparaison d'autres solutions, un petit peu, oui. Pour etre
| honnete, je ne suis pas un grand fan du preprocesseur.
| > C'est peut-être une erreur de présentation de ma part. | > La solution "standart", c'est d'avoir un fichier qui recense | > les instanciations courantes. | > #ifdef VECTOR_INT | > #include "VectorInt.h" | > #else | > #ifdef VECTOR_STRING | > #include "VectorInt.h" | > #endif | > #endif | > C'est rédibitoire à ton avis ? | > | En comparaison d'autres solutions, un petit peu, oui. Pour etre | honnete, je ne suis pas un grand fan du preprocesseur.
et tu programmes en C ? ;-)
-- Gaby
Gabriel Dos Reis
Emmanuel Delahaye writes:
| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par | certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un | 'diagnostic'.
Ouarf, c'est quoi alors ?
-- Gaby
Emmanuel Delahaye <emdelYOURBRA@noos.fr> writes:
| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par
| certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un
| 'diagnostic'.
| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par | certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un | 'diagnostic'.
Ouarf, c'est quoi alors ?
-- Gaby
Gabriel Dos Reis
Marc Boyer writes:
| Disons que c'est vraiment une question de conception que je me pose. | Je ne désire pas re-coder C++. Si on veut faire du C++, il existe | des compilateurs, et pour cveux qui se plaignent de ne pas | avoir de compilateur C++ sur leur plateforme, il paraît qu'il | existe des traducteurs C++ -> C, donc, le problème est clot.
une question intéressante est donc : quels sont ces plateformes qui ont des compilateurs C et pas de compilateurs C++ ?
-- Gaby
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
| Disons que c'est vraiment une question de conception que je me pose.
| Je ne désire pas re-coder C++. Si on veut faire du C++, il existe
| des compilateurs, et pour cveux qui se plaignent de ne pas
| avoir de compilateur C++ sur leur plateforme, il paraît qu'il
| existe des traducteurs C++ -> C, donc, le problème est clot.
une question intéressante est donc : quels sont ces plateformes qui
ont des compilateurs C et pas de compilateurs C++ ?
| Disons que c'est vraiment une question de conception que je me pose. | Je ne désire pas re-coder C++. Si on veut faire du C++, il existe | des compilateurs, et pour cveux qui se plaignent de ne pas | avoir de compilateur C++ sur leur plateforme, il paraît qu'il | existe des traducteurs C++ -> C, donc, le problème est clot.
une question intéressante est donc : quels sont ces plateformes qui ont des compilateurs C et pas de compilateurs C++ ?
-- Gaby
Gabriel Dos Reis
Emmanuel Delahaye writes:
| In 'fr.comp.lang.c', Gabriel Dos Reis wrote: | | > Emmanuel Delahaye writes: | > | >| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par | >| certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un | >| 'diagnostic'. | > | > Ouarf, c'est quoi alors ? | | Un 'diagnostic' est obligatoire et entraine une erreur, non?
Non. Tu confonds probablement avec les mentions « ill-formed » qui elles demandent un diagnostic. La norme ne fait pas la différence entre erreur, warning ou note informative. Un compilateur peut être bien enovyer des diagnostics sur des programmes bien formés (d'ailleurs la plupart des compilateurs de production ne se privent pas de le faire)
[#1] diagnostic message message belonging to an implementation-defined subset of the implementation's message output
Emmanuel Delahaye <emdelYOURBRA@noos.fr> writes:
| In 'fr.comp.lang.c', Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
|
| > Emmanuel Delahaye <emdelYOURBRA@noos.fr> writes:
| >
| >| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par
| >| certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un
| >| 'diagnostic'.
| >
| > Ouarf, c'est quoi alors ?
|
| Un 'diagnostic' est obligatoire et entraine une erreur, non?
Non. Tu confonds probablement avec les mentions « ill-formed » qui
elles demandent un diagnostic. La norme ne fait pas la différence
entre erreur, warning ou note informative. Un compilateur peut être
bien enovyer des diagnostics sur des programmes bien formés
(d'ailleurs la plupart des compilateurs de production ne se privent
pas de le faire)
[#1] diagnostic message
message belonging to an implementation-defined subset of the
implementation's message output
| In 'fr.comp.lang.c', Gabriel Dos Reis wrote: | | > Emmanuel Delahaye writes: | > | >| Certes, mais un warning n'est pas obligatoire. C'est un plus apporté par | >| certains compilateurs, en fonction de leur paramétrage. Ce n'est pas un | >| 'diagnostic'. | > | > Ouarf, c'est quoi alors ? | | Un 'diagnostic' est obligatoire et entraine une erreur, non?
Non. Tu confonds probablement avec les mentions « ill-formed » qui elles demandent un diagnostic. La norme ne fait pas la différence entre erreur, warning ou note informative. Un compilateur peut être bien enovyer des diagnostics sur des programmes bien formés (d'ailleurs la plupart des compilateurs de production ne se privent pas de le faire)
[#1] diagnostic message message belonging to an implementation-defined subset of the implementation's message output
Laurent Deniau
Marc Boyer wrote:
In article , AG wrote:
As tu vu :
et le lien cité : http://home.cern.ch/ldeniau/html/oopc/oopc.html
Oui, merci. J'ai téléchargé, lu (mais pas essayé). Je le cite dans la doc parmis les autres approches. Disons que mon sentiment, c'est que les publics visés sont différents. OOPC s'adressent à des gens convaincus par la POO et qui veulent en retrouver les fonctionnalités avec un compilateur C. Mais OOPC est quasiment un nouveau langage. Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
Ca peut paraitre paradoxale, mais je n'encourage pas a utiliser ce qui est sur la page OOPC. Encore une fois, il s'agit d'un exemple didactique sans interet pratique (trop lourd). En revanche je peux (si demande il y a) mettre en acces publique et sans garantie (et sans doc) un tar de ce qui est deja fait sur la lib ooc (qui ne bouge plus beaucoup). Ca fait quelques lignes de C (cf liste des fichier ci-dessous). Ce qui est dans le repertoire ooc forme le corps de la technique (et peut etre utilise a part), le reste n'est qu'une lib d'objets utiles. Je l'utilise depuis environ 6 mois dans un projet professionnel mais une fois que celui-ci sera termine, je compte bien repasser serieusement a travers le code pour enlever les UB et les trucs pas portables (normalement il y en a peu) et surtout simplifier et optimiser certaines parties.
-- [ Laurent Deniau -- Scientific Computing & Data Analysis ] [ CERN -- European Center for Nuclear Research ] [ - http://cern.ch/Laurent.Deniau ] [ -- One becomes old when dreams become regrets -- ]
Marc Boyer wrote:
In article <3F05941D.60802@tb.fr>, AG wrote:
As tu vu :
et le lien cité : http://home.cern.ch/ldeniau/html/oopc/oopc.html
Oui, merci.
J'ai téléchargé, lu (mais pas essayé). Je le cite dans
la doc parmis les autres approches.
Disons que mon sentiment, c'est que les publics visés sont
différents. OOPC s'adressent à des gens convaincus par
la POO et qui veulent en retrouver les fonctionnalités avec
un compilateur C. Mais OOPC est quasiment un nouveau
langage.
Je m'adresse plus à des gens qui font du C procédural
"classique", qui manipulent déjà des listes à coup de
macros qui castent tout en void*.
Ca peut paraitre paradoxale, mais je n'encourage pas a utiliser ce qui est sur
la page OOPC. Encore une fois, il s'agit d'un exemple didactique sans interet
pratique (trop lourd). En revanche je peux (si demande il y a) mettre en acces
publique et sans garantie (et sans doc) un tar de ce qui est deja fait sur la
lib ooc (qui ne bouge plus beaucoup). Ca fait quelques lignes de C (cf liste des
fichier ci-dessous). Ce qui est dans le repertoire ooc forme le corps de la
technique (et peut etre utilise a part), le reste n'est qu'une lib d'objets
utiles. Je l'utilise depuis environ 6 mois dans un projet professionnel mais une
fois que celui-ci sera termine, je compte bien repasser serieusement a travers
le code pour enlever les UB et les trucs pas portables (normalement il y en a
peu) et surtout simplifier et optimiser certaines parties.
--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ Laurent.Deniau@cern.ch - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]
et le lien cité : http://home.cern.ch/ldeniau/html/oopc/oopc.html
Oui, merci. J'ai téléchargé, lu (mais pas essayé). Je le cite dans la doc parmis les autres approches. Disons que mon sentiment, c'est que les publics visés sont différents. OOPC s'adressent à des gens convaincus par la POO et qui veulent en retrouver les fonctionnalités avec un compilateur C. Mais OOPC est quasiment un nouveau langage. Je m'adresse plus à des gens qui font du C procédural "classique", qui manipulent déjà des listes à coup de macros qui castent tout en void*.
Ca peut paraitre paradoxale, mais je n'encourage pas a utiliser ce qui est sur la page OOPC. Encore une fois, il s'agit d'un exemple didactique sans interet pratique (trop lourd). En revanche je peux (si demande il y a) mettre en acces publique et sans garantie (et sans doc) un tar de ce qui est deja fait sur la lib ooc (qui ne bouge plus beaucoup). Ca fait quelques lignes de C (cf liste des fichier ci-dessous). Ce qui est dans le repertoire ooc forme le corps de la technique (et peut etre utilise a part), le reste n'est qu'une lib d'objets utiles. Je l'utilise depuis environ 6 mois dans un projet professionnel mais une fois que celui-ci sera termine, je compte bien repasser serieusement a travers le code pour enlever les UB et les trucs pas portables (normalement il y en a peu) et surtout simplifier et optimiser certaines parties.
-- [ Laurent Deniau -- Scientific Computing & Data Analysis ] [ CERN -- European Center for Nuclear Research ] [ - http://cern.ch/Laurent.Deniau ] [ -- One becomes old when dreams become regrets -- ]