Bonjour,
Questions aux développeurs, s'il y en a sur ce groupe :
- Quel est votre langage de développement multi-plateforme préféré ?
- Quel est le meilleur IDE pour Java ?
- Quelqu'un a-t-il essayé Mono ? Est-ce une bonne solution ?
- Y a-t-il quelqu'un qui utilise Kylix ?
Voilà, réponses, commentaires, avis autorisés ou non sont les bienvenus...
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e) Laurent BERNE écrivait la plume légère :
Du code C++ pur n'a pas besoin de pointeur. J'ai fait un moteur d'optimisation de découpe entièrement en C++, quelques milliers de lignes (je sais pas combien, je m'amuse pas à les compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni par la STL. A l'inverse, la moindre transmission de paramètre à une interface graphique se fait par cette intermédiaire.. Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais
comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ? passage par valeur, par adresse, par magie ? pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
-- Thou shalt not omit adultery.
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e)
Laurent BERNE <laurent.berneRETIRER-CECI@laposte.net> écrivait la plume
légère :
Du code C++ pur n'a pas besoin de pointeur.
J'ai fait un moteur d'optimisation de découpe entièrement en C++,
quelques milliers de lignes (je sais pas combien, je m'amuse pas à les
compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni
par la STL.
A l'inverse, la moindre transmission de paramètre à une interface
graphique se fait par cette intermédiaire..
Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais
comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ?
passage par valeur, par adresse, par magie ? pour passer un objet STL
il faut faire hériter de la classe parameter et il s'en occupe
tout seul ou quoi ?
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e) Laurent BERNE écrivait la plume légère :
Du code C++ pur n'a pas besoin de pointeur. J'ai fait un moteur d'optimisation de découpe entièrement en C++, quelques milliers de lignes (je sais pas combien, je m'amuse pas à les compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni par la STL. A l'inverse, la moindre transmission de paramètre à une interface graphique se fait par cette intermédiaire.. Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais
comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ? passage par valeur, par adresse, par magie ? pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
-- Thou shalt not omit adultery.
Manuel Leclerc
Manuel Leclerc a pensé très fort :
[snip smart pointer]
Et quand on veut que l'objet survive à la fonction qui l'a créé ?
déclaré dans la portée appelant la fonction, et transmis comme argument à la fonction initialisante.
Cela revient à ne pouvoir instancier que des objets dont la durée de vie est contrôlée par la notion de portée dans les sources. Sans parler du problème du nombre d'objets (il faut un pointeur différent déclaré par objet, non ?). Et puis, il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se passer des pointeurs en C++, à mon humble avis.
-- <@Logan> I spent a minute looking at my own code by accident. <@Logan> I was thinking "What the hell is this guy doing?"
Manuel Leclerc a pensé très fort :
[snip smart pointer]
Et quand on veut que l'objet survive à la fonction qui
l'a créé ?
déclaré dans la portée appelant la fonction, et transmis
comme argument à la fonction initialisante.
Cela revient à ne pouvoir instancier que des objets dont
la durée de vie est contrôlée par la notion de portée dans
les sources. Sans parler du problème du nombre d'objets (il
faut un pointeur différent déclaré par objet, non ?). Et puis,
il faut du coup faire remonter les détails d'implémentations
dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se
passer des pointeurs en C++, à mon humble avis.
--
<@Logan> I spent a minute looking at my own code by accident.
<@Logan> I was thinking "What the hell is this guy doing?"
Et quand on veut que l'objet survive à la fonction qui l'a créé ?
déclaré dans la portée appelant la fonction, et transmis comme argument à la fonction initialisante.
Cela revient à ne pouvoir instancier que des objets dont la durée de vie est contrôlée par la notion de portée dans les sources. Sans parler du problème du nombre d'objets (il faut un pointeur différent déclaré par objet, non ?). Et puis, il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se passer des pointeurs en C++, à mon humble avis.
-- <@Logan> I spent a minute looking at my own code by accident. <@Logan> I was thinking "What the hell is this guy doing?"
Laurent BERNE
Cela revient à ne pouvoir instancier que des objets dont la durée de vie est contrôlée par la notion de portée dans les sources. ouaip. Code beau, propre et structuré.
Sans parler du problème du nombre d'objets (il
faut un pointeur différent déclaré par objet, non ?). Et puis, dans ces cas là, on utilise les conteneurs plutôt (list, vector,
deque..) Ils se redimensionnent à l'infini(enfin dans la possibilité de la machine), se demerdent comme des grands pour la gestion de la mémoire. On créer l'objet, on le jette dans le conteneur(mais dans ce cas précis, on l'instancie pas par l'opérateur new..)
il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se passer des pointeurs en C++, à mon humble avis.
L'étape la plus dure pour moi a été la réorganisation du code en "tout objet". Le reste a coulé de source par la suite.
-- Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de creuser
Cela revient à ne pouvoir instancier que des objets dont
la durée de vie est contrôlée par la notion de portée dans
les sources.
ouaip. Code beau, propre et structuré.
Sans parler du problème du nombre d'objets (il
faut un pointeur différent déclaré par objet, non ?). Et puis,
dans ces cas là, on utilise les conteneurs plutôt (list, vector,
deque..)
Ils se redimensionnent à l'infini(enfin dans la possibilité de la
machine), se demerdent comme des grands pour la gestion de la mémoire.
On créer l'objet, on le jette dans le conteneur(mais dans ce cas
précis, on l'instancie pas par l'opérateur new..)
il faut du coup faire remonter les détails d'implémentations
dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se
passer des pointeurs en C++, à mon humble avis.
L'étape la plus dure pour moi a été la réorganisation du code en "tout
objet".
Le reste a coulé de source par la suite.
--
Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de
creuser
Cela revient à ne pouvoir instancier que des objets dont la durée de vie est contrôlée par la notion de portée dans les sources. ouaip. Code beau, propre et structuré.
Sans parler du problème du nombre d'objets (il
faut un pointeur différent déclaré par objet, non ?). Et puis, dans ces cas là, on utilise les conteneurs plutôt (list, vector,
deque..) Ils se redimensionnent à l'infini(enfin dans la possibilité de la machine), se demerdent comme des grands pour la gestion de la mémoire. On créer l'objet, on le jette dans le conteneur(mais dans ce cas précis, on l'instancie pas par l'opérateur new..)
il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
Ce n'est evidement pas ce genre de chose qui permet de se passer des pointeurs en C++, à mon humble avis.
L'étape la plus dure pour moi a été la réorganisation du code en "tout objet". Le reste a coulé de source par la suite.
-- Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de creuser
Laurent BERNE
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e) Laurent BERNE écrivait la plume légère :
Du code C++ pur n'a pas besoin de pointeur. J'ai fait un moteur d'optimisation de découpe entièrement en C++, quelques milliers de lignes (je sais pas combien, je m'amuse pas à les compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni par la STL. A l'inverse, la moindre transmission de paramètre à une interface graphique se fait par cette intermédiaire..
Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ? D'un pointeur.
passage par valeur, par adresse, par magie ? pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
Par exemple. Transmet une chaine de caractère à une boite de dialogue. la fonction "MessageBox" de l'APIWin32 demande en paramètre uniquement des pointeurs sur caractères (tableau de caractères à zéro terminal quoi). Si tu travail avec le type std::string standard, il te faut convertir le type string en pointeur de caractères. Pas le choix, c'est imposé par la lib. Tu te retrouves donc à créer un pointeur uniquement pour ça(heureusement, dans ce cas précis, y'a la fonction standard c_str());
-- Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de creuser
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e)
Laurent BERNE <laurent.berneRETIRER-CECI@laposte.net> écrivait la plume
légère :
Du code C++ pur n'a pas besoin de pointeur.
J'ai fait un moteur d'optimisation de découpe entièrement en C++,
quelques milliers de lignes (je sais pas combien, je m'amuse pas à les
compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni
par la STL.
A l'inverse, la moindre transmission de paramètre à une interface
graphique se fait par cette intermédiaire..
Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais
comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ?
D'un pointeur.
passage par valeur, par adresse, par magie ? pour passer un objet STL
il faut faire hériter de la classe parameter et il s'en occupe
tout seul ou quoi ?
Par exemple. Transmet une chaine de caractère à une boite de dialogue.
la fonction "MessageBox" de l'APIWin32 demande en paramètre uniquement
des pointeurs sur caractères (tableau de caractères à zéro terminal
quoi).
Si tu travail avec le type std::string standard, il te faut convertir
le type string en pointeur de caractères. Pas le choix, c'est imposé
par la lib.
Tu te retrouves donc à créer un pointeur uniquement pour
ça(heureusement, dans ce cas précis, y'a la fonction standard c_str());
--
Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de
creuser
Le Fri, 27 Aug 2004 17:54:31 +0200 après l'an de grâce, inspiré(e) Laurent BERNE écrivait la plume légère :
Du code C++ pur n'a pas besoin de pointeur. J'ai fait un moteur d'optimisation de découpe entièrement en C++, quelques milliers de lignes (je sais pas combien, je m'amuse pas à les compter). Pas un seul pointeur dedans. Uniquement l'outillage fourni par la STL. A l'inverse, la moindre transmission de paramètre à une interface graphique se fait par cette intermédiaire..
Juste par curiosité le «À l'inverse» me paraissant pas clair je voudrais comprendre :
La transmission de paramètres se fait par l'intermédiaire de quoi ? D'un pointeur.
passage par valeur, par adresse, par magie ? pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
Par exemple. Transmet une chaine de caractère à une boite de dialogue. la fonction "MessageBox" de l'APIWin32 demande en paramètre uniquement des pointeurs sur caractères (tableau de caractères à zéro terminal quoi). Si tu travail avec le type std::string standard, il te faut convertir le type string en pointeur de caractères. Pas le choix, c'est imposé par la lib. Tu te retrouves donc à créer un pointeur uniquement pour ça(heureusement, dans ce cas précis, y'a la fonction standard c_str());
-- Ce n'est pas parce que tu touches le fond que tu dois t'arrêter de creuser
David MAREC
Salut les gens. D'après k:
Du code C++ pur n'a pas besoin de pointeur.
Si. Mais ça ne s'utilise pas tout à fait de la même façon qu'en C. En fait, les pointeurs sont _moins_ utilisés. On peut, comme le souligne Laurent Berne, écrire tout un projet sans en voir la queue d'un.
Pour ce faire, la STL fournit des conteneurs prêts à l'emploi, vector/list/map etc., qui évite de gérer les mécanismes d'allocation et de libération de ressources dans de nombreux cas de figures.
Sinon, on utilise un pointeur intelligent, on encapsule ses pointeurs dans une classe ou un conteneur étudié pour qu'il libère les ressources allouées proprement, on fait gaffe etc.
Ceci dit, il est possible de se tirer une balle dans le pied comme en C.
[...] La transmission de paramètres se fait par l'intermédiaire de quoi ? passage par valeur, par adresse, par magie ?
Par référence, au possible.
pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
Par référence, Oui.
Salut les gens.
D'après k:
Du code C++ pur n'a pas besoin de pointeur.
Si. Mais ça ne s'utilise pas tout à fait de la même façon qu'en C.
En fait, les pointeurs sont _moins_ utilisés.
On peut, comme le souligne Laurent Berne, écrire tout un projet sans en voir
la queue d'un.
Pour ce faire, la STL fournit des conteneurs prêts à l'emploi,
vector/list/map etc., qui évite de gérer les mécanismes d'allocation et de
libération de ressources dans de nombreux cas de figures.
Sinon, on utilise un pointeur intelligent, on encapsule ses pointeurs dans
une classe ou un conteneur étudié pour qu'il libère les ressources allouées
proprement, on fait gaffe etc.
Ceci dit, il est possible de se tirer une balle dans le pied comme en C.
[...]
La transmission de paramètres se fait par l'intermédiaire de quoi ?
passage par valeur, par adresse, par magie ?
Par référence, au possible.
pour passer un objet STL
il faut faire hériter de la classe parameter et il s'en occupe
tout seul ou quoi ?
Si. Mais ça ne s'utilise pas tout à fait de la même façon qu'en C. En fait, les pointeurs sont _moins_ utilisés. On peut, comme le souligne Laurent Berne, écrire tout un projet sans en voir la queue d'un.
Pour ce faire, la STL fournit des conteneurs prêts à l'emploi, vector/list/map etc., qui évite de gérer les mécanismes d'allocation et de libération de ressources dans de nombreux cas de figures.
Sinon, on utilise un pointeur intelligent, on encapsule ses pointeurs dans une classe ou un conteneur étudié pour qu'il libère les ressources allouées proprement, on fait gaffe etc.
Ceci dit, il est possible de se tirer une balle dans le pied comme en C.
[...] La transmission de paramètres se fait par l'intermédiaire de quoi ? passage par valeur, par adresse, par magie ?
Par référence, au possible.
pour passer un objet STL il faut faire hériter de la classe parameter et il s'en occupe tout seul ou quoi ?
Par référence, Oui.
David MAREC
D'après Laurent BERNE:
Si tu as envie de rire, vas faire un tour sur fclc++ et décrit comment le C++ a une gestion pourrie des pointeurs. Tu vas va voir tu vas y déclencher l'hilarité générale !
Bof, ils ne sont pas très portés sur l'humour dans ce groupe là.
Des pinces-sans-rire, peut-être ?
D'après Laurent BERNE:
Si tu as envie de rire, vas faire un tour sur fclc++ et décrit comment
le C++ a une gestion pourrie des pointeurs.
Tu vas va voir tu vas y déclencher l'hilarité générale !
Bof, ils ne sont pas très portés sur l'humour dans ce groupe là.
Si tu as envie de rire, vas faire un tour sur fclc++ et décrit comment le C++ a une gestion pourrie des pointeurs. Tu vas va voir tu vas y déclencher l'hilarité générale !
Bof, ils ne sont pas très portés sur l'humour dans ce groupe là.
Des pinces-sans-rire, peut-être ?
David MAREC
D'après Vincent Schmid:
Questions aux développeurs, s'il y en a sur ce groupe :
A vue de nez, y 'en a .
D'après Vincent Schmid:
Questions aux développeurs, s'il y en a sur ce groupe :
Questions aux développeurs, s'il y en a sur ce groupe :
A vue de nez, y 'en a .
Thierry B.
Manuel Leclerc wrote:
faut un pointeur différent déclaré par objet, non ?). Et puis, il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
A la limite, on met ça dans l'installeur, et zou...
Manuel Leclerc wrote:
faut un pointeur différent déclaré par objet, non ?). Et puis,
il faut du coup faire remonter les détails d'implémentations
dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
A la limite, on met ça dans l'installeur, et zou...
faut un pointeur différent déclaré par objet, non ?). Et puis, il faut du coup faire remonter les détails d'implémentations dans les fonctions appelantes, jusqu'à 'main' tant qu'on y est.
A la limite, on met ça dans l'installeur, et zou...
Emmanuel Florac
Le Fri, 27 Aug 2004 16:34:35 +0200, Laurent BERNE a écrit :
Si tu fais du C++, tu n'utilises pas de pointeurs, donc pas de fuite mémoire. Tu confonds avec le C.
Ah oui, d'accord. Mais bien sûr. Tu confonds sans doute avec C#?
-- Mais monsieur, voudriez-vous que je me l'écorchasse? Barbey d'Aurevilly.
Le Fri, 27 Aug 2004 16:34:35 +0200, Laurent BERNE a écrit :
Si tu fais du C++, tu n'utilises pas de pointeurs, donc pas de fuite
mémoire. Tu confonds avec le C.
Ah oui, d'accord. Mais bien sûr. Tu confonds sans doute avec C#?
--
Mais monsieur, voudriez-vous que je me l'écorchasse?
Barbey d'Aurevilly.
Le Fri, 27 Aug 2004 16:34:35 +0200, Laurent BERNE a écrit :
Si tu fais du C++, tu n'utilises pas de pointeurs, donc pas de fuite mémoire. Tu confonds avec le C.
Ah oui, d'accord. Mais bien sûr. Tu confonds sans doute avec C#?
-- Mais monsieur, voudriez-vous que je me l'écorchasse? Barbey d'Aurevilly.
Emmanuel Florac
Le Fri, 27 Aug 2004 17:55:59 +0200, Laurent BERNE a écrit :
Je sais pas si c'est considéré comme un garbage collector, du fait que l'objet ne survit pas à la portée (au contraire des GC qui ont un mécanisme plutôt flou sur le sujet..).
Ça n'en est pas un, et c'est pour cela qu'on se retrouve à gérer généralement la mémoire à la main aussi en C++.
-- Le commissaire : Comment vous appelez-vous? Garance : Moi je ne m'appelle jamais, je suis toujours là. J'ai pas besoin de m'appeler. Mais les autres m'appellent Garance, si ça peut vous intéresser. Prévert,"les enfants du Paradis".
Le Fri, 27 Aug 2004 17:55:59 +0200, Laurent BERNE a écrit :
Je sais pas si c'est considéré comme un garbage collector, du fait que
l'objet ne survit pas à la portée (au contraire des GC qui ont un
mécanisme plutôt flou sur le sujet..).
Ça n'en est pas un, et c'est pour cela qu'on se retrouve à gérer
généralement la mémoire à la main aussi en C++.
--
Le commissaire : Comment vous appelez-vous?
Garance : Moi je ne m'appelle jamais, je suis toujours là. J'ai pas
besoin de m'appeler. Mais les autres m'appellent Garance, si ça peut
vous intéresser.
Prévert,"les enfants du Paradis".
Le Fri, 27 Aug 2004 17:55:59 +0200, Laurent BERNE a écrit :
Je sais pas si c'est considéré comme un garbage collector, du fait que l'objet ne survit pas à la portée (au contraire des GC qui ont un mécanisme plutôt flou sur le sujet..).
Ça n'en est pas un, et c'est pour cela qu'on se retrouve à gérer généralement la mémoire à la main aussi en C++.
-- Le commissaire : Comment vous appelez-vous? Garance : Moi je ne m'appelle jamais, je suis toujours là. J'ai pas besoin de m'appeler. Mais les autres m'appellent Garance, si ça peut vous intéresser. Prévert,"les enfants du Paradis".