Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3455 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  19184  19185  19186  ..  27180  27181  27182  27183  27184  27185
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2103229
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 25-09-2011 à 11:22:45  profilanswer
 

Reprise du message précédent :

masklinn a écrit :


Mais prominent, facile à utiliser, central au langage et qui ressemble à quelque chose.


 :sarcastic:  
 

el muchacho a écrit :

Facile à utiliser, c'est vite dit. Le problème avec les pointeurs qui se baladent, c'est le cycle de vie des objets sous-jacents. Tant qu'on reste dans un scope et qu'on fait du RAII, c'est facile, l'objet est créé au début du scope, et détruit en sortie. Dès qu'il sort du scope, il faut réfléchir à quand, comment et par qui il va être détruit. Quelques fois, c'est pas évident, parce qu'il faut en principe faire l'exhaustivité des cas possibles. Si on en oublie un, on a soit un pointeur nul, soit un memleak. A part à l'aide d'un garbage collector, qui sert justement à ça, je ne vois pas trop comment le langage permet de s'économiser cette réflexion.


 
En C++ tu as quelques trucs pour gérer correctement ta mémoire sans garbage collection :
 
 
La durée de vie de gadget est celle de ton instance widget :

Code :
  1. class Widget {
  2. private:
  3.     Gadget g;
  4. };


 
 
 
 
La durée de vie de gadget est celle de ton instance de widget, mais tu partages ton gadget entre différents objets. Tu peux utiliser un shared pointer pour avoir un comptage de référence automatique : la libération se fera automatiquement quand le compteur sera à 0, quand mourra le dernier objet qui possédait une référence vers ce gadget :

Code :
  1. class Widget
  2. private:
  3.     shared_ptr<Gadget> g;
  4. }


 
Presque comme shared_ptr, tu partages une référence entre plusieurs classes, sauf que les weak_ptr ne comptent pas dans le comptage de référence automatique mais peuvent tester si la libération a déjà été faite. Pas mal pour éviter les cycles si tu veux vraiment qu'un objet A possède B et que B possède A.

Code :
  1. class Gadget {
  2. private:
  3.     weak_ptr<Widget> parent;
  4. }


Exemple :

Code :
  1. shared_ptr<Widget> w = parent.lock(); // toujours là ?
  2. if (w) {
  3. // on ne passe jamais ici si parent a été nettoyé, cad quand plus personne ne détient un shared_ptr vers parent.
  4. }


Tout ça type_safe et sans avoir à faire des trucs à la main du genre foutre soi-même NULL dans un Widget* ou stocker des flags 'disposable' pour savoir si oui ou non l'instance existe toujours.
 
 
À noter une petite variante très C++ : unique_ptr. C'est un peu comme un shared_ptr mais quand tu sais qu'un et un seul truc sera responsable de ton objet. Si node est le seul à posséder ses enfants, et qu'il ne partage ça avec personne, tu peux utiliser unique_ptr et c'est un peu mieux niveau perf qu'un shared_ptr partagé par une seule instance.

Code :
  1. class Node {
  2. private:
  3.     vector< unique_ptr<Node> > children;
  4. }


Mais globalement c'est pas très différent.
 
 
 
Bref si tu construits proprement ton truc, tu ne risques pas trop de te demander "est-ce que je dois faire delete ou est-ce que c'est quelqu'un d'autre qui s'en charge ?". Au final tu écris très peu de delete d'ailleurs  [:spamafote] Ton vrai problème commence quand tu tombes sur du C++ pensé comme du C (et c'est pas si rare) blindé de new/delete "kivonbien" je trouve :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le 25-09-2011 à 11:22:45  profilanswer
 

n°2103230
el muchach​o
Comfortably Numb
Posté le 25-09-2011 à 11:25:58  profilanswer
 

Voila, tu utilises bien un compteur de référence (j'ai écrit "garbage collector", mais j'incluais implicitement le comptage de référence --> j'aurais dû écrire gestion de mémoire auto). Le shared_ptr fait ça de façon transparente "attention, cet objet va être reference counted, prière de ne pas faire de delete dessus" ).

 

Ce que je comprends des explications de masklinn, c'est que Rust ne fait implémente certains smart pointers de C++ à l'aide d'un concept plus générique, qu'ils appellent typestates, qui facilite la programmation intentionnelle (je viens de tomber la-dessus). Et qui lui est un concept intéressant.

Message cité 1 fois
Message édité par el muchacho le 25-09-2011 à 11:36:06

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2103231
masklinn
í dag viðrar vel til loftárása
Posté le 25-09-2011 à 11:51:37  profilanswer
 

el muchacho a écrit :


Je ne vois pas ce que tes pointeurs uniques ont de différent des auto_ptr de C++ (respectivement unique_ptr de C++11). Et les auto_ptr, ça ne fait pas l'économie de la réflexion sur le cycle de vie dont je parle, puisqu'en transférant l'ownership, tu es obligé de te poser la question de qui va détruire l'objet. Qu'est-ce que j'ai raté dans ton raisonnement ?


Ya pas de question à se poser, c'est l'owner qui détruit l'objet, un pointeur unique n'a qu'un owner et est le seul pointeur sur l'objet correspondant. Quand tu transfère l'ownership tu transfère la responsabilité de destruction, et le langage vérifie statiquement (via typestates) que seul l'owner a accès au pointeur.

 

Et de cette manière, tu peux intégrer la destruction au langage même: si l'owner d'un pointeur ne transfère pas l'ownership (en retournant le pointeur ou en le passant en argument à un autre), tu peux détruire l'objet puisqu'il n'y a plus personne pouvant y accéder.

 

C'est comme si tu faisais de la stack allocation et que tu pouvais déplacer un objet stack-allocated d'une stack à une autre.

Xavier_OM a écrit :

À noter une petite variante très C++ : unique_ptr. C'est un peu comme un shared_ptr mais quand tu sais qu'un et un seul truc sera responsable de ton objet. Si node est le seul à posséder ses enfants, et qu'il ne partage ça avec personne, tu peux utiliser unique_ptr et c'est un peu mieux niveau perf qu'un shared_ptr partagé par une seule instance.

Code :
  1. class Node {
  2. private:
  3.     vector< unique_ptr<Node> > children;
  4. }


Mais globalement c'est pas très différent.


C'est la même idée, mais via typestates et intégré au langage pour que t'aies pas besoin de faire des std::move (et ptet aussi le delete implicite, je sais pas comment ça se passe précisément avec unique_ptr quand tu le ballades d'une fonction à une autre)

Message cité 1 fois
Message édité par masklinn le 25-09-2011 à 12:41:30

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103233
el muchach​o
Comfortably Numb
Posté le 25-09-2011 à 12:48:59  profilanswer
 

masklinn a écrit :


Ya pas de question à se poser, c'est l'owner qui détruit l'objet, un pointeur unique n'a qu'un owner et est le seul pointeur sur l'objet correspondant. Quand tu transfère l'ownership tu transfère la responsabilité de destruction, et le langage vérifie statiquement (via typestates) que seul l'owner a accès au pointeur.


Ok.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2103235
mareek
Et de 3 \o/
Posté le 25-09-2011 à 13:25:09  profilanswer
 

masklinn a écrit :


Dans ce cas tu demandes des explications plus claires en disant que t'as pas compris, au lieu de te replier sur ton comportement d'idiot du village.
 
(mais si mareek a pu comprendre, je pense que le problème est plus proche de ton côté des intertubes que tu mien, sans vouloir être méchant)


merci du "compliment"  :sarcastic:  


cf quote ci dessus :o

Xavier_OM a écrit :

Bref si tu construits proprement ton truc, tu ne risques pas trop de te demander "est-ce que je dois faire delete ou est-ce que c'est quelqu'un d'autre qui s'en charge ?". Au final tu écris très peu de delete d'ailleurs  [:spamafote] Ton vrai problème commence quand tu tombes sur du C++ pensé comme du C (et c'est pas si rare) blindé de new/delete "kivonbien" je trouve :o


Mais si tu fais tout proprement il n'y a jamais de problème dans aucun langage :spamafote:
Ce que masklinn trouve d'intéressant dans Rust c'est que le comportement propre est le seul disponible (si j'ai bien compris)

el muchacho a écrit :

Voila, tu utilises bien un compteur de référence (j'ai écrit "garbage collector", mais j'incluais implicitement le comptage de référence --> j'aurais dû écrire gestion de mémoire auto). Le shared_ptr fait ça de façon transparente "attention, cet objet va être reference counted, prière de ne pas faire de delete dessus" ).


confondre garbage collector et ref count [:prozac]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°2103236
masklinn
í dag viðrar vel til loftárása
Posté le 25-09-2011 à 13:38:04  profilanswer
 

mareek a écrit :

merci du "compliment"  :sarcastic:


mareek a écrit :

cf quote ci dessus :o


 [:urd]

 

Ah ok :o C'était pour dire que tu es un dev "normal", genre t'es pas 0x90 qui connaît probablement déjà le sujet et a juste besoin de matcher ce qu'on raconte avec ses banques mémoire internes :o

 

Mais je vois pas trop comment le dire autrement, donc bon...


Message édité par masklinn le 25-09-2011 à 13:38:44

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103238
Profil sup​primé
Posté le 25-09-2011 à 14:49:36  answer
 

Ce soir j'aurai ré- écrit ~4000 lignes...  [:chadouw]  
 
J'aurai le reste de la semaine pour débugger....  :sweat:


Message édité par Profil supprimé le 25-09-2011 à 14:50:58
n°2103240
Jubijub
Parce que je le VD bien
Posté le 25-09-2011 à 14:52:33  profilanswer
 

http://internetactu.blog.lemonde.f [...] ens-forts/
 
Article intéressant...


---------------
Jubi Photos : Flickr - 500px
n°2103245
el muchach​o
Comfortably Numb
Posté le 25-09-2011 à 17:12:58  profilanswer
 

mareek a écrit :


confondre garbage collector et ref count [:prozac]


 :heink: Euh non, il n'y a aucune confusion de ma part. Ne pas vouloir les séparer n'a aucune incidence dans cette discussion. Je sais qu'à mon âge très avancé, je suis un peu rouillé sur certaines notions, mais faudrait p-ê pas en conclure trop vite que je suis déjà bon à mettre à la benne, hein. :sarcastic:
Va pas te plaindre qu'on te prend pour un con quand tu fais la même chose avec les autres. Vous êtes sérieusement saoûlants, avec vos concours de bites permanents.

Message cité 1 fois
Message édité par el muchacho le 25-09-2011 à 17:21:41

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2103247
masklinn
í dag viðrar vel til loftárása
Posté le 25-09-2011 à 18:16:12  profilanswer
 

J'ai enfin installé Solarized dans Emacs (Dark), Terminal (Dark) et PyCharm (Light), c'est tro bô [:ripthejacker:4]

Message cité 1 fois
Message édité par masklinn le 25-09-2011 à 18:16:44

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 25-09-2011 à 18:16:12  profilanswer
 

n°2103248
Lam's
Profil: bas.
Posté le 25-09-2011 à 18:22:49  profilanswer
 

el muchacho a écrit :

vos concours de bites permanents.


Represents! \o/

 

Bon j'aurais bien participé un peu, mais je suis trop occupé à donner du bonheur à ma famille.


---------------
✌ Please consider the environment before printing this post. ✌
n°2103249
vapeur_coc​honne
Stig de Loisir
Posté le 25-09-2011 à 18:26:07  profilanswer
 

[:prozac] putain mais pourquoi j'ai mis en route la pyrolyse avant de me poser devant la TV


---------------
marilou repose sous la neige
n°2103250
skeye
Posté le 25-09-2011 à 18:27:11  profilanswer
 

vapeur_cochonne a écrit :

[:prozac] putain mais pourquoi j'ai mis en route la pyrolyse avant de me poser devant la TV


parce-qu'une fois devant la tv t'aurais eu la flemme de re-bouger ton cul jusqu'au four?:o


---------------
Can't buy what I want because it's free -
n°2103251
vapeur_coc​honne
Stig de Loisir
Posté le 25-09-2011 à 18:27:11  profilanswer
 

[:icon3] on peux l'arreter [:joce]


---------------
marilou repose sous la neige
n°2103252
vapeur_coc​honne
Stig de Loisir
Posté le 25-09-2011 à 18:28:48  profilanswer
 

skeye a écrit :


parce-qu'une fois devant la tv t'aurais eu la flemme de re-bouger ton cul jusqu'au four?:o


:non: j'ai plus qu'une tv et elle est dans la cuisine :'(
 
faut que j'en rachete une pour le salon, tant pis pour la beaufitude


---------------
marilou repose sous la neige
n°2103253
skeye
Posté le 25-09-2011 à 18:32:11  profilanswer
 

vapeur_cochonne a écrit :


:non: j'ai plus qu'une tv et elle est dans la cuisine :'(
 
faut que j'en rachete une pour le salon, tant pis pour la beaufitude


T'as même pas une pièce spéciale home cinema dans ton château de160m²?:o


---------------
Can't buy what I want because it's free -
n°2103254
vapeur_coc​honne
Stig de Loisir
Posté le 25-09-2011 à 18:33:57  profilanswer
 

bah non  
j'ai une femme, elle a tout remplie  
je vais ptet virer la chambre d'amis pour en faire un  
mais bon, je suis pas vraiment cinéfile
enfin j'ai pas non plus d'amis  


---------------
marilou repose sous la neige
n°2103255
Profil sup​primé
Posté le 25-09-2011 à 18:59:11  answer
 

Lutain, j'ai perdu de la couleur.

n°2103257
Profil sup​primé
Posté le 25-09-2011 à 19:07:28  answer
 

J'avais oublié d'initializer les couleurs !  :o  
 
 
 [:joglle]  [:boulet_girl]  [:_astrid]  [:mich_mich]  [:painkiller]  [:gijar]  [:smogl]  [:kukron]  [:black_lord]

n°2103259
flo850
moi je
Posté le 25-09-2011 à 19:27:42  profilanswer
 

vapeur_cochonne a écrit :

bah non  
j'ai une femme, elle a tout remplie
je vais la ptet virer la chambre d'amis pour en faire un  
mais bon, je suis pas vraiment cinéfile
enfin j'ai pas non plus d'amis



FTFY


---------------

n°2103260
vapeur_coc​honne
Stig de Loisir
Posté le 25-09-2011 à 19:55:49  profilanswer
 

:D
tes beau parents ça va ?


---------------
marilou repose sous la neige
n°2103261
ratibus
Posté le 25-09-2011 à 19:58:43  profilanswer
 

masklinn a écrit :

J'ai enfin installé Solarized dans Emacs (Dark), Terminal (Dark) et PyCharm (Light), c'est tro bô [:ripthejacker:4]


 
Je l'utilise depuis plusieurs mois avec satisfaction dans phpstorm, en Dark  :jap:


---------------
Mon blog
n°2103263
masklinn
í dag viðrar vel til loftárása
Posté le 25-09-2011 à 20:17:34  profilanswer
 

ratibus a écrit :

Je l'utilise depuis plusieurs mois avec satisfaction dans phpstorm, en Dark  :jap:


Dark il marche pas bien chez moi, dans les fichiers Python j'ai le mot clé class qui apparait en bleu foncé, sur le fond bleu marine c'est illisible (dans le port Emacs les mot clés sont en jaune sombre et les noms de classes en orange, c'est parfait)

 

Et toute l'UI de PyCharm (genre project/class browser) est très claire, ça fait moche avec Dark.


Message édité par masklinn le 25-09-2011 à 20:17:58

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103264
flo850
moi je
Posté le 25-09-2011 à 20:28:47  profilanswer
 

vapeur_cochonne a écrit :

:D
tes beau parents ça va ?


 
comme d'hab quoi :d


---------------

n°2103265
masklinn
í dag viðrar vel til loftárása
Posté le 25-09-2011 à 20:32:13  profilanswer
 

oh-my-zsh a pas de plugin pour mercurial et bazaar ಠ_ಠ
 
Alors qu'il y a des branches pour dans les pull requests ಠ_ಠ
 
Font chier ces giteux ಠ_ಠ


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103266
Mackila
Posté le 25-09-2011 à 21:08:46  profilanswer
 

omg, la chef de ma copine a appelé son fils CharliG [:sadnoir]

n°2103267
Profil sup​primé
Posté le 25-09-2011 à 21:09:14  answer
 

J'ai la haine, parce que... Je me suis planté dans la sauvegarde de mes sources et j'ai du copier coller deux fois tout le code avant que ça marche.  :fou:  
6500 lignes....

n°2103272
vapeur_coc​honne
Stig de Loisir
Posté le 26-09-2011 à 05:31:46  profilanswer
 

dern'z


---------------
marilou repose sous la neige
n°2103273
Dion
Acceuil
Posté le 26-09-2011 à 05:34:18  profilanswer
 

:sarcastic:


---------------
It is not called show art
n°2103274
vapeur_coc​honne
Stig de Loisir
Posté le 26-09-2011 à 05:35:49  profilanswer
 

[:kikiv]


Message édité par vapeur_cochonne le 26-09-2011 à 05:35:55

---------------
marilou repose sous la neige
n°2103275
Loom the G​loom
Even coders get the blues...
Posté le 26-09-2011 à 07:29:31  profilanswer
 

prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


---------------
Music|Market|Feed|Loom|DVD
n°2103276
masklinn
í dag viðrar vel til loftárása
Posté le 26-09-2011 à 08:01:00  profilanswer
 

Loom the Gloom a écrit :

prems [:banguy]

 

BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


Charleroi? [:sadnoir]

 

Ou alors t'étais en flandres avec des plaques françaises? [:sadnoir]

Message cité 1 fois
Message édité par masklinn le 26-09-2011 à 08:01:21

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103277
vapeur_coc​honne
Stig de Loisir
Posté le 26-09-2011 à 08:30:24  profilanswer
 

prem's a paris  
le rer c'est la fete ...


---------------
marilou repose sous la neige
n°2103278
kadreg
profil: Utilisateur
Posté le 26-09-2011 à 08:38:50  profilanswer
 

tu as eut des roumains qui font de l'accordéon avec une vieille radio cassette [:dawak]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2103280
skeye
Posté le 26-09-2011 à 09:11:47  profilanswer
 

preums@voiture au garage.[:dawao]


---------------
Can't buy what I want because it's free -
n°2103281
Harkonnen
Un modo pour les bannir tous
Posté le 26-09-2011 à 09:15:22  profilanswer
 

Loom the Gloom a écrit :

prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


te plains pas, au moins tu t'es fait fracturer ta caisse pour quelque chose :o
y'a quelques années, je suis allé à Cordoue en Espagne... je me suis fait fracturer la caisse pour une paire de lunettes de soleil laissées sur le tableau de bord [:kiki]
en règle générale, en Espagne, vaut mieux éviter de laisser trainer même 1 euro sur le tableau de bord

n°2103282
uriel
blood pt.2
Posté le 26-09-2011 à 09:22:03  profilanswer
 

preums@nespresso


---------------
IVG en france
n°2103283
uriel
blood pt.2
Posté le 26-09-2011 à 09:22:29  profilanswer
 

Loom> rassures toi, ils peuvent pas utiliser ta mastercard :O


---------------
IVG en france
n°2103286
masklinn
í dag viðrar vel til loftárása
Posté le 26-09-2011 à 09:45:42  profilanswer
 

Citation :

I can metastasize now mommy, aren't you proud of me? Today was the day you found out about me. You were talking to the doctor and crying. Why did that mean doctor make you cry? I'm spreading to your pancreas and liver and lungs, so I can hug you from the inside. Why don't you love me mommy?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2103287
boulax
Inserer phrase hype en anglais
Posté le 26-09-2011 à 09:48:29  profilanswer
 

Loom the Gloom a écrit :

prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


déplacement pro?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°2103288
0x90
Posté le 26-09-2011 à 09:54:32  profilanswer
 

La spec des dates de XML 1.0 [:pingouino]

 

"""
Those using this (1.0) version of this Recommendation to represent negative years should be aware that the interpretation of lexical representations beginning with a '-' is likely to change in subsequent versions.

 

[ISO 8601] makes no mention of the year 0; in [ISO 8601:1998 Draft Revision] the form '0000' was disallowed and this recommendation disallows it as well. However, [ISO 8601:2000 Second Edition], which became available just as we were completing version 1.0, allows the form '0000', representing the year 1 BCE. A number of external commentators have also suggested that '0000' be allowed, as the lexical representation for 1 BCE, which is the normal usage in astronomical contexts. It is the intention of the XML Schema Working Group to allow '0000' as a lexical representation in the dateTime, date, gYear, and gYearMonth datatypes in a subsequent version of this Recommendation. '0000' will be the lexical representation of 1 BCE (which is a leap year), '-0001' will become the lexical representation of 2 BCE (not 1 BCE as in this (1.0) version), '-0002' of 3 BCE, etc.
"""

Message cité 1 fois
Message édité par 0x90 le 26-09-2011 à 09:55:01

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  19184  19185  19186  ..  27180  27181  27182  27183  27184  27185

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)