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

 

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

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  22353  22354  22355  ..  27201  27202  27203  27204  27205  27206
Auteur Sujet :

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

n°2304266
el muchach​o
Comfortably Numb
Posté le 08-08-2017 à 20:04:17  profilanswer
 

Reprise du message précédent :

Plam a écrit :


Et cette complexité est bien payée en retour ? Ou alors on peut aller voir plus simple pour tout autant de bonnes choses ? (je me doute que ça sera un avis et pas la vérité, mais je suis curieux :) )


En terme de productivité, c'est clairement pas le langage qui brille. Par contre, comme le C, il garantit des perfs qui sont prédictibles pour peu que tu ne codes pas comme un gros gorêt. Et c'est pour ça que c'est le langage de prédilection des jeux vidéo, du temps réel, etc.
En gros, pour un programme non trivial (càd pas un simple benchmark, mais une vraie appli), tu peux t'attendre à 2-3x les perfs de Java tout en tant plus stables, 2-3x moins de mémoire utilisée, et aussi une productivité du programmeur 2-3x moindre. Et ce avec du code tout à fait pédestre, pas spécialement optimisé.
Le problème, c'est que si tu lâches das la nature un gorêt qui produit au quotidien de la bouse comme ce que j'ai posté hier (la "matrice 2D de floats" qui n'en est pas une), en C++ il peut te pondre en quelques mois un énorme tas de bouse parfaitemement incompréhensible et inmaintenable encore plus facilement que dans d'autres langages mainstream. Et là ce n'est pas 2-3x de baisse de productivité que tu prends dans la vue, c'est 8-10x.

 

edit: ça n'a pas traîné, le Trumpiste de Google a été viré.


Message édité par el muchacho le 08-08-2017 à 20:13:26

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le 08-08-2017 à 20:04:17  profilanswer
 

n°2304267
flo850
moi je
Posté le 08-08-2017 à 20:46:10  profilanswer
 

ratibus a écrit :

En tout cas avec PHP, on n'a pas toutes ces emmerdes :o


mais tu parles de l'opérateur == ou de === comme opérateur de comparaison en PHP ?


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

n°2304268
ratibus
Posté le 08-08-2017 à 20:51:32  profilanswer
 

flo850 a écrit :


mais tu parles de l'opérateur == ou de === comme opérateur de comparaison en PHP ?


Ca dépend des use cases. Tu fais comment en JS ?

Spoiler :

[:sophie]

n°2304269
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 08-08-2017 à 21:57:29  profilanswer
 

nraynaud a écrit :

Hum, la discussion a démarré parce que le signe égal a un comportement super bizarre et variable en C++


Ben c'est pas forcément bizarre, comme toute fonction si on l'appelle avec un argument const ça ne marche pas si la fonction est définie avec un argument pas const. Justement c'est grâce à ce genre de trucs qu'on comprend la signification de const et de rvalue reference qui ne sont pas des concepts triviaux. En l'occurrence, le comportement indiqué qui fait appeler un autre mécanisme de copie ne devrait pas entraîner de bug si les constructeurs ne font rien d'extravagant ; et quand on en est à utiliser des constructeurs extravagants ou à se préoccuper de la perte de performance liée à l'appel d'un constructeur plutôt qu'un autre, on est mûr pour se poser des questions. Ce que j'apprécie c'est qu'avec un debugger et quelques minutes (:o) sur stackoverflow on est au jus.

n°2304270
el muchach​o
Comfortably Numb
Posté le 08-08-2017 à 22:46:01  profilanswer
 

lol l'autre jour, je ne comprenais pas pourquoi sous Visual Studia, j'avais un problème de link sur une classe de débogage définie dans un .h:

Code :
  1. class Tracer {
  2. public:
  3.  Tracer(std::string name){
  4.   classname = name;
  5.   indents.push(" " );
  6.  }
  7.  virtual ~Tracer(){ indents.pop(); }
  8.  void traceIn(){
  9.   static long step = 0;
  10.   for (unsigned int i = 0; i < indents.size(); i++) { spaces += "   "; }
  11.   std::cout << step++ << spaces << "<" << classname << "(" << "," << " )" << std::endl;
  12.  }
  13.  void traceOut(Status s){
  14.   std::cout << spaces << "status:" << classname << "(" << printStatus(s) << "," <<  " )>" << std::endl;
  15.  }
  16.  std::string printStatus(Status s){
  17.   switch (s){
  18.   case Status::ABORTED: return "ABORT";
  19.   case Status::ERROR: return "ERROR";
  20.   case Status::FAILURE: return "FAILURE";
  21.   case Status::NOTRUN: return "NOT RUN";
  22.   case Status::RUNNING: return "RUNNING";
  23.   case Status::SUCCESS: return "SUCCESS";
  24.   }
  25.  }
  26. private:
  27.  std::string classname;
  28.  std::string spaces;
  29.  static std::stack<std::string> indents;
  30. };
 

Le compilo me crache ça:

Citation :

error LNK2001: symbole externe non rÚsolu "private: static class std::stack<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::deque<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > BehaviorTree::Tracer::indents" (?indents@Tracer@BehaviorTree@@0V?$stack@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$deque@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@@std@@A)
1>C:\Users\Nicolas\Documents\Visual Studio 2013\Projects\BehaviorTree\x64\Debug\BehaviorTree.exe

 

WTF ? Il n'arrive pas à linker la standard lib ?
Un coup de google et je trouve la réponse: le static ne peut être défini que dans une seule unité de compilation, donc un .cpp. Je vire le static et plus d'erreur de link. [:marc]

Message cité 2 fois
Message édité par el muchacho le 08-08-2017 à 22:50:13

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2304271
sligor
Posté le 08-08-2017 à 22:49:02  profilanswer
 

el muchacho a écrit :


Code :
  1. class Tracer {
  2. public:
  3.  Tracer(std::string name){
  4.   classname = name;
  5.   indents.push(" " );
  6.  }
  7.  virtual ~Tracer(){ indents.pop(); }
  8.  void traceIn(){
  9.   static long step = 0;
  10.   for (unsigned int i = 0; i < indents.size(); i++) { spaces += "   "; }
  11.   std::cout << step++ << spaces << "<" << classname << "(" << "," << " )" << std::endl;
  12.  }
  13.  void traceOut(Status s){
  14.   std::cout << spaces << "status:" << classname << "(" << printStatus(s) << "," <<  " )>" << std::endl;
  15.  }
  16.  std::string printStatus(Status s){
  17.   switch (s){
  18.   case Status::ABORTED: return "ABORT";
  19.   case Status::ERROR  : return "ERROR";
  20.   case Status::FAILURE: return "FAILURE";
  21.   case Status::NOTRUN : return "NOT RUN";
  22.   case Status::RUNNING: return "RUNNING";
  23.   case Status::SUCCESS: return "SUCCESS";
  24.   }
  25.  }
  26. private:
  27.  std::string classname;
  28.  std::string spaces;
  29.  static std::stack<std::string> indents;
  30. };




FYP  [:bakk16]

n°2304272
el muchach​o
Comfortably Numb
Posté le 08-08-2017 à 22:51:14  profilanswer
 

C'est probablement pas le meilleur code C++ que tu aies vu, j'en conviens. :D
Le printStatus() j'en suis pas très fier... :D mais je voulais pondre un truc rapidement dans le métro [:petrus75]

 

Tiens d'ailleurs j'ai un problème que je n'arrive pas à résoudre (je n'ai pas trouvé de solution élégante): dans un behavior tree, j'ai une hiérarchie de classes, dérivant de la classe Node, chaque Node ayant une méthode run(); j'ai un arbre n-aire de Nodes divers et variés de cette hierarchie de classes, et à l'exécution, on parcourt l'arbre en exécutant tour à tour la méthode run() de chaque noeud.
Je voudrais que ma classe de trace affiche lors de l'exécution du run() d'un noeud le nom de la classe dont le noeud est une instance. Comment faire pour afficher ce nom à l'exécution, sans que j'aie à mettre le nom en dur dans classname ? Au départ je voulais la récupérer dans le constructeur mais ça n'est pas possible.
typeid fera l'affaire ?

Message cité 1 fois
Message édité par el muchacho le 08-08-2017 à 23:12:00

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2304273
el muchach​o
Comfortably Numb
Posté le 08-08-2017 à 23:06:25  profilanswer
 

J'aurais quand même pu utiliser une initializer list [:petrus75]


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

hephaestos a écrit :

Ben c'est pas forcément bizarre, comme toute fonction si on l'appelle avec un argument const ça ne marche pas si la fonction est définie avec un argument pas const.


Le problème c'est pas ça, c'est que t'as un fallback silencieux sur un comportement foireux que tu veux absolument pas.

hephaestos a écrit :

Justement c'est grâce à ce genre de trucs qu'on comprend la signification de const et de rvalue reference qui ne sont pas des concepts triviaux.


const est absolument un concept trivial, ce qui n'est pas trivial ce sont les plâtrées de merdes que le C++ a en dessous, au dessus et tout autour, rvalue reference inclues.

Message cité 1 fois
Message édité par masklinn le 09-08-2017 à 00:09:00

---------------
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°2304275
theShockWa​ve
I work at a firm named Koslow
Posté le 09-08-2017 à 00:59:00  profilanswer
 

el muchacho a écrit :

lol l'autre jour, je ne comprenais pas pourquoi sous Visual Studia, j'avais un problème de link sur une classe de débogage définie dans un .h:

Code :
  1. class Tracer {
  2. public:
  3. Tracer(std::string name){
  4.  classname = name;
  5.  indents.push(" " );
  6. }
  7. virtual ~Tracer(){ indents.pop(); }
  8. void traceIn(){
  9.  static long step = 0;
  10.  for (unsigned int i = 0; i < indents.size(); i++) { spaces += "   "; }
  11.  std::cout << step++ << spaces << "<" << classname << "(" << "," << " )" << std::endl;
  12. }
  13. void traceOut(Status s){
  14.  std::cout << spaces << "status:" << classname << "(" << printStatus(s) << "," <<  " )>" << std::endl;
  15. }
  16. std::string printStatus(Status s){
  17.  switch (s){
  18.  case Status::ABORTED: return "ABORT";
  19.  case Status::ERROR: return "ERROR";
  20.  case Status::FAILURE: return "FAILURE";
  21.  case Status::NOTRUN: return "NOT RUN";
  22.  case Status::RUNNING: return "RUNNING";
  23.  case Status::SUCCESS: return "SUCCESS";
  24.  }
  25. }
  26. private:
  27. std::string classname;
  28. std::string spaces;
  29. static std::stack<std::string> indents;
  30. };
 

Le compilo me crache ça:

Citation :

error LNK2001: symbole externe non rÚsolu "private: static class std::stack<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::deque<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > BehaviorTree::Tracer::indents" (?indents@Tracer@BehaviorTree@@0V?$stack@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$deque@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@@std@@A)
1>C:\Users\Nicolas\Documents\Visual Studio 2013\Projects\BehaviorTree\x64\Debug\BehaviorTree.exe

 

WTF ? Il n'arrive pas à linker la standard lib ?
Un coup de google et je trouve la réponse: le static ne peut être défini que dans une seule unité de compilation, donc un .cpp. Je vire le static et plus d'erreur de link. [:marc]

 

Donc en fait, il te manquait juste dans ton CPP :

Code :
  1. static std::stack<std::string> Tracer::indents;


Pas besoin de retirer ton static. Il faut "juste" faire la nuance entre déclaration et initialisation ... (je mets des guillemets, parce qu'il y a un brin de discussion à ce sujet)

 

Edit : au passage, ca ne te pique pas trop les yeux, tes messages d'erreur traduits ? [:pingouino]
Edit 2 : pour pinailler un peu :

 
Code :
  1. class Tracer {
  2. public:
  3. Tracer(std::string name){ // const std::string& ?
  4.  classname = name; // pourquoi ne pas passer par un initializer ?
  5.  indents.push(" " );
  6. }
  7. virtual ~Tracer(){ indents.pop(); }
  8. void traceIn(){ // donc l'utilisateur doit manuellement appeler traceIn() sur cette instance pour finaliser l'initialisation ?
  9.  static long step = 0;
  10.  for (unsigned int i = 0; i < indents.size(); i++) { spaces += "   "; } // ou alors : spaces.append(indents.size()*2, ' ');
  11.  std::cout << step++ << spaces << "<" << classname << "(" << "," << " )" << std::endl; // duh ! "<blah(, )" ? Sans utilité pour les paranthèses et avec un '<' sans '>' correspondant ? Accessoirement, aussi, quand tu écris un caractère, pourquoi tu utilises une chaine ?
  12. }
  13. void traceOut(Status s){ // elle est pas const, cette méthode ?
  14.  std::cout << spaces << "status:" << classname << "(" << printStatus(s) << "," <<  " )>" << std::endl;
  15. }
  16. std::string printStatus(Status s){ // pourquoi ne pas retourner un const char* à ce niveau là ? ici, tu construits des string juste pour le plaisir de faire des memcpy ?
  17.  switch (s){
  18.  case Status::ABORTED: return "ABORT";
  19.  case Status::ERROR: return "ERROR";
  20.  case Status::FAILURE: return "FAILURE";
  21.  case Status::NOTRUN: return "NOT RUN";
  22.  case Status::RUNNING: return "RUNNING";
  23.  case Status::SUCCESS: return "SUCCESS";
  24.  } // pas de default: pas de return si le switch vautre ? C'est pas super robuste, tout ca.
  25. }
  26. private:
  27. std::string classname;
  28. std::string spaces;
  29. static std::stack<std::string> indents; // donc techniquement, ici, tu stockes des string, mais en fait, ca te sert juste à compter le nombre d'instance de Tracer que tu as ? Super efficace.
  30. };


mouaif, ca passerait pas une code review d'ici :/

Message cité 1 fois
Message édité par theShockWave le 09-08-2017 à 02:18:14

---------------
last.fm
mood
Publicité
Posté le 09-08-2017 à 00:59:00  profilanswer
 

n°2304276
tryptique
Stay hungry, stay foolish
Posté le 09-08-2017 à 03:54:46  profilanswer
 

Le mec de l'IT a sorti mon Mac de sa boîte sous mes yeux pour scanner un vulgaire code bar [:je rage]  
Heureusement qu'il l'a remis dedans aussi sec et que j'ai pu le déballer pour de vrai une fois arrivé à mon bureau :o
[:ocolor]


---------------
"J'ai les goûts les plus simples du monde, je me contente du meilleur" O. Wilde - Freedom of time is the new luxury. Time to sleep, work, play, relax, travel, inspire and get inspired. Time to write your story.
n°2304277
uriel
blood pt.2
Posté le 09-08-2017 à 04:13:05  profilanswer
 

pendant ce temps en Allemagne: https://www.youtube.com/watch?v=hQGPcnnCNZg [:pingouino]   [:red faction]


---------------
IVG en france
n°2304278
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 05:30:20  profilanswer
 

masklinn a écrit :


Le problème c'est pas ça, c'est que t'as un fallback silencieux sur un comportement foireux que tu veux absolument pas.


Comment ça un fallback silencieux ? On appelle le constructeur avec une référence à un élément constant, du coup il utilise le constructeur qui prend une référence à un élément constant.

 

Et pourquoi on ne le voudrait absolument pas ? Les deux constructeur sont des constructeurs de copie, ils ont la même valeur sémantique en principe ils ne diffèrent qu'en terme de performance.


Message édité par hephaestos le 09-08-2017 à 07:12:07
n°2304279
el muchach​o
Comfortably Numb
Posté le 09-08-2017 à 07:07:09  profilanswer
 

theShockWave a écrit :


mouaif, ca passerait pas une code review d'ici :/


Non mais je sais, ça ne passerait pas mon code review, j'ai écrit ça à l'arrache parce que j'en ai besoin pour déboguer, je ne mettrais jamais ça en prod.
D'une part le printStatus serait une méthode de l'enum et transformé en un operator<<, d'autre part je n'utiliserais pas une stack mais une simple int que je passe à <<, je ferai de la coloration syntaxique, etc.
Mais j'ai pas codé en C++ depuis des mois, je fais ça quand j'ai le temps dans le métro je n'ai pas internet pour retrouver la syntaxe à la con qui va bien. Et enfin, toute ma classe serait une classe static dans un cpp au lieu d'un machin adhoc dans un .h, mais ça n'est pas le but, le but est de coder un design pattern qui m'intéresse pour le plaisir (j'en ai déjà un proto qui fonctionne à peu près bien) et à l'avenir tester quelques idées:
- utiliser des distributions de probabilités pour les noeuds
- éventuellement intégrer un réseau de neurone dans certains noeuds

 

Sinon, peut-être qu'un jour je l'utiliserai en embarqué, et alors je le peaufinerai, mais c'est peu probable.

 

edit: ceci dit, Je prends note de tes remarques en Particulier sur les const char* à la place de string sur l'enum et les classnames
les messages d'erreur, j'aime pas mais j'y peux rien, c'est Visual Studio en VF qui me les sort comme ça.


Message édité par el muchacho le 09-08-2017 à 09:09:56

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2304280
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-08-2017 à 08:01:20  profilanswer
 

el muchacho a écrit :

Au départ je voulais la récupérer dans le constructeur mais ça n'est pas possible.  
typeid fera l'affaire ?


 
Je pense  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2304281
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-08-2017 à 08:16:15  profilanswer
 

hephaestos a écrit :

 

Il n'y a pas de magie, et ça aide à comprendre la philosophie derrière certains concepts qui restent des boites noires en java ou en C#.

 

Mmm je sais pas, entre le comportement par défaut parfois étrange (on te default certains trucs mais pas d'autres) et la possibilité de surcharger absolument tout je dirais qu'au contraire il faut se méfier de tout.

 

Le type qui a mis ça dans la STL :

Code :
  1. fs::path p1("C:\\temp" );
  2. p1 /= "user";
  3. p1 /= "data";
  4. cout << p1 << "\n";
  5. fs::path p2("C:\\temp\\" );
  6. p2 += "user";
  7. p2 += "data";
  8. cout << p2 << "\n";
 

output:

 

C:\temp\user\data
C:\temp\userdata


Il s'est sans doute cru malin en surchargeant operator/= operator/ and co, mais c'est pas ce j’appellerai un comportement sans surprise. Ok tu RTFM et tu comprends le code, mais ya rien d'intuitif ou de prédictif là-dedans.

Message cité 1 fois
Message édité par Xavier_OM le 09-08-2017 à 08:17:14

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2304282
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 08:24:46  profilanswer
 

Xavier_OM a écrit :


 
Mmm je sais pas, entre le comportement par défaut parfois étrange (on te default certains trucs mais pas d'autres) et la possibilité de surcharger absolument tout je dirais qu'au contraire il faut se méfier de tout.
 
Le type qui a mis ça dans la STL :

Code :
  1. fs::path p1("C:\\temp" );
  2. p1 /= "user";
  3. p1 /= "data";
  4. cout << p1 << "\n";
  5. fs::path p2("C:\\temp\\" );
  6. p2 += "user";
  7. p2 += "data";
  8. cout << p2 << "\n";


 
output:
 

C:\temp\user\data
C:\temp\userdata


Il s'est sans doute cru malin en surchargeant operator/= operator/ and co, mais c'est pas ce j’appellerai un comportement sans surprise. Ok tu RTFM et tu comprends le code, mais ya rien d'intuitif ou de prédictif là-dedans.


C'est précisément à ce genre de trucs que je pensais quand je parlais d'expressivité arbitraire. Perso c'est ce que j'aime dans ce language. Des surprises et de la magie il y en a aussi dans les autres languages, mais là on a accés direct à la machinerie.

n°2304284
masklinn
í dag viðrar vel til loftárása
Posté le 09-08-2017 à 10:28:33  profilanswer
 

Essai intéressant sur les parallèles entre l'essai du googol et la maltraitance: http://tim.dreamwidth.org/2035407.html

 
ratibus a écrit :

Y a vraiment des gens qui utilise les APIdoc ?


1. oui
2. c'est pas la question

hephaestos a écrit :

Comment ça un fallback silencieux ? On appelle le constructeur avec une référence à un élément constant, du coup il utilise le constructeur qui prend une référence à un élément constant.


On invoque un constructeur avec un std::move, on s'attend donc à avoir un move constructor pas une copie, on a spécifiquement demandé un move.

hephaestos a écrit :

Les deux constructeur sont des constructeurs de copie, ils ont la même valeur sémantique en principe ils ne diffèrent qu'en terme de performance.


T'en as strictement aucune idée, pour autant que tu saches chaque copie de l'objet c'est un enfant mis en esclavage sexuel [:spamafote]

Message cité 3 fois
Message édité par masklinn le 09-08-2017 à 10:32:13

---------------
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°2304287
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-08-2017 à 10:57:28  profilanswer
 

masklinn a écrit :


On invoque un constructeur avec un std::move, on s'attend donc à avoir un move constructor pas une copie, on a spécifiquement demandé un move.


 
Je pense aussi que std::move sur un const devrait déclencher une erreur de compilation (ok on perd la possibilité de faire un ctor obscure du genre Foo::Foo(Foo const&& f) mais bon voilà l'intérêt quoi...), plutôt que d'assumer que les gens seront conscients que c'est impossible et de rester silencieux quand une telle contradiction survient.
 
Si le but du langage c'est (visiblement) que std::move() ne move pas/ne garantisse pas qu'un move aura lieu, ben fallait pas l'appeler move alors :/


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2304288
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 11:01:20  profilanswer
 

masklinn a écrit :


On invoque un constructeur avec un std::move, on s'attend donc à avoir un move constructor pas une copie, on a spécifiquement demandé un move.


 
std::move ne demande rien, il autorise. Les rvalue references existaient avant C++11, sauf qu'on ne pouvait pas en tirer parti. Là on manifeste notre accord pour traiter notre objet comme une rvalue reference par le std::move. Il se trouve qu'aucun constructeur ne tire parti de ce truc là parce qu'on n'en a pas défini, ben on fait comme on a toujours fait.
 

masklinn a écrit :


T'en as strictement aucune idée, pour autant que tu saches chaque copie de l'objet c'est un enfant mis en esclavage sexuel [:spamafote]


On est d'accord que ça devrait pas être le cas général ? Quand c'est le cas on se pose des questions, c'est pas plus mal, non ?

n°2304290
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 11:05:53  profilanswer
 

Xavier_OM a écrit :


 
Je pense aussi que std::move sur un const devrait déclencher une erreur de compilation (ok on perd la possibilité de faire un ctor obscure du genre Foo::Foo(Foo const&& f) mais bon voilà l'intérêt quoi...), plutôt que d'assumer que les gens seront conscients que c'est impossible et de rester silencieux quand une telle contradiction survient.
 
Si le but du langage c'est (visiblement) que std::move() ne move pas/ne garantisse pas qu'un move aura lieu, ben fallait pas l'appeler move alors :/


C'est vrai que le nom porte à confusion, mais le truc c'est qu'après avoir appelé std::move, on ne peut plus utiliser notre objet. C'est une déclaration d'intention, une promesse qu'on s'en servira plus. Et on a intérêt à la tenir, d'où le nom sans ambiguité mais mensonger.

n°2304292
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 11:15:54  profilanswer
 

Quelle est l'expression anglaise pour "relancer quelqu'un" qui n'a pas répondu à une invitation :??:


---------------
Twitter
n°2304295
masklinn
í dag viðrar vel til loftárása
Posté le 09-08-2017 à 11:33:44  profilanswer
 

koskoz a écrit :

Quelle est l'expression anglaise pour "relancer quelqu'un" qui n'a pas répondu à une invitation :??:


follow up (on/with)?

hephaestos a écrit :

On est d'accord que ça devrait pas être le cas général ?


Heuu… non. Et encore moins que tu partes du principe que c'est le cas général.
 
Pour moi le cas général c'est surtout que tu devrais pas avoir de constructeur par copie.

hephaestos a écrit :

C'est vrai que le nom porte à confusion


Pas qu'un peu.

hephaestos a écrit :

mais le truc c'est qu'après avoir appelé std::move, on ne peut plus utiliser notre objet.


C'est même pas vrai:

Citation :

Unless otherwise specified, such moved-from objects shall be placed in a valid but unspecified state.

Message cité 1 fois
Message édité par masklinn le 09-08-2017 à 11:41:28

---------------
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°2304298
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 11:41:03  profilanswer
 

En gros je relis un commit, je vois une méthode pour relancer les inviter qui n'ont pas répondus à une invitation mais celle-ci est nommée "relaunchGuest()".
 
Follow up peut-être pas mal : followUpWithPendingGuests() ou reinvitePendingGuest()
 
Pas sur pour le reinvite.


---------------
Twitter
n°2304299
masklinn
í dag viðrar vel til loftárása
Posté le 09-08-2017 à 11:41:50  profilanswer
 

koskoz a écrit :

En gros je relis un commit, je vois une méthode pour relancer les inviter qui n'ont pas répondus à une invitation mais celle-ci est nommée "relaunchGuest()".
 
Follow up peut-être pas mal : followUpWithPendingGuests() ou reinvitePendingGuest()
 
Pas sur pour le reinvite.


"remind"?


---------------
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°2304300
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 11:46:32  profilanswer
 

Pas mal !


Message édité par koskoz le 09-08-2017 à 11:46:36

---------------
Twitter
n°2304303
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 12:07:56  profilanswer
 

masklinn a écrit :


Heuu… non. Et encore moins que tu partes du principe que c'est le cas général.

 

Pour moi le cas général c'est surtout que tu devrais pas avoir de constructeur par copie.


Je trouve étrange ton cas général, mais du coup tu le désactives, problème résolu, tu as une erreur de compilation comme tu t'y attendrais ?

 
masklinn a écrit :


C'est même pas vrai:

Citation :

Unless otherwise specified, such moved-from objects shall be placed in a valid but unspecified state.


 

Oui, il peut être assigné ou détruit.

Message cité 1 fois
Message édité par hephaestos le 09-08-2017 à 12:08:22
n°2304306
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-08-2017 à 12:14:00  profilanswer
 

hephaestos a écrit :


Je trouve étrange ton cas général, mais du coup tu le désactives, problème résolu, tu as une erreur de compilation comme tu t'y attendrais ?
 


 
Ben oui mais hélas c'est là qu'est l'os : de base sans rien demander tu as un copy constructor. Donc il faut avoir en tête que : "par défaut j'ai un copy ctor qui va silencieusement prendre en charge les move foireux sur const"
Si on n'avait pas de default copy ctor ou que move refusait de marcher sur des const, le comportement par défaut serait plus sain.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2304308
masklinn
í dag viðrar vel til loftárása
Posté le 09-08-2017 à 12:51:04  profilanswer
 

Xavier_OM a écrit :

Ben oui mais hélas c'est là qu'est l'os : de base sans rien demander tu as un copy constructor. Donc il faut avoir en tête que : "par défaut j'ai un copy ctor qui va silencieusement prendre en charge les move foireux sur const"
Si on n'avait pas de default copy ctor ou que move refusait de marcher sur des const, le comportement par défaut serait plus sain.


Je crois qu'en C++14 déclarer un move ctor va supprimer le copy ctor. En C++11, tu veux probablement supprimer le copy ctor (et copy-assignment) avec =delete ou le rendre `explicit` dès que tu déclares un move ctor, je sais pas s'il y a des linters qui permettent de vérifier ça. Je crois que boost a aussi une classe de base pour rendre un type non copiable (genre ça déclare un copy ctor privé)


Message édité par masklinn le 09-08-2017 à 12:52:50

---------------
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°2304309
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-08-2017 à 14:14:57  profilanswer
 

masklinn a écrit :

Essai intéressant sur les parallèles entre l'essai du googol et la maltraitance: http://tim.dreamwidth.org/2035407.html
 


 

Citation :

When you say that the manifesto writer had a point, you are saying that Rodger and Lépine had a point.


Classe.

n°2304310
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 14:26:17  profilanswer
 

Mon directeur veut absolument faire du NodeJS parce que c'est hype, et du coup le premier projet sur lequel on l'utiliserait ne justifie pas du tout cette techno [:sadnoir]
 
Rien que de penser à de la business logic en JS ça me fou la gerbe [:-the_unforgiven-]


---------------
Twitter
n°2304311
Plam
Bear Metal
Posté le 09-08-2017 à 14:32:47  profilanswer
 

koskoz a écrit :

Mon directeur veut absolument faire du NodeJS parce que c'est hype, et du coup le premier projet sur lequel on l'utiliserait ne justifie pas du tout cette techno [:sadnoir]
 
Rien que de penser à de la business logic en JS ça me fou la gerbe [:-the_unforgiven-]


 
Demande une formation pour être opé :o Profites en pour venir à Grenoble dans nos super locaux, on a une TV 55" toute neuve :o


Message édité par Plam le 09-08-2017 à 14:32:55

---------------
Spécialiste du bear metal
n°2304312
gatsu35
Blablaté par Harko
Posté le 09-08-2017 à 14:32:49  profilanswer
 

koskoz a écrit :

Mon directeur veut absolument faire du NodeJS parce que c'est hype, et du coup le premier projet sur lequel on l'utiliserait ne justifie pas du tout cette techno [:sadnoir]
 
Rien que de penser à de la business logic en JS ça me fou la gerbe [:-the_unforgiven-]


Pauvre petit chou, et en quoi ça te dérange de faire du NodeJS ?  
Tu crois que JS c'est juste un langage pour faire mumuse ?  
 
Et qu'est-ce qui ne justifie pas de faire du node sur ton projet ?

n°2304313
Plam
Bear Metal
Posté le 09-08-2017 à 14:33:33  profilanswer
 

gatsu35 a écrit :


Pauvre petit chou, et en quoi ça te dérange de faire du NodeJS ?  
Tu crois que JS c'est juste un langage pour faire mumuse ?  
 
Et qu'est-ce qui ne justifie pas de faire du node sur ton projet ?


 
Calcul scientifique intensif et fortement multi-threadé, je partirai pas pour du JS. Dès que ta des I/O par contre, c'est mieux :o


---------------
Spécialiste du bear metal
n°2304314
uriel
blood pt.2
Posté le 09-08-2017 à 14:39:27  profilanswer
 

koskoz a écrit :


Rien que de penser à de la business logic en JS ça me fou la gerbe [:-the_unforgiven-]


pourquoi :??:

 

on fait beaucoup de fonction lambda ici, et tout est en node par exemple. (sauf certains bras casses comme moi qui le font en python de temps a autre mais ca n'a rien a voir)

Message cité 1 fois
Message édité par uriel le 09-08-2017 à 14:41:16

---------------
IVG en france
n°2304315
uriel
blood pt.2
Posté le 09-08-2017 à 14:50:47  profilanswer
 

holala, les reactions au memo interne de Google sur la diversite. Combien de ces journalistes ont lu les 10 pages? Toutes les nuances et tournures de phrases du document sont enlevees des news :/

 

et le pauvre mec qui a ecrit ce document se retrouve pointe du doigt comme un sale con misogyne. super.

Message cité 2 fois
Message édité par uriel le 09-08-2017 à 14:51:02

---------------
IVG en france
n°2304316
Plam
Bear Metal
Posté le 09-08-2017 à 15:04:37  profilanswer
 

uriel a écrit :

holala, les reactions au memo interne de Google sur la diversite. Combien de ces journalistes ont lu les 10 pages? Toutes les nuances et tournures de phrases du document sont enlevees des news :/
 
 et le pauvre mec qui a ecrit ce document se retrouve pointe du doigt comme un sale con misogyne. super.


 
En même temps quand tu fais un document comme ça avec des points très critiquables (différences biologiques entre hommes et femmes qui expliquerai le manque de diversité, et autres trucs éculés), faut pas s'attendre à avoir de la nuance quand c'est repris de partout.


---------------
Spécialiste du bear metal
n°2304318
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 15:36:43  profilanswer
 

gatsu35 a écrit :


Pauvre petit chou, et en quoi ça te dérange de faire du NodeJS ?  
Tu crois que JS c'est juste un langage pour faire mumuse ?
 
Et qu'est-ce qui ne justifie pas de faire du node sur ton projet ?


 
 [:chatoo:7]  
 

uriel a écrit :


pourquoi :??:
 
 on fait beaucoup de fonction lambda ici, et tout est en node par exemple. (sauf certains bras casses comme moi qui le font en python de temps a autre mais ca n'a rien a voir)


 
Parce que quand je vois comment développent les gars ici en Java ou PHP j'imagine pas en JS. Parce que les gens font du jQuery alors ils pensent qu'ils peuvent faire du Node. Parce qu'on utilise une techno pas adapté au besoin (un Spring ou Symfony fait mieux le boulot et est plus rapide en temps de développement). Parce qu'il n'y a pas d'I/O. Parce qu'il n'y a pas d'async. Parce qu'il n'y a pas d'API.


Message édité par koskoz le 09-08-2017 à 15:37:41

---------------
Twitter
n°2304319
uriel
blood pt.2
Posté le 09-08-2017 à 15:37:39  profilanswer
 

Plam a écrit :


 
En même temps quand tu fais un document comme ça avec des points très critiquables (différences biologiques entre hommes et femmes qui expliquerai le manque de diversité, et autres trucs éculés), faut pas s'attendre à avoir de la nuance quand c'est repris de partout.


ce que je reproche c'est que les nuances dans le document sont enlevees quand c'est repris.
 Je ne suis pas d'accord avec le mec mais juste le descendre en le traitant de salaud (et toute la silicon valley au passage) ca aide pas au debat.  
 
Meme si certaines etudes statistiques montrent des differences hommes-femmes et se voiler la face la dessus en etant politiquement correct ne sert a rien. Les statistiques sont incompris par la plupart des gens et c'est un autre probleme. Ca devrait etre explique en primaire avec la finance personnelle.

Message cité 2 fois
Message édité par uriel le 09-08-2017 à 15:39:00

---------------
IVG en france
n°2304320
koskoz
They see me trollin they hatin
Posté le 09-08-2017 à 15:38:51  profilanswer
 

Et la diversité hommes - femmes chez les sages-femmes ou les nourrices, on en parle ?


---------------
Twitter
n°2304322
Plam
Bear Metal
Posté le 09-08-2017 à 15:41:09  profilanswer
 

uriel a écrit :


ce que je reproche c'est que les nuances dans le document sont enlevees quand c'est repris.
 Je ne suis pas d'accord avec le mec mais ca aide pas au debat.  Meme si certaines etudes statistiques montrent des differences hommes-femmes et se voiler la face la dessus en etant politiquement correct ne sert a rien. Les statistiques sont incompris par la plupart des gens et c'est un autre probleme. Ca devrait etre explique en primaire avec la finance personnelle.


 
Ça me surprend guère, je me fais bien traiter de gros lobbyiste du nuke par des gens après avoir sorti mon article qui critique négaWatt [:spamafote]
 
En général, faut faire très court et beaucoup sourcer, dans ces cas t'es déjà moins exposé à la critique :)


---------------
Spécialiste du bear metal
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  22353  22354  22355  ..  27201  27202  27203  27204  27205  27206

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)