Je suis entrain de lire l'article.
C'est bizarre de voir que meme des variable passe par copie sont declare const (le parametre epsilon de la fonction split).
Au sujet de l'utilisation de la STL, l'auteur ne semble pas connaitre la nouvelle ecriture for (range based). Note que je ne l'utilise pas non plus parceque trop de compilateur ne la supporte pas.
L'utilisation de va_args pour faire des printf au lieu de redefinition de << ne me parait pas super judicieux. Ca rends l'abstraction de type plus complique (cela dit, ils cherchent justement a virer l'abstraction de type).
Note que je n'ai pas vu la citation de carmack dans l'article
john carmack l'homme qui en 2013 fait faire du basic sur apple 2c a son fils de 8ans
https://twitter.com/ID_AA_Carmack/status/287750428517621760
![]()
godrik Voir le profil de godrik
Posté le 15 janvier 2013 à 05:23:27 Avertir un administrateur
""
C'est bizarre de voir que meme des variable passe par copie sont declare const (le parametre epsilon de la fonction split). ""
Je pense que ça améliore la lisibilité entre les paramètres in/out puis ça peut toujours empêcher d'affecter une valeur à un paramètre. Même si ça n'aurait pas d'impact il est possible que dans leur standard on ne touche pas à un paramètre ce qui est d'ailleurs une pratique assez répandue.
Bonjour, je suis nouveau sur ce forum, que j'ai découvert il y'a pas longtemps et j'apprends a coder en C+ pour l'instant. ![]()
godrik l'article n'est pas de John Carmak, il est juste dans les commentaires.
Concernant sa citation elle est un peu anachronique je trouve, POO et fonctionnel sont 2 paradigmes complètement orthogonaux et ça certains ont mis le temps mais même Java l'a compris.
Sa remarque sur const m'a fait sourire, ça me rappelle des guerre de religions autour du problème et ça:
http://gamesfromwithin.com/the-const-nazi
Salut Flo et bienvenu sur le forum !
Comment apprends-tu le C++ ?
Merci !
Alors en fait je crois que je me suis trompé et que c'est le C tout simplement.
En fait en cours, j'étudie les micro-controlleurs ( un ARDUINO notamment ) et du coup on fait des programmes tels que des barregraphes, programmes nécessitant des boutons poussoirs, potentiomètre... ![]()
il doit y avoir un probleme avec mon navigateur, je ne vois aucun commentaire... C'est pas grave. Anyway, c'est bien cet article sur la const corectness. Apparament, je ne suis pas le seul a abuser du const. ![]()
Same here, pour les const.
C'est devenu d'ailleurs tellement entêtant que dorénavant, je mets plus rien. ![]()
Et c'est dramatique. J'ai mis à mon goût bien trop de temps à comprendre vraiment l'utilisation des consts, et je suis d'accord pour dire que c'est quelque chose d'assez mal enseigné (que ce soit en cours, ou sur le net). En revanche, c'est fondamental pour avoir un programme efficace et avec un minimum de bugs.
on en parle sur slashdot: http://games.slashdot.org/story/13/01/15/1732216/doom-3-source-code-beautiful
Nan mais j'approuve la proposition du const-nazi de mettre automatiquement toute variable à const, et de mettre un mutable/whatever devant tout ce qui pourrait changer, hein.
je n'ai pas compris ce que dit hitler à la fin de la vidéo, avec l'opérateur ternaire... c'est mal de l'utiliser avec des valeurs non-constantes? ![]()
IIIIIIIIIIIIIll Voir le profil de IIIIIIIIIIIIIll
Posté le 15 janvier 2013 à 18:54:47 Avertir un administrateur
Nan mais j'approuve la proposition du const-nazi de mettre automatiquement toute variable à const, et de mettre un mutable/whatever devant tout ce qui pourrait changer, hein.
De façon intéressante, certains langages récents pas encore finis qui visent la JVM font une distinction claire entre valeur et variable.
Et tout ce qui est pas déclaré explicitement variable est non mutable.
Il y a 6 ans j'aurai trouvé ça con, et maintenant ça fait totalement du sens. La liberté c'est beau mais rien de tel que de se manger un gros compile error ou un warning en rouge, plus on est prévenu des risques (même à tort), mieux c'est.
caelacanthe
Non, c'est simplement qu'il offre des possibilités intéressantes à ce niveau-là.
Y a 10000 manières de faire de la mayrde avec les ternaires, mais il y a beaucoup de cas où ça devient très pratique et plus lisible. Et le coup du ternaire pour initialiser une variable const, ç'en est un.
avec Ada pour les arguments de procedures deux mot clés sont utiliser : in et out
avec in:
l'argument est constant.
l'argument est passé sur le stack si il tient dans un registre du processeur (int, double, float,...) sinon il seras passé par référence.
avec out:
l'argument est variable mais ne peux etre lu seulement apres que la procédure aie assigné une valeur sinon le compilateur produis une erreur. (ex:une fonction qui initialise un objet)
avec in out:
l'argument est variable et peux être lu sans conditions.
avec OUT et IN OUT, l'argument est passer par référence de facto.
si aucun mot clés est spécifié c'est IN qui est utilisé par défaut.
ex: https://gist.github.com/8a8a6563eb7233da7e30
Petite devinette pour ceux qui n'ont rien d'autre à faire ce soir :
http://pastebin.com/C1HUWqPS
Pourquoi ce programme C++ plante?
Indice, ca plante pas avec tous les compilateurs.
http://ideone.com/6H5hsk
A cause du passage par copie tu as 2 structures qui contiennent le même pointeur. A la fin de f, t'as un delete sur la copie qui corrompt l'original.
C'est une connerie que j'ai déjà vue.