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

 

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

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  22975  22976  22977  ..  27262  27263  27264  27265  27266  27267
Auteur Sujet :

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

n°2338066
Hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-08-2019 à 08:50:48  profilanswer
 

Reprise du message précédent :

gfive a écrit :


 
Du coup, pour un mec qui veut faire un stage en web fullestacke, ne pas savoir ce qu'est un serveur, un langage objet ou fonctionnel, l'asynchronisme ou autre, c'est un peu handicapant.  


La vraie plus-value des écoles d'ingénieur elle est même au delà de ça dans la formation scientifique elle-même. Nico n'a pas entièrement tort quand il pointe le côté conservateur du système mais bon, pour comprendre des équations différentielles, des transformées de Fourier et des lois de conservation on n'a pas besoin d'un professeur disruptif, un vieux schnock qui connait son affaire fait le job très bien. Mes collègues qui ont fait des écoles d'info sont plutôt calés en maths et en stats mais l'idée est la même, les fondamentaux n'ont pas changé depuis 200 ans, et ces bases servent de socle à l'innovation. Maintenant, avoir une formation technologique pertinente c'est pas inutile non plus, et les écoles font ça assez bien je suppose (je saurais pas dire l'école où je bossais enseignait la mécanique avec des turbines construites dans les années 20), mais ça reste globalement des trucs qu'on peut apprendre en formation continue plus tard.

mood
Publicité
Posté le 21-08-2019 à 08:50:48  profilanswer
 

n°2338067
nraynaud
lol
Posté le 21-08-2019 à 09:10:19  profilanswer
 

Je pense que c'est un tort, car je pense (en tout cas j'espère) qu'il existe d'autres manières d'enseigner les maths que ce que j'ai vu. C'est l'horreur pour les gens comme moi. Même si les maths sont vieilles, il doit bien y avoir une manière moins stupide et autoritaire de les enseigner.
 


---------------
trainoo.com, c'est fini
n°2338068
gfive
Posté le 21-08-2019 à 09:26:56  profilanswer
 

Hephaestos a écrit :


La vraie plus-value des écoles d'ingénieur elle est même au delà de ça dans la formation scientifique elle-même. Nico n'a pas entièrement tort quand il pointe le côté conservateur du système mais bon, pour comprendre des équations différentielles, des transformées de Fourier et des lois de conservation on n'a pas besoin d'un professeur disruptif, un vieux schnock qui connait son affaire fait le job très bien. Mes collègues qui ont fait des écoles d'info sont plutôt calés en maths et en stats mais l'idée est la même, les fondamentaux n'ont pas changé depuis 200 ans, et ces bases servent de socle à l'innovation. Maintenant, avoir une formation technologique pertinente c'est pas inutile non plus, et les écoles font ça assez bien je suppose (je saurais pas dire l'école où je bossais enseignait la mécanique avec des turbines construites dans les années 20), mais ça reste globalement des trucs qu'on peut apprendre en formation continue plus tard.


 
 
 

nraynaud a écrit :

Je pense que c'est un tort, car je pense (en tout cas j'espère) qu'il existe d'autres manières d'enseigner les maths que ce que j'ai vu. C'est l'horreur pour les gens comme moi. Même si les maths sont vieilles, il doit bien y avoir une manière moins stupide et autoritaire de les enseigner.


 
 
Les deux points de vue se défendent complètement.
 
Cela dit, c'est pas en école que j'ai appris mes bases scientifiques, c'est en prépa.
 
En école, c'était marrant de voir les différences de perception et de compétences/connaissances entre les prépas et les IUT ou les BTS : les mecs étaient nettement meilleurs que nous en développement mais avaient des lacunes en maths. Ca s'est rattrapé en fin de première année (ils avaient moins d'info et des cours de maths à la place)
 
Mais quoi qu'il en soit, au moins dans l'école que j'ai faite, on n'avait pas de cours de maths. On n'avait un peu de théorie des graphes, mais très appliquée. On n'avait pas non plus beaucoup de cours de management/méthode, etc..
 
Et en fin de première année, on avait fait un projet en Java, un en C et un en Scheme (un fonctionnel), plus de la preuve de programme (je me souviens plus avec quoi), un peu de truc en assembleur...
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2338069
Hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-08-2019 à 09:33:12  profilanswer
 

nraynaud a écrit :

Je pense que c'est un tort, car je pense (en tout cas j'espère) qu'il existe d'autres manières d'enseigner les maths que ce que j'ai vu. C'est l'horreur pour les gens comme moi. Même si les maths sont vieilles, il doit bien y avoir une manière moins stupide et autoritaire de les enseigner.
 


Je sais pas, les vieux schnocks en question ont plein de manières différentes d'enseigner. La modernité n'est pas une qualité dans la mesure où le contenu est, par définition, vieux (et la pédagogie n'a pas non plus été inventée en 2015).

n°2338070
Anonymouse
Posté le 21-08-2019 à 09:52:07  profilanswer
 

gfive a écrit :


 
Mouais, je suis pas trop d'accord avec ça, mais bon, c'est pas vraiment la question ici.
 
Ce qui m'ennuie un peu c'est qu'après une année d'ecole d'informatique payante , le mec aie quelques compétences de dev, mais très peu de connaissances : il a peut être de bons réflexes, mais il sait pas pourquoi ils sont bons.  
Et il a clairement pas de connaissances au delà de ce qui est strictement nécessaire.  
Du coup, pour un mec qui veut faire un stage en web fullestacke, ne pas savoir ce qu'est un serveur, un langage objet ou fonctionnel, l'asynchronisme ou autre, c'est un peu handicapant.  


 
Tu en demande peut être aussi un peu trop pour un 1ere année?
 
Je me souviens qu'en fin de 1ere année on avait des notions de prog impératives, objet, BDD, Merise :o archi des ordinateurs, réseaux mais tous les étudiants ne les avaient pas assimilé.
 
Pour la plupart des étudiants j'ai toujours pensé qu'il fallait un peu de temps pour que les concepts rentrent.

Message cité 1 fois
Message édité par Anonymouse le 21-08-2019 à 10:08:13
n°2338071
gfive
Posté le 21-08-2019 à 10:28:53  profilanswer
 

Disons que d'un mec qui cherche un stage dans un environnement a 90% Java et web (JS, donc), j'attends qu'il ait des notions de java, a minima.

 

Tous ses "projets" ont été fait en C.
Du coup le mec est incasable en stage. A moins de trouver une boîte qui veuille bien faire le boulot de l'école.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2338072
flo850
moi je
Posté le 21-08-2019 à 10:34:52  profilanswer
 

j'imagine que dans le compromis entre les compétences à usage immédiat  
 mais qui  périment vites (la connaissance technique) et celles à long terme mais qui ne servent à rien toute seules ( la capacité a s'auto organiser notamment), epitech à fait son choix
 
D'un autre côté :  

  • il est en première année d'école d'ingé, c'est l'quivalent du stage de découverte de  3eme :o  
  • il va vite boucher les trous, mais il faut que le stage dure 4 a 6 mois pour que tu en vois les résultats


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

n°2338073
ratibus
Posté le 21-08-2019 à 11:40:52  profilanswer
 

A Centrale en première année (donc à BAC+3), le stage c'était un stage ouvrier :o

n°2338074
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 11:52:03  profilanswer
 

gfive a écrit :

J'ai vu un candidat de l'Epitech ce matin...
C'est moi ou c'est quand même une énorme pompe à fric cette école?

 

Enfin, le gamin m'explique que en première année, on leur prend 8500 balles, pour quasiment pas de cours.

 

C'est tout en mode projet, avec mentoring des 2° et 3° années (qui paient aussi), et qu'ils ont un "pédago" par promo.

 

Sans parler du fait que L'XP des 2° et 3° année leur venant essentiellement de leurs stages et alternances, ils ont intérêt à pas se louper sur le choix des mecs, sinon on n'a pas fini d'entendre pleurer Harko sur la gestion des exceptions :o

 

Au passage, le mec finit sa 1ere année en n'ayant fait que du C
JE trouve ça peu adapté à ce qui les attend dans leurs stages

 

J'ai fait une année chez Epitech que j'ai refusé de valider parce que, effectivement, c'est complètement creux et c'est une pompe à fric.
Ce qui me chagrinne au final, c'est que mon promier boulot, c'est après avoir eu un stage, et ce qui a retenu l'attention sur mon CV pour le stage en question, c'est le nom d'Epitech, parce que l'université de Besançon, c'est pas super vendeur :/


Message édité par theShockWave le 21-08-2019 à 11:52:42

---------------
last.fm
n°2338075
fiscalisat​or
tu dois rompre
Posté le 21-08-2019 à 11:56:32  profilanswer
 

en vérité sur n'importe quelle classe t'as que 40% au mieux des effectifs qui a des notions potable de code après 2 ans
parce que le code c'est pas un savoir qui se transfère juste avec les heures de cours : faut que le mec investisse du temps à côté  
partant de là les généralités sur les bonnes et mauvaises écoles ...

mood
Publicité
Posté le 21-08-2019 à 11:56:32  profilanswer
 

n°2338076
Jubijub
Parce que je le VD bien
Posté le 21-08-2019 à 12:10:54  profilanswer
 

Anonymouse a écrit :


 
Tu en demande peut être aussi un peu trop pour un 1ere année?
 
Je me souviens qu'en fin de 1ere année on avait des notions de prog impératives, objet, BDD, Merise :o archi des ordinateurs, réseaux mais tous les étudiants ne les avaient pas assimilé.
 
Pour la plupart des étudiants j'ai toujours pensé qu'il fallait un peu de temps pour que les concepts rentrent.


+1, en première année tu sais pas faire grand chose.
 
Après je pense aussi que tous les bons codeurs que j'ai vu à la fac étaient des gens qui codaient hors des cours
 
In other news : c'est rigolo d'apprendre le C++ après avoir appris le Java et Python :o


---------------
Jubi Photos : Flickr - 500px
n°2338077
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 12:35:59  profilanswer
 

Jubijub a écrit :


 
In other news : c'est rigolo d'apprendre le C++ après avoir appris le Java et Python :o


 
Pis c'est bien c'est pas piégeux :o  
 
Par exemple en cas d'héritage faut juste se rappeler de bien utiliser "override" et "virtual". Et de mettre un destructeur virtuel dans la classe mère. Et aussi de se méfier si on appelle des méthodes surchargées depuis le constructeur dérivé. Pis de pas faire d'héritage privé. Et de ne jamais hérité d'un type de std:: . Etde faire gaffe au shadowing aussi tiens. Pis aussi de faire attention à ...
 
Enfin ça va j'ai pris une feature simple ici :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338078
koskoz
They see me trollin they hatin
Posté le 21-08-2019 à 14:15:37  profilanswer
 

Ça donne envie [:psychokwak]


Message édité par koskoz le 21-08-2019 à 14:15:45

---------------
Twitter
n°2338079
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 14:18:54  profilanswer
 

fiscalisator a écrit :

en vérité sur n'importe quelle classe t'as que 40% au mieux des effectifs qui a des notions potable de code après 2 ans
parce que le code c'est pas un savoir qui se transfère juste avec les heures de cours : faut que le mec investisse du temps à côté  
partant de là les généralités sur les bonnes et mauvaises écoles ...


 
Le fait que l'investissement hors des cours soit important n'empêche pas le fait que des cours peuvent être de bonne ou de mauvaise qualité et que les intervenants peuvent être vraiment qualifié ou non  [:petrus75]


---------------
last.fm
n°2338080
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 14:20:55  profilanswer
 

Xavier_OM a écrit :

Pis de pas faire d'héritage privé. Et de ne jamais hérité d'un type de std:: .


 
Pour ces points là, je suis moyen d'accord. L'héritage privé, c'est bien (typiquement, toutes les interfaces façon listener, ca ne devrait jamais être hérité en public), et quand tu dérives d'un type STL pour une raison ou une autre, tu veux précisément le masquer, donc aussi en hériter en privé pour avoir du contrôle sur les casts.


---------------
last.fm
n°2338081
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 14:23:53  profilanswer
 

theShockWave a écrit :

 

Pour ces points là, je suis moyen d'accord. L'héritage privé, c'est bien (typiquement, toutes les interfaces façon listener, ca ne devrait jamais être hérité en public), et quand tu dérives d'un type STL pour une raison ou une autre, tu veux précisément le masquer, donc aussi en hériter en privé pour avoir du contrôle sur les casts.

 

Ben dans ces cas là tu fais de la composition, pas de l'héritage  [:spamafote] Surtout que les types de la STL (le standard l'interdit), je ne fais que de la composition si je dois encapsuler un vector ou autre.
Avec un héritage privé tu hérites de Foobar sans pour autant en être un, c'est tordu.

Message cité 1 fois
Message édité par Xavier_OM le 21-08-2019 à 14:24:56

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338082
Hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-08-2019 à 14:28:38  profilanswer
 

Xavier_OM a écrit :


 
Pis c'est bien c'est pas piégeux :o  
 
Par exemple en cas d'héritage faut juste se rappeler de bien utiliser "override" et "virtual". Et de mettre un destructeur virtuel dans la classe mère. Et aussi de se méfier si on appelle des méthodes surchargées depuis le constructeur dérivé. Pis de pas faire d'héritage privé. Et de ne jamais hérité d'un type de std:: . Etde faire gaffe au shadowing aussi tiens. Pis aussi de faire attention à ...
 
Enfin ça va j'ai pris une feature simple ici :o


Entre clang-tidy qui gère la moitié des problèmes que tu mentionnes, et des reviewers relativement au point pour pas laisser passer le reste, je me fais pas de souci pour ça. C'est bon il va déjà assez galérer comme ça, c'est pas la peine de lui faire peur avec des trucs qui le concerneront pas !

n°2338083
Hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-08-2019 à 14:29:44  profilanswer
 

theShockWave a écrit :


 
Pour ces points là, je suis moyen d'accord. L'héritage privé, c'est bien (typiquement, toutes les interfaces façon listener, ca ne devrait jamais être hérité en public), et quand tu dérives d'un type STL pour une raison ou une autre, tu veux précisément le masquer, donc aussi en hériter en privé pour avoir du contrôle sur les casts.


VERBOTEN !!!

n°2338084
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 14:44:38  profilanswer
 

Xavier_OM a écrit :

 

Ben dans ces cas là tu fais de la composition, pas de l'héritage  [:spamafote] Surtout que les types de la STL (le standard l'interdit), je ne fais que de la composition si je dois encapsuler un vector ou autre.
Avec un héritage privé tu hérites de Foobar sans pour autant en être un, c'est tordu.

  

C'est quoi les arguments, à part "Michel a dit qu'on devait pas" ?

 

Edit : et accessoirement, pour implémenter un listener, déporter ca sur un membre, ca me semble encore moins malin que de le laisser public. Le mettre privé, c'est juste une meilleure encapsulation.

Message cité 1 fois
Message édité par theShockWave le 21-08-2019 à 14:46:58

---------------
last.fm
n°2338085
fiscalisat​or
tu dois rompre
Posté le 21-08-2019 à 14:48:21  profilanswer
 

theShockWave a écrit :


 
Le fait que l'investissement hors des cours soit important n'empêche pas le fait que des cours peuvent être de bonne ou de mauvaise qualité et que les intervenants peuvent être vraiment qualifié ou non  [:petrus75]


 
mais ça ne jouera qu'à la marge  
si tes cours sont bons dans les faits y a que ces 40% qui pourront le suivre parce qu'ils capteront les questions d'algo sans être emmerdé par des questions de syntaxe de code de compilation d'enchaînement logique ou de debug
d'où l'importance d'avoir des niveaux homogènes dans ces formations à mon sens  
mais ces écoles mine de rien elle sont grosses et ne sélectionnent pas au niveau, à vrai dire à part les écoles tip top haut du panier qui j'imagine sélectionne au niveau : qui sélectionne au niveau ? ces écoles sélectionnent à l'argent

n°2338086
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 14:48:52  profilanswer
 

theShockWave a écrit :

 

C'est quoi les arguments, à part "Michel a dit qu'on devait pas" ?

 

Ben

 

1. le standard l'interdit, et donc ya rien qui empêche quelqu'un d'implémenter le standard de telle façon que l'héritage soit impossible/ne compile pas/crash.

 

2. les vector list deque et compagnie n'ont pas de destructeur virtuel

 

3. on peut faire exactement la même chose par composition :D (en ayant un vector comme membre privé)

Message cité 1 fois
Message édité par Xavier_OM le 21-08-2019 à 14:50:30

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338087
___alt
Posté le 21-08-2019 à 14:53:13  profilanswer
 

fiscalisator a écrit :

mais ça ne jouera qu'à la marge  
si tes cours sont bons dans les faits y a que ces 40% qui pourront le suivre parce qu'ils capteront les questions d'algo sans être emmerdé par des questions de syntaxe de code de compilation d'enchaînement logique ou de debug
d'où l'importance d'avoir des niveaux homogènes dans ces formations à mon sens  
mais ces écoles mine de rien elle sont grosses et ne sélectionnent pas au niveau, à vrai dire à part les écoles tip top haut du panier qui j'imagine sélectionne au niveau : qui sélectionne au niveau ? ces écoles sélectionnent à l'argent


 
Epita ça écrème un peu à l'entrée, mais c'est pas super difficile comme sélection. Ça écrème beaucoup en cours de route par contre.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2338089
fiscalisat​or
tu dois rompre
Posté le 21-08-2019 à 14:59:37  profilanswer
 

:jap: j'ignoais  
 
Pour revenir au sujet avec l'âge je demande surtout aux candidats d'être honnête sur ce qu'ils savent faire. Je trouve que l'encadrement est plus complexe quand le mec est un point d'interrogation sur pattes.  
Et du coup c'est vrai je me méfie des mecs qui m'annoncent des compétences au dessus. Et sur les technos aujourd'hui je trouve que la mémoire est prépondérante : faut se souvenir que tel truc doit être dans tel fichier de conf  
Mon côté vieux con mais j'ai l'impression que ça a explosé :  à l'époque on se plaignait de la complexité et de l'aspect découplé de struts, maintenant ça donne presque envie.

n°2338091
Plam
Bear Metal
Posté le 21-08-2019 à 15:04:15  profilanswer
 

Perso j'étais à SUPINFAIL, c'était parfait pour moi après un IUT Info à Grenoble au top (meilleur formation ever pour la technique :love: ) et un Bachelor of Science in CS au UK. Tu pouvais pas trop bosser, et avoir un BAC+5 :o Par contre tout bien réfléchi, j'aurai mieux faire de faire un truc genre GEM ou truc orienté business au lieu d'un bac +5 en « spécialiste en système d'information ». Mais ça je pouvais pas deviner avant de monter ma boîte :D

 

edit : je compte pas mes 2 premières années de fac qui ont servi à rien en terme de diplôme, mais au top pour la culture scientifique :jap:


Message édité par Plam le 21-08-2019 à 15:04:53

---------------
Spécialiste du bear metal
n°2338092
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 15:12:44  profilanswer
 

Xavier_OM a écrit :

1. le standard l'interdit, et donc ya rien qui empêche quelqu'un d'implémenter le standard de telle façon que l'héritage soit impossible/ne compile pas/crash.


tu sais où c'est précisé dans le standard ?
Edit : ma question est sincère, j'ai tenté de chercher rapidement et j'ai perdu patience vu que je suis au boulot.

 
Xavier_OM a écrit :

2. les vector list deque et compagnie n'ont pas de destructeur virtuel


C'est précisément la raison pour hériter en privé : personne ne peut t'upcaster vers le type dont tu dérives, donc ca empêche ce genre de scénario.

 
Xavier_OM a écrit :

3. on peut faire exactement la même chose par composition :D (en ayant un vector comme membre privé)


Non, on ne peut pas : exposer les fonctions que tu veux retrouver dans ta classe fille via using est plus efficace que faire des fonctions inline pour rediriger de ta classe vers ton member. Quand les optimisations sont activées, certes, ca n'a aucun avantage, mais ne pas dégrader inutilement les perfs en debug est aussi important sur les projets sur lesquels je travaille.

Message cité 1 fois
Message édité par theShockWave le 21-08-2019 à 15:13:28

---------------
last.fm
n°2338093
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 15:30:50  profilanswer
 

theShockWave a écrit :


tu sais où c'est précisé dans le standard ?
Edit : ma question est sincère, j'ai tenté de chercher rapidement et j'ai perdu patience vu que je suis au boulot.

 


 

En fait c'est marrant c'est l'inverse, je viens de regarder ( http://www.open-std.org/jtc1/sc22/ [...] /n4713.pdf   20.4.1.3)  l'héritage est mentionné comme possibilité  :??: Je vais vérifier tout ça.

 
theShockWave a écrit :


Non, on ne peut pas : exposer les fonctions que tu veux retrouver dans ta classe fille via using est plus efficace que faire des fonctions inline pour rediriger de ta classe vers ton member. Quand les optimisations sont activées, certes, ca n'a aucun avantage, mais ne pas dégrader inutilement les perfs en debug est aussi important sur les projets sur lesquels je travaille.

 


Bah tu te fais une classe de facade dont tu hérites et c'est marre  [:spamafote] Le coût d'appel n'est même pas mesurable (un peu comme le mythe qui dit const = meilleur perf :D)

 
Code :
  1. template <typename Container>
  2. class ContainerFacade {
  3. protected:
  4.     Container container;
  5. public:
  6.     typedef typename Container::const_iterator const_iterator;
  7.     virtual ~ContainerFacade() = default;
  8.     inline bool empty() const { return container.empty(); }
  9.     const_iterator begin() const { return container.begin(); }
  10.     const_iterator end() const { return container.end(); }
  11. ...
  12. etc.
  13. };
  14. class Foobar : public ContainerFacade<vector<int>> {
  15. ...
  16. };
 

(bonus point tu mets tout en protected et ne repasse que ce qui t'arrange en public avec des using)

Message cité 1 fois
Message édité par Xavier_OM le 21-08-2019 à 15:43:44

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338094
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 15:54:27  profilanswer
 

Xavier_OM a écrit :

En fait c'est marrant c'est l'inverse, je viens de regarder ( http://www.open-std.org/jtc1/sc22/ [...] /n4713.pdf   20.4.1.3)  l'héritage est mentionné comme possibilité  :??: Je vais vérifier tout ça.


 
Okay, merci pour la recherche, parce que ca me semblait plutôt surprenant :)
 

Xavier_OM a écrit :


Bah tu te fais une classe de facade dont tu hérites et c'est marre  [:spamafote] Le coût d'appel n'est même pas mesurable (un peu comme le mythe qui dit const = meilleur perf :D)


 
A nouveau, ce genre de comportement généralisé, quand tu fais tourner un build en debug avec des endroits où tu as des tight loops, le coup des appels de fonction inutiles peut ne pas être négligeable. C'est le côté difficile dans l'effort de conserver des perfs en debug, tu perds énormément de temps parce que ta base de code est remplite de pratiques inefficaces "parce que le compilateur est malin", et souvent, le code pourrait être mieux écrit sans compromettre la maintenabilité.
 
Ta proposition ici a les défauts des deux côtés.
 

Xavier_OM a écrit :


(bonus point tu mets tout en protected et ne repasse que ce qui t'arrange en public avec des using)


 
C'est exactement ce qu'on fait quand on hérite en privé : on réexpose juste le minimum vital de la classe parent.
 
Edit : le coût qui n'est "pas mesurable", c'est comme la pratique d'instrumenter son code pour indiquer au compilateur/CPU quelle braénche va être prise dans un test. Quand c'est juste changer un seul if statement, ca ne t'apporte souvent pas un gain visible, mais si toute ta base de code a pris ce coup là, tu peux assez aisément vérifier que désactiver cette optimisation a un impact non-négligeable sur l'application complète, sur les plateformes où c'est applicables.
Ca m'amène aussi à ajouter : certes, "Premature optimization is the root of all evil", mais se contrefoutre des performances en permanence est aussi parfois contre-productif :/

Message cité 1 fois
Message édité par theShockWave le 21-08-2019 à 15:58:21

---------------
last.fm
n°2338095
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 16:10:06  profilanswer
 

theShockWave a écrit :

 

Okay, merci pour la recherche, parce que ca me semblait plutôt surprenant :)

 


 
theShockWave a écrit :

 

A nouveau, ce genre de comportement généralisé, quand tu fais tourner un build en debug avec des endroits où tu as des tight loops, le coup des appels de fonction inutiles peut ne pas être négligeable. C'est le côté difficile dans l'effort de conserver des perfs en debug, tu perds énormément de temps parce que ta base de code est remplite de pratiques inefficaces "parce que le compilateur est malin", et souvent, le code pourrait être mieux écrit sans compromettre la maintenabilité.

 

Ta proposition ici a les défauts des deux côtés.

 


 
theShockWave a écrit :

 

C'est exactement ce qu'on fait quand on hérite en privé : on réexpose juste le minimum vital de la classe parent.

 

Edit : le coût qui n'est "pas mesurable", c'est comme la pratique d'instrumenter son code pour indiquer au compilateur/CPU quelle braénche va être prise dans un test. Quand c'est juste changer un seul if statement, ca ne t'apporte souvent pas un gain visible, mais si toute ta base de code a pris ce coup là, tu peux assez aisément vérifier que désactiver cette optimisation a un impact non-négligeable sur l'application complète, sur les plateformes où c'est applicables.
Ca m'amène aussi à ajouter : certes, "Premature optimization is the root of all evil", mais se contrefoutre des performances en permanence est aussi parfois contre-productif :/

 

Non mais les branches ok oui, mais vraiment essaie de mesurer en debug avec un profiler le coût d'une indirection supplémentaire de fonction, même dans ton point le plus chaud, même au cœur d'un algo qui prend plusieurs minutes, tu ne le verras pas ;) (cas vécu sur de la simulation numérique de modèle physique, on est sur du bruit de mesure).
Ou alors tu as des algo qui ne font rien, à la limite là ça peut ptet devenir mesurable ok :D

Message cité 1 fois
Message édité par Xavier_OM le 21-08-2019 à 16:19:39

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338096
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 16:19:46  profilanswer
 

Xavier_OM a écrit :


 
Non mais les branches ok oui, mais vraiment essaie de mesurer en debug avec un profiler le coût d'une indirection supplémentaire de fonction, même dans ton point le plus chaud, même au cœur d'un algo qui prend plusieurs minutes, tu ne le verras pas ;) (cas vécu sur de la simulation numérique de modèle physique, avec des milliards d'appels on est sur qq ms de plus sur un run de 10min, du bruit de mesure).


 
A nouveau, c'est même pas le seul angle d'approche dessus : faire une façade sur ce cas, c'est juste un des exemples où on rajoute du code inutile sans apporter d'avantage en terme de maintenabilité. L'accumulation de tous ces endroits où tu gâches "un peu" sans justification, c'est ce qui fait au final que tu as un jeu "utilisable" en debug poure reproduire des problèmes ou bien complètement inutilisable.
 
Aussi, quand tu parles de faire des mesures, j'ai du mal à croire que tu me parles de performance en debug, donc sans optimisations. Le code pour une fonction triviale en debug est loin d'être négligeable : https://gcc.godbolt.org/z/bMhwyL


---------------
last.fm
n°2338097
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 16:39:02  profilanswer
 

theShockWave a écrit :


 
Aussi, quand tu parles de faire des mesures, j'ai du mal à croire que tu me parles de performance en debug, donc sans optimisations. Le code pour une fonction triviale en debug est loin d'être négligeable : https://gcc.godbolt.org/z/bMhwyL


 
Je parle bien du coup de l'indirection en debug oui. Dans ton exemple si tu benchmarks, puis que tu remplaces Blah (ma solution) par Blih (ta solution) et que tu re-benchmarks tu ne gagneras rien  [:spamafote]  

Code :
  1. struct Blih : private std::vector<int>
  2. {
  3.     using std::vector<int>::push_back;
  4.     using std::vector<int>::size;
  5. };



---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338098
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 16:48:12  profilanswer
 

Xavier_OM a écrit :

Je parle bien du coup de l'indirection en debug oui. Dans ton exemple si tu benchmarks, puis que tu remplaces Blah (ma solution) par Blih (ta solution) et que tu re-benchmarks tu ne gagneras rien  [:spamafote]

Code :
  1. struct Blih : private std::vector<int>
  2. {
  3.     using std::vector<int>::push_back;
  4.     using std::vector<int>::size;
  5. };



 

J'ai du mal à croire que tous les cycles pour des instructions inutiles et la pollution du cache par des fonctions inutile soit gratuit.
J'ai pas la possibilité de faire un essai représentatif directement pour mon application, mais pour avoir observé des boîtes avec des approches différentes sur les perfs en debug, le résultat était parlant.

 

Bref, on a bien divergé du sujet initial, qui était : hériter d'une classe en privé, est-ce le mal absolu ? Je maintiens que non.

 

Edit : si quelqu'un veut comparer plus facilement, j'ai mis les deux versions ici : https://gcc.godbolt.org/z/WQ93pn

 

Aussi, pour les listener, je parlais de bonnes pratiques :

Code :
  1. struct IMyCustomListener
  2. {
  3.   virtual void OnMyCustomEvent() = 0;
  4. protected:
  5.   // empêche d'accidentellement détruire avec un pointeur sur l'interface de listener, parce que ca n'est pas prévu pour gérer la durée de vie des objets
  6.   ~IMyCustomListener() {};
  7. };
  8. struct SomeRandomListener: private IMyCustomListener
  9. {
  10.   virtual void OnMyCustomEvent() override;
  11.   // responsable de son enregistrement et désenregistrement dans le manager qui notifie via l'interface.
  12. };

Message cité 1 fois
Message édité par theShockWave le 21-08-2019 à 17:20:18

---------------
last.fm
n°2338099
nraynaud
lol
Posté le 21-08-2019 à 17:14:38  profilanswer
 

'tain hier j'ai vu le projet d'un mec c'était une carte électronique avec un FPGA à $1200 et une ram DDR4, routé avec kicad et excel [:pingouino]
 
Il est vraiment balaise le type.


---------------
trainoo.com, c'est fini
n°2338100
Hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-08-2019 à 17:20:27  profilanswer
 

theShockWave a écrit :


Bref, on a bien divergé du sujet initial, qui était : hériter d'une classe en privé, est-ce le mal absolu ? Je maintiens que non.
 


Chez nous ça vient d'une approche du language assez fool-proof, les aspects qui ont tendance à causer des problèmes quand ils sont mis dans les mains de quelques dizaines de milliers d'ingénieurs qui doivent utiliser une petite dizaine de languages de programmation différents sont gentiment écartés (et les barbus qui veulent absolument utiliser ces aspects sont poliment écoutés, et si ils sont assez convaincants ils ont le droit de faire comme ils veulent dans leur coin... mais en général, ils sont juste poliment écoutés).

n°2338101
Jubijub
Parce que je le VD bien
Posté le 21-08-2019 à 17:22:45  profilanswer
 

Xavier_OM a écrit :


 
Pis c'est bien c'est pas piégeux :o  
 
Par exemple en cas d'héritage faut juste se rappeler de bien utiliser "override" et "virtual". Et de mettre un destructeur virtuel dans la classe mère. Et aussi de se méfier si on appelle des méthodes surchargées depuis le constructeur dérivé. Pis de pas faire d'héritage privé. Et de ne jamais hérité d'un type de std:: . Etde faire gaffe au shadowing aussi tiens. Pis aussi de faire attention à ...
 
Enfin ça va j'ai pris une feature simple ici :o


 

theShockWave a écrit :


 
Pour ces points là, je suis moyen d'accord. L'héritage privé, c'est bien (typiquement, toutes les interfaces façon listener, ca ne devrait jamais être hérité en public), et quand tu dérives d'un type STL pour une raison ou une autre, tu veux précisément le masquer, donc aussi en hériter en privé pour avoir du contrôle sur les casts.


 
je vous lis, et j'oscille entre  
https://media.giphy.com/media/Q1aRmd8e90WIw/giphy.gif
 
et  
 
Message à caractère informatif - Berthier (celui sur la finance)
https://youtu.be/0MKcLhsq994?t=99
 
 


---------------
Jubi Photos : Flickr - 500px
n°2338102
koskoz
They see me trollin they hatin
Posté le 21-08-2019 à 17:33:18  profilanswer
 

Moi plus je vous lis moins j'ai envie de faire du C++ (pas que j'avais initialement envie d'en faire hein...) [:petrus75]

Message cité 1 fois
Message édité par koskoz le 21-08-2019 à 17:33:28

---------------
Twitter
n°2338103
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 21-08-2019 à 17:38:40  profilanswer
 

Demain nous aborderons les template et le pimpl idiom, ne zappez pas :D


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2338104
theShockWa​ve
I work at a firm named Koslow
Posté le 21-08-2019 à 17:55:18  profilanswer
 

Xavier_OM a écrit :

Demain nous aborderons les template comment se causer des problèmes de temps de compilation et le pimpl idiom comment les résoudre péniblement, ne zappez pas :D


 
FTFY :o
 

Spoiler :

Je dis ca au second degré : j'aime beaucoup les templates de C++ [:petrus75]


---------------
last.fm
n°2338105
Plam
Bear Metal
Posté le 21-08-2019 à 18:14:37  profilanswer
 

Sinon on peut parler OCaml si vous voulez  [:zaib3k]


---------------
Spécialiste du bear metal
n°2338106
nraynaud
lol
Posté le 21-08-2019 à 18:18:48  profilanswer
 

on peut parler de l'env de dev de plamcorp pour ocaml aussi [:zaib3k]


---------------
trainoo.com, c'est fini
n°2338107
Plam
Bear Metal
Posté le 21-08-2019 à 18:21:00  profilanswer
 

nraynaud a écrit :

on peut parler de l'env de dev de plamcorp pour ocaml aussi [:zaib3k]


 
Franchement il est tout à fait conforme aux standards du OCaml :D Demande à John (l'autre)


---------------
Spécialiste du bear metal
n°2338108
nraynaud
lol
Posté le 21-08-2019 à 18:26:37  profilanswer
 

non, le merdier avec le docker pour compiler, le bordel avec un repo pour le code et un autre repo pour le RPM, devoir extraire tout ses changements dans un patch pour lancer un cycle e compil etc.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  22975  22976  22977  ..  27262  27263  27264  27265  27266  27267

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)