"C++ est un langage évolué ?" "Oui, il n'y a aucun compile time bound-checking"

OP
CN

CelestinNain

il y a 4 jours

#include <array> int main() { std::array<int, 10> foo; foo[100] = 42; return 0; }

Ce code compile tranquillement comme si de rien était. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

OP
CN

CelestinNain

il y a 4 jours

Alors bien sûr vous allez dire "gneu gneu t'as qu'à utiliser std::get" sauf que personne utilise std::get pour des accès mémoire aussi triviaux. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png
OP
CN

CelestinNain

il y a 4 jours

En Rust par exemple, le code suivant ne compile pas. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

fn main() { let mut foo: [i32; 1] = [0; 1]; foo[1000] = 99; }
PD

PatrickDeVerre

il y a 4 jours

OK mais cache ta virginité par pitié
BR

broxo

il y a 4 jours

Ba écoute si tu le dit je te crois https://image.noelshack.com/fichiers/2022/37/1/1663014384-ahi-pince-mais.png
CE

CulExplosax14

il y a 4 jours

Excuse moi de la question mais ça fait longtemps que j'ai pas fait du c++, en bon dev web eco+ https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

Ca fait quoi que ça compile ? Ça pose problème comment ? https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

OP
CN

CelestinNain

il y a 4 jours

CulExplosax14

il y a 4 jours


Excuse moi de la question mais ça fait longtemps que j'ai pas fait du c++, en bon dev web eco+ https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

Ca fait quoi que ça compile ? Ça pose problème comment ? https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

Ça pose problème parce que le code va échouer en production et le client va pas être content que ton logiciel crash alors que le bug aurait pu ne jamais exister si le compilo avait fait son taff. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

CE

CulExplosax14

il y a 4 jours

Ça pose problème parce que le code va échouer en production et le client va pas être content que ton logiciel crash alors que le bug aurait pu ne jamais exister si le compilo avait fait son taff. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Ouai ouai ça je me doute mais dans le détail où se trouve le possible bug en fait ? https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

Tu fais quoi de con dans ton code ? https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

BR

broxo

il y a 4 jours

Ça pose problème parce que le code va échouer en production et le client va pas être content que ton logiciel crash alors que le bug aurait pu ne jamais exister si le compilo avait fait son taff. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Ba ducoup pourquoi t'utilises pas std::get comme tu l'as dit ? https://image.noelshack.com/fichiers/2022/37/1/1663014384-ahi-pince-mais.png

F1

FRY_1999

il y a 4 jours

Go python ou rien
JP

JosePetard

il y a 4 jours

Wesh y raconte quoi sui la
CE

CulExplosax14

il y a 4 jours


Go python ou rien

Rust est le nouveau language high qui va sûrement percer https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

De toute façon dans quelques années 90% des dev seront remplacés par des I.A. donc ce sera directement du binaire mais bon https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

I1

isidore_1212

il y a 4 jours

tu fais une assignation qui va se traduire en calcul d'offset par le compilateur et qui va juste faire un sizeof int + 100 depuis ton objet donc forcement ça compilera sans checker si tu es out of bound vu que tu fais une assignation.

Pour le faire plus proprement et avoir un check il fallait utiliser at() le desco

OP
CN

CelestinNain

il y a 4 jours

isidore_1212

il y a 4 jours


tu fais une assignation qui va se traduire en calcul d'offset par le compilateur et qui va juste faire un sizeof int + 100 depuis ton objet donc forcement ça compilera sans checker si tu es out of bound vu que tu fais une assignation.

Pour le faire plus proprement et avoir un check il fallait utiliser at() le desco

Tu es un peu limité toi, non ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Le "at()" rajoute un check au runtime. Donc d'une part ça n'empêche pas le crash, et d'autre part ça rajoute un overhead inutile. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Essaye de réfléchir la prochaine fois que tu veux répondre avec arrogance alors que tu ne saisis même pas le problème. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

CE

CulExplosax14

il y a 4 jours

Tu es un peu limité toi, non ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Le "at()" rajoute un check au runtime. Donc d'une part ça n'empêche pas le crash, et d'autre part ça rajoute un overhead inutile. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Essaye de réfléchir la prochaine fois que tu veux répondre avec arrogance alors que tu ne saisis même pas le problème. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Ta gueule le nain par contre https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

I1

isidore_1212

il y a 4 jours

Tu es un peu limité toi, non ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Le "at()" rajoute un check au runtime. Donc d'une part ça n'empêche pas le crash, et d'autre part ça rajoute un overhead inutile. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Essaye de réfléchir la prochaine fois que tu veux répondre avec arrogance alors que tu ne saisis même pas le problème. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

/tmp $ cat 1.cpp #include <array> int main() { std::array<int, 10> foo; foo[100] = 42; return 0; } /tmp $ cat 2.cpp #include <array> #include <iostream> #include <stdexcept> int main() { std::array<int, 10> foo; try { foo.at(100) = 42; } catch (const std::out_of_range& e) { std::cerr << " BMG ? " << std::endl; } return 0; } /tmp $ g++ 1.cpp /tmp $ ./a.out /tmp $ g++ 2.cpp /tmp $ ./a.out BMG ?

Je ne débat pas avec toi je t'éduque

ER

Eruvande

il y a 4 jours

Rust est le nouveau language high qui va sûrement percer https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

De toute façon dans quelques années 90% des dev seront remplacés par des I.A. donc ce sera directement du binaire mais bon https://image.noelshack.com/fichiers/2017/30/4/1501187858-risitassebestreup.png

C'est quoi ça encore Rust ?

CE

CulExplosax14

il y a 4 jours

Bon vos gueules les puceaux maintenant ça suffit https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png
OP
CN

CelestinNain

il y a 4 jours

isidore_1212

il y a 4 jours

/tmp $ cat 1.cpp #include <array> int main() { std::array<int, 10> foo; foo[100] = 42; return 0; } /tmp $ cat 2.cpp #include <array> #include <iostream> #include <stdexcept> int main() { std::array<int, 10> foo; try { foo.at(100) = 42; } catch (const std::out_of_range& e) { std::cerr << " BMG ? " << std::endl; } return 0; } /tmp $ g++ 1.cpp /tmp $ ./a.out /tmp $ g++ 2.cpp /tmp $ ./a.out BMG ?

Je ne débat pas avec toi je t'éduque

Tu ne m'éduques de rien du tout, tu ne comprends (toujours pas) le problème. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Effet Drunning-Kruger, toussa toussa. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

IN

ItsukiNakano

il y a 4 jours

tu peux faire toi même ta surcouche, en attendant ca peut être utile de contrôler les adresses voisines de ton array
TH

thisisitas

il y a 4 jours

L'OP ne fait aucune vérification durant le run, tout se passe durant la compil.
CE

CulExplosax14

il y a 4 jours

C'est quoi ça encore Rust ?

C'est un nouveau langage high en train de percer un peu

Voilà je te le dis parceque l'op est une merde hautaine qui répond pas, comme toute les merde hautaine qui font du code quand tu comprend pas https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

I1

isidore_1212

il y a 4 jours

Tu ne m'éduques de rien du tout, tu ne comprends (toujours pas) le problème. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Effet Drunning-Kruger, toussa toussa. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

heh effectivement tu en es le bon exemple quand tu lances ce type de débat

OP
CN

CelestinNain

il y a 4 jours

CulExplosax14

il y a 4 jours

Ta gueule le nain par contre https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

Venant d'un dev web ça m'en touche une sans faire bouger l'autre. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

OP
CN

CelestinNain

il y a 4 jours

isidore_1212

il y a 4 jours

heh effectivement tu en es le bon exemple quand tu lances ce type de débat

D'ac'. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

TD

ToyosatomimiDDB

il y a 4 jours


OK mais cache ta virginité par pitié

Ayaaaaa t'avais clairement pas à dire ça.

CE

CulExplosax14

il y a 4 jours

Venant d'un dev web ça m'en touche une sans faire bouger l'autre. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

C'est pas bien grave je gagne sûrement plus que toi, et je fais 1m88 https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

Sale nain https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

I1

isidore_1212

il y a 4 jours


L'OP ne fait aucune vérification durant le run, tout se passe durant la compil.

L'op ne sait pas faire la différence entre un assignement à addresse fixe et un out of bound sur un array surtout

OP
CN

CelestinNain

il y a 4 jours

CulExplosax14

il y a 4 jours

C'est pas bien grave je gagne sûrement plus que toi, et je fais 1m88 https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

Sale nain https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

Ton TJM là maintenant tout de suite ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

CE

CulExplosax14

il y a 4 jours

Ton TJM là maintenant tout de suite ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Ta gueule je parle pas aux imbeciles https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

T'aurais du mettre petit et con en signature https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

OP
CN

CelestinNain

il y a 4 jours

CulExplosax14

il y a 4 jours

Ta gueule je parle pas aux imbeciles https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

T'aurais du mettre petit et con en signature https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

T'as l'air tendu khey, faut se détendre. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Pourquoi t'es énervé mon grand ? Je t'ai fait quoi concrètement ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

CE

CulExplosax14

il y a 4 jours

T'es l'air tendu khey, faut se détendre. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Pourquoi t'es énervé mon grand ? Je t'ai fait quoi concrètement ? https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Je te pose une question humblement et tu daigne même pas répondre c'est infernal les connards comme toi je m'en suis tellement tapé dans ma carrière que maintenant ça me rend dingue https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

E_

Elezia_

il y a 4 jours

Si ça part en prod il y a un gros souci dans trop process, indépendamment du langage
I1

isidore_1212

il y a 4 jours

tu n'as rien compris le low

déjà débunk merci

H4

Hangout4179

il y a 4 jours

C'est plus un problème au niveau du compilateur mal branlé que le langage non ? Il y a des outils d'analyse statistique qui te remontent ces erreurs dans les cas simples, simplement que rust fait ça par défaut ce qui est ultra pratique. M'enfin dans tout les cas les cas complexes c'est à toi de faire attention, et dans le cas de rust les cas complexes ne seront pas gérés mais au moins il y aura une vérification runtime.
OP
CN

CelestinNain

il y a 4 jours

CulExplosax5

il y a 4 jours

Ok autant pour moi j'ai lu le code vite fait avant de te demander un explication alors que c'était assez simple https://image.noelshack.com/fichiers/2017/39/3/1506524542-ruth-perplexev2.png

Je retire les insultes et te prie de m'excuser https://image.noelshack.com/fichiers/2017/39/3/1506524542-ruth-perplexev2.png

Pas de soucis khey, c'est vrai que j'aurais pu répondre quelque chose, mais j'avais pas vraiment d'exemple concret pour illustrer. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png

Content qu'on puisse être de nouveau copain alors, je me doutais que tu avais bon fond. https://image.noelshack.com/fichiers/2016/47/1480081450-ris42.png