4500

Hmm ?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4501

Disons que si on me dit "rock-solid stability", c'est pas au C++ que je vais penser au premier : il y a plein d'autres langages plus sûrs. Les arguments pour utiliser du C++ en 2020, généralement c'est plutôt "pour les perfs" ou "parce qu'il y a une base de code existante en C++".

Ou alors c'est "rock-solid stability" en comparaison à la tour infernale façon NodeJS, mais c'est un peu abuser grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4502

4503

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Disadvantages
Ah, ça fait plaisir de voir qu'on reconnait autant d'inconvénients à MVC. Sérieusement, pour transformer un programme simple en usine à gaz, c'est le moyen idéal !

4504

Tu cherches à convaincre ton chef de te laisser tout mettre dans un seul fichier .s de plusieurs milliers de lignes ? grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4505

. asm s'il te plait grin

Non, plus sérieusement, les widgets Qt contiennent les données qu'ils affichent. Donc quand tu crées un objet orienté "données à traiter", t'as le choix : ou ça contient aussi du graphisme, ou alors tu ne mets que des copies de data dans ton objet, mais ça oblige à faire de la synchro widgets/data dès qu'on fait un clic. Ca oblige aussi à des vas-et-viens continuels entre le Model et l'UI dès qu'on fait un clic (contrôle de cohérence).

Théoriquement, ça peut se gérer avec des signaux/slots, mais à un moment tu satures, tu ne comprends plus ce qui se passe. Et la facilité de maintenance/refactoring théoriquement gagnée par un modèle clair disparait complètement devant la complexité des interactions.

Ma méthode, batarde, consiste à traiter les données basiquement au niveau de l'UI. Et quand on doit lancer un process complexe, je crée un thread, un objet de données extraites de la partie graphique, et ça fait le taf de traitement.

Ca évite les problèmes de synchro, vu qu'on envoie les données utiles une seule fois dans l'objet Data quand on lance le traitement, par contre ça oblige à faire un peu de traitement de données au niveau UI, pour assurer un affichage cohérent.

C'est pas parfait, mais c'est ce que j'arrive à faire de mieux côté simplicité.

4506

Éternel débat ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4507

Ok j’ignorais, parce que MVC semble implémenté de base dans pas mal de frameworks liés à des langages.
J’aurais préféré que les widgets Qt se construisent avec un pointeur vers la donnée qu’ils exploitent, à mon sens ça aurait été plus propre.
Mais ça aurait provoqué d’autres problèmes évidemment...

4508

Je crois que ce que tu recherches s'appelle le "data binding". On trouve des trucs sur Google en cherchant ce terme + "Qt". Mais je laisse les autres répondre, parce que c'est pas du tout mon domaine et que je raconte peut-être des conneries.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4509

Super merci, je vais voir ! smile

4510

Rah Ben voilà, sans même chercher, il suffit en fait de dériver chaque widget sur t’utilises, de lui rajouter un pointeur vers ce que tu veux utiliser, avec un signal à chaque changement de la valeur affichée pour répercuter sur la valeur pointée à l’autre bout.
Espèce d’enfoiré, je suis bon pour reprendre mon programme embarrassed

4511

(désolé tsss)

Par contre, méfiance avec les pointeurs si tes accès ne sont pas tous dans le même thread : avec les CPUs modernes, tu peux avoir de mauvaises surprises. Il vaut mieux utiliser un mécanisme qui est prévu pour (Qt doit en avoir tout plein).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4512

Le multithreading peut transformer tes pointeurs en plat de spaghettis (métaphorique)?
avatar
"- Nigga you know what the fuck I want, nigga: I want your motherfuckin' Daytons, and your motherfuckin' stereo! And I'll take a double burger with cheese!
- WHUT?"
I LOVE TO HATE/I HATE YOUR LOVE -AND I CAN'T FEEL AFFECTION FOR PEOPLE LIKE YOU!
CAALGOOONNNNN [TELLMESOMETHINGIDONTKNOW SHOWMESOMETHINGICANTUSE PUSHTHEBUTTONS CONNECTTHEGODDAMNDOTS] (Si Dieu existe il doit me détester...)

4513

Plutôt à un plat de linguine (prononcer "Line gouine eh")
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4514

Même différence va...
avatar
"- Nigga you know what the fuck I want, nigga: I want your motherfuckin' Daytons, and your motherfuckin' stereo! And I'll take a double burger with cheese!
- WHUT?"
I LOVE TO HATE/I HATE YOUR LOVE -AND I CAN'T FEEL AFFECTION FOR PEOPLE LIKE YOU!
CAALGOOONNNNN [TELLMESOMETHINGIDONTKNOW SHOWMESOMETHINGICANTUSE PUSHTHEBUTTONS CONNECTTHEGODDAMNDOTS] (Si Dieu existe il doit me détester...)

4515

Ok Zerosquare, merci. En fait, ça devrait aller.
Mon objet « Data » collecte des données dans l’UI, puis l’utilisateur lance un process sur les datas qu’il a sélectionnées.
Le process de traitement est hébergé par un thread externe à l’UI. Pendant ce temps, l’utilisateur ne peut plus modifier ses inputs. Je pense que c’est safe.
Merci du conseil cependant, on se fait vite avoir smile

4516

Ninja codejavascript.info
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4517

de bonnes technique pour de la sécurité d'emploi ça grin

4518

Folco: Java SWING et WxWidgets te donnent un controle plus fin sur les données à afficher dans les widgets, comme les listes. Tu construis un objet qui sous-classe ListModel, et qui wrappe tes données (vector C++, array C/asm, etc) en fournissant les méthodes dont le widget a besoin pour fonctionner. En très gros une méthode count() et une méthode getStringOfNthItem(int). Donc pas besoin de copie de données, tu implémentes ca en te basant sur tes données réelles.

4519

Intéressant, merci ! smile

4520

(mais Folco est un homme de goût, t'as à peu près aucune chance de lui faire utiliser Swing tongue)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4521

(surtout que c'est plus maintenu/déprécié)

4522

4523

Tain mais j'ai rarement autant gerbé qu'en faisant du Kotlin. C'est proprement immonde, déjà que Java et surtout Android c'est hack sur hack, mais Kotlin ça prend tout ça et fait x10. Essayez par exemple de comprendre ce bout de code d'exemple, même en recherchant ce que fait let et also.

mediator-live-data-gist-2Gistmediator-live-data-gist-2. GitHub Gist: instantly share code, notes, and snippets.


Vraiment je déteste le code de nos jours. Les gens s'emmerdent tellement qu'ils ont sans arrêt besoin de réinventer tout, en plus complexe, plus verbeux, plus lourd et beaucoup moins lisible qu'un simple code C d'il y a 20 ans. C'est patch sur patch, concept ultra-alambiqué sur concept. Rien ne vaut la peine d'apprendre car une nouvelle tendance vient tout péter l'année d'après.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4524

nous on fait toujours du C et de l'assembleur ici embarrassed

4525

Ouais, mais vous faites aussi du Java ME, alors hein, bon embarrassed
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4526

Classy move: C++ 20 wins final approval in ISO technical ballot, formal publication expected by end of yearwww.theregister.com'Best approximation of C++ ideals so far,' says Stroustrup - but is it too big and complex?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4527

Ouch, j'ai l'impression que si je refais du C++ un jour il faudra quasiment tout réapprendre ! (c'est cool que le langage continue à évoluer, mais j'ai l'impression que le ticket d'entrée devient vraiment énorme maintenant pour le maitriser correctement)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4528

epee (déjà que je n'en ai jamais beaucoup fait…)

Pour des nouveaux projets, je pense que partir sur du Rust est un meilleur pari que prendre du C++ 20/23 (vu qu'ils en parlent déjà) : j'ai l'impression (vu de l'extérieur) que Rust est plus facile à maîtriser que C++ avec toutes ses subtilités.
Je ne sais pas si c'est faisable pour beaucoup de projets existants de passer à du C++ 20, par contre.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4529

Disons que tout dépend de tes objectifs. Apprendre un sous-ensemble du C++ peut être plus rapide, et moins frustrant que le Rust dont le compilateur ne te laisse pas faire tout ce que tu veux, mais tu ne profitera pas forcément de toutes ses possibilités.
Par contre apprendre toutes les subtilités du C++ moderne, ce qui ne dispense pas de connaitre la plupart des fonctionnalité historique qui restent employées partout, et surtout et savoir bien les utiliser, c'est en effet probablement plus complexe que de partir directement sur du Rust.
avatar

4530

kg9hjiynipr51.jpg

On est fichus.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo