Salut,
PS : Le tutoriel est aussi en validation, par choix, parce que pour tout vous dire … Je n'avais même pas remarqué la présence de ce forum au début et donc je souhaiterais mettre ce qui a été déjà fait en libre accès le plus tôt possible ! J'espère que vous approuverez mon choix !
Pour tout te dire, je ne suis pas valido à la base (j'aurai du mal a trouver tes fautes), mais comme je maîtrisais le sujet, j'y ai jeté un oeil. J'ai repéré plusieurs problèmes qui empêcheront de le publier en l’état, sur la forme (je vais te les citer en dessous). Par contre ce qui m'a gêné en première lecture c'est surtout le fond que je trouve très très léger. En particulier tu n'explique pas grand chose de toutes les notions sous-jacente, te contenant, en gros, de reproduire une bête fonction rand() "à la C++11" (alors que la lib permet bien plus que ça).
Je suis arrivé à ta conclusion où tu dis alors :
Disclaimer : Ce tutoriel vise un public de débutant, et n'explique pas le fonctionnement interne / les notions mathématiques requises pour comprendre l'aléatoire ! C'est un tutoriel pour ingénieur, ça marche, on ne sait pas comment mais on est content
Techniquement ça peut se défendre. Je pense dommage de faire un tuto sur ce sujet sans en expliquer le fond mais j'avoue que ça pourrait aider certains de savoir comment on fait pour générer des nombres aléatoires sans ce taper 3 paragraphes sur ce qu'est une distribution de probabilité.
Donc, pour information, j'ai demandé l'avis a mes collègues staff, habitués à la validation, ce qu'ils en pensaient. Je te tiendrais informé. La communauté peut aussi donner son avis ici !
Concernant la forme, voici quelques remarques (dans le désordre et rapidement, j'ai dut en oublier) :
- Tu abuse beaucoup trop de la balise
Question
. Il y en a partout ce n'est pas très agréable à lire. La forme Question/Réponse en rédaction est rapidement usante. Tu peux le garder pour les questions évidente du lecteur mais ça ne devrait pas te servir de fil conducteur pour ton contenu.
- Ton dernier code ne compile probablement pas (il manque un
using namespace std
ou des std::
devant les cout
et endl
). D'une manière général pense à indenter ton code pour le rendre un poil plus clair (même si j'avoue que ici c'est tellement court que ce n'est pas gênant).
- Dans l'intro, la prochaine norme ce n'est pas C++11y mais C++1y (le y sera remplacé par l'année de sa sortie). Tu peux même déjà nommer le C++14 puisque il est en cours de finalisation et que le comité le nomme déjà ainsi.
- Il manque des balises de codes inline pour des types C++ notamment dans la partie sur
random_device
- dans la section "Le générateur arrive !" il y a une liste qui n'est pas mise en forme correctement dessous "Et donc, lequel va t'on choisir ?")
- La partie sur les générateur et en particulier sur
mt19937
est plus que contestable. mt19937
est un type, cout
est une instance. C'est différent. Déjà que dire que cout
est instancié par "les créateurs de la lib standard" est limite, pour mt19937
c'est faut. Ils ont juste définit un alias de type avec des paramètres par défauts. Mais c'est bien toi qui crée l'instance.
Bon je vais arrêter là.
Voila pour un premier retour qui je l'espère constructif. J'ai essayé de détailler mes remarques puisque c'est ton premier tuto, il ne faut pas le prendre personnellement. Le sujet peut largement convenir pour un mini-tuto comme ça. Ce qui me gène le plus est qu'effectivement on reste sur notre faim mais comme je l'ai dit plus haut, ça pourrait être utile à certaines personnes. Cependant dans un tel cas je me demande si le snippet de code dans un FAQ ne serait pas suffisant. Si j'ouvre un tuto portant uniquement sur ce module du C++11, je m'attendrais à plus de contenu (mais c'est un avis personnel).