Sauf que le prochain standard est bientot le courant, donc je ne vois pas le problème qu'il y a à introduire les pointeurs intelligents (peut-etre pas tous, mais au moins shared_ptr), sans compter qu'à moins d'avoir un compilo très vieux (ou sur une plateforme très spécifique, ce qui n'est pas le cas des zéro), ils sont déjà implémentés.
Le problème est que la norme n'est pas encore sortie. Même si shared_ptr ne changera pas d'ici là, c'est quand même pas optimal. Mais il faudra voir quand on en sera à ce stade du cours.
Citation : Freedom
Pour la STL (j'entends ici l'ensemble conteneur/iterateurs/algo), je pense que l'important est de montrer qu'elle permet beaucoup de chose, sans pour autant tomber dans un catalogue des algo et conteneur.
C'est le but recherché. Présenter les itérateurs, le concept de foncteur et comment les utiliser sur des containers avec les algorithmes à disposition. Mais ça n'est pas encore pour tout de suite.
Citation : Freedom
Pour les itérateur, vous avez prévue de les utiliser dès le début avec les vector (partie non-OO) ou pas ? Je pense que ca serait bien, mais pas des plus évident à intégrer j'en suis conscient.
Date du vote pour la future norme, en mars, et pour BS, il n'y a pas de raison que ca échoue ... à moins que vous ayez finis d'ici là, je pense que les shared_ptr seront standard avant que vous publiez la partie qui lui est concerné. A voir en temps et en heure si je comprends bien
Pareil pour les foncteurs, si d'ici là la norme est acceptée, std::function sera au programme ou pas ? (C'est pas vraiment le plus important d'un autre coté)
Je m'y connais pas beaucoup, mais je ne comprend pas un truc : si une nouvelle norme va être acceptée, pourquoi vous ne faites pas un tutoriel qui va inclure les nouvelles fonctionnalités de cette norme ?
Je m'y connais pas beaucoup, mais je ne comprend pas un truc : si une nouvelle norme va être acceptée, pourquoi vous ne faites pas un tutoriel qui va inclure les nouvelles fonctionnalités de cette norme ?
Parce qu'à part quelques rares fonctionnalités mentionnées ici (pointeurs intelligents notamment) la norme n'ajoute que des fonctionnalités avancées voir même très avancées au langage.
Cette nouvelle norme ne va pas modifier le langage tel qu'il existe maintenant. Elle ajoute de nouvelles fonctionnalités en plus. C'est totalement rétro-compatible si c'est ça qui te fait peur.
Quelques petites choses pourraient être utiles pour le tutoriel. Je pense à "nullptr" ou aux "range-based for loops" par exemple. Peut-être même les tuples. Mais les outils de multi-threadings, les templates variadiques, les expressions lambda ou encore les outils de méta-programmation ne seront clairement pas dans ce cours. C'est beaucoup trop avancé.
Sans aborder boost, vu la date d'arrivée du prochain standard, je pense préférable de tout même aborder quelques nouveautés comme les std::shared_ptr.
a- A quelles autres nouveautés penses-tu ?
b- Pour te répondre sur ce point spécifique. On s'est posé la question de l'introduction ou non des pointeurs intelligents. On a finalement décidé qu'on ne le ferait pas pour les raisons suivantes:
Cela ne fait pas encore partie de la norme. Il faut utiliser tr1 pour y avoir accès.
On ne veut pas introduire boost.
Les auto_ptr présents dans la norme actuelle sont à déconseiller.
C'est tout de même un concept assez avancé et présenter des cas d'application simple n'est vraiment pas aisé.
Le cours sera déjà très long.
c- Au niveau des pointeurs, on a décidé de les introduire le plus tard possible au profit des références pour ne pas voir des pointeurs fleurir partout. Ceci permet de limiter aussi les cas d'utilisation au strict nécessaire.
d- Maintenant, la partie sur la STL n'est pas encore finalisée en terme de contenu. Peut-être qu'il y aura de la place pour en toucher un mot mais ce ne sera probablement le cas.
a- Là, comme ça, à aucune en particulier.
Probablement auto, et la nouvelle forme du for. Ce sont les deux les plus utilises au débutant.
Et je vois que tu cites nullptr, c'est une bonne idée -- mais je ne sais pas si elle va mettre un terme aux débats stériles que l'on voit parfois éclore ici, elle risque d'en déclencher d'autres "espèce de 0, c'est nul ton truc, il faut utiliser nullptr" (je le vois gros comme une maison)
Et si pour une raison obscure vous pensiez montrer les pointeurs de fonctions, dont membre, enclenchez sur std::bind et std::function.
b- Au moment où le bouquin sortira, la norme sera très certainement déjà dehors. Et il me emble qu'on le trouve déjà dans std:: selon les compilos.
C'est pas que auto_ptr soit à déconseiller, je m'en sers régulièrement, c'est qu'il est très particulier. Mais unique_ptr va le remplacer avantageusement.
La question des pointeurs "intelligents", c'est la question des exceptions.
Parlerez-vous des exceptions ?
Si oui, il vaudrait mieux indiquer les bonnes pratiques: le RAII et classes affiliées (string, containers, et pointeurs intelligents). Un petit chapitre sur comment s'assurer de bien libérer/fermer/... quand il y a une exception. Éventuellement montrer la forme manuelle, et surtout conclure : c'est comme ça que l'on nettoie de façon simple.
Si non, effectivement cela peut être de trop.
c- +1
d- Faire la liste de toutes les fonctions de tous les conteneurs ne me parait pas très utile. Indiquer en revanche à quoi sert chacun, beaucoup plus.
Entre les deux, il faut avoir compris comment s'utilisent les itérateurs du C++.
pour moi qui ne veut pas lire c je vezux simplement un cour pour debutant ou il n y a pas de cours avant a lire et ou il y a visual studio proffesional .
a- Le seul problème que je vois avec auto, c'est que dans les codes simples il est inutile. On connait toujours le type de l'objet que l'on manipule et c'est rarement plus qu'un vector<foo> ou à la limite un vector<foo>::iterator qui n'est pas non plus trop long à écrire. Dans ces cas là, introduire auto revient presque à faire de l'obfuscation non ?
Au niveau de nullptr, on a déjà ce problème entre 0 et NULL, ça ne fera que rajouter un troisième groupe de personnes.
b - Oui, nous allons parler des exceptions. Il va vraiment falloir que nous poussions plus en avant les réflexions sur les pointeurs intelligents.
En tout cas, ce qui est sûr c'est que l'on va éliminer les char* et les tableaux alloués via new au profit de string et vector.
d- C'est ce qui est prévu. Présenter les itérateurs et les foncteurs. Puis la notion de conteneur avec les services communs. Finalement décrire quoi utiliser dans quelle situation.
Ici aussi, C++1x pourrait faire son apparition avec les tables de hachage devenues officielles.
Une chose qui m'a manqué dans la partie Qt, c'est la création d'application multi-frames, et comment naviguer entre elles. Car j'ai essayé par moi-même, et c'est pas évident, du moins pour moi ça a été le cas. Je trouve ça important pour pouvoir vraiment utiliser Qt à fond.
Peut-être que le code final est long pour un chapitre de tuto, alors un court paragraphe pour indiquer les classes à utiliser (car je suppose que Qt a des classes déjà faites pour ça) pourrait être déjà être d'une grande aide. Le plus dur est d'avoir l'idée de base. Une fois qu'on peut démarrer, le reste s'enchaîne.
En fait, j’ai déconnecté sur le mot obfuscation, en un mot, occultation opacification par masquage (grosso modo sauf erreur de ma part); …
Bug Morphée +, consécutif au blocage de la mise en veille SURFER off.
Cependant une question, quelle est la valeur informative et intellectuelle du livre C_C++ du site du zéro par le fait d’être réactualisé, et c’est tant mieux (si j’ai bien compris), et l’avoir offert à la mémoire buvard d’un enfant de 11 ans (neveu) ; … Dois-je lui retirer ? …
Désolé à tous pour ce hors sujet, mais de par son incidence, combien important.
obfusquer == faire inutilement compliqué, et totalement incompréhensible/inmaintenable.
Parfois un plaisir gratuit, toujours la conséquence de l'inexpérience.
Attendez, vous voulez dire que les messages de "LE SURFER" sont en fait volontairement obfusqués et donc que c'est une sorte d'obfuscation dans l'obfuscation, donc que c'est du troisième degré ? Si c'est le cas, bravo, j'ai marché, mais je pensais pas que ça pouvait aller aussi loin façon Inception.
@skoua
• (… @LE SURFER : Un bon saut dans une piscine d'eau glacée et un demi-litre de café répondront à un bon nombre de tes questions. … )
Vu votre avatar et votre pseudo qui en disent long, on peut dire que vous avez de l’expérience …
Répondront ? … répondra (un bon saut)
@imghs
• (… obfusquer == faire inutilement compliqué, et totalement incompréhensible/inmaintenable.
Parfois un plaisir gratuit, toujours la conséquence de l'inexpérience. …)
Cool ce côté avenant et simple : ), mais c’est ce que j’ai dit avec d’autres synonymes, dans le sens de complication à travers : l’optimisation, la décompilation, la mémoire, etc. ; …
De plus, masquage est employé dans le sens littéral et non informatique du mot. (Si j’ai bien compris la mise à l’indexe)
Merci encore une fois à vous @imghs, Super cool ! ... : )
Nb : désolé à tous pour ce second hors sujet, je ne répondrai plus JAMAIS à une attaque
d’ordre nombriliste ou autres.
J’ai remplacé c_c++ du z, par c et c++ par Claude Delannoy pour le buvard de 11ans ; … faute de réponse.
Attendez, vous voulez dire que les messages de "LE SURFER" sont en fait volontairement obfusqués et donc que c'est une sorte d'obfuscation dans l'obfuscation, donc que c'est du troisième degré ? Si c'est le cas, bravo, j'ai marché, mais je pensais pas que ça pouvait aller aussi loin façon Inception.
Je n'en ai jamais fait, mais est-ce vraiment nécessaire d'envisager un chapitre là-dessus ? Au bout d'un moment, à moins de créer une bible en 20 volumes (ce qui reviendrait plus ou moins à reconstruire la doc), il faut pouvoir lire la doc en anglais et comprendre ce qu'elle raconte. Surtout qu'en plus celle de Qt est bien faite et qu'il y a de petits paragraphes d'intro qui te permettent de savoir où mettre les pieds.
A vrai dire j'avais cherché et trouvé plus ou moins dans la doc ce qui m'allait, mais je n'ai pas réussi à l'utiliser correctement. Mon code compilait, mais ne me donnait pas le résultat voulu, et l'aide sur le forum m'a un peu aidé mais pas suffisamment. Je pense que ma manière de faire était erronée.
C'est pour ça que comme je l'ai dit dans mon premier post, juste un petit paragraphe de quelques lignes placé à la fin d'un chapitre pour présenter la méthode sans aucun code m'aurait beaucoup plu Mais après je comprends qu'il faut nous inciter à nous débrouiller.
Pour ceux qui ont des commentaires à faire sur la nouvelle version du cours, maintenant qu'elle est disponible, j'ai ouvert un nouveau thread.
Merci de l'utiliser pour vos commentaires afin que les critiques soient centralisées à un seul endroit.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)
If you'd like to join us, read "How do we work at OpenClassrooms"! :)