Partage

[Projet] Un nouveau tutoriel C++ sur le SdZ ?

Plus de rigueur sans perdre en simplicité !

Le 24 août 2012 à 23:09:51

Bonjours à tous,

J'ai créé ce topic pour organiser un débat autour d'un projet, dans lequel je compte m'impliquer s'il voit effectivement le jour, à savoir créer un nouveau big-tuto.

C'est déjà le cas pour le langage C, ici.

C'est avec plaisir que je vis d'ailleurs ce tuto voir le jour, pour la bonne raison qu'avant même qu'il existait j'avais déjà pensé à la nécessité de remplacer l'officiel.


Les arguments ne manquent pas à cet égard, je vais tâcher de les détailler au maximum.

Pourquoi remplacer le tutoriel officiel ?



Plus de rigueur



Attention, plus de rigueur n'implique pas moins de simplicité, ce qui irait à l'encontre de la philosophie même du SdZ. Ce point (la simplicité et le niveau du public visé) sera abordé ci-après.


En effet le tutoriel manque cruellement d'informations, en voulant faire simple on a fait trop vite, et de ce fait sauté des points importants du langage. Certains concepts sont à peine effleurés, et sans même entrer des détails techniques très chiants (le C++ en a plein ! :D ) que seuls les malades consultant les publications de la norme connaissent, il conviendrait de les approfondir un peu.

Car, outre les points importants tout bonnement ignorés, les choses insuffisamment approfondies provoquent des problème de compréhension et des difficultés lors de l'apprentissage de concepts plus complexes se basant dessus. L'opposé même de la philosophie de SdZ !

Voici une liste (non exhaustive, loin, très loin s'en faut) des questions récurrentes sur le forum ayant pour origine des concepts insuffisamment approfondis :

  • - la nécessité du passage par référence (parfais constante), et non par copie
  • - la nécessité d'utiliser des références en valeur de retour
  • - l'intérêt des pointeurs
  • - l'intérêt des allocations dynamiques
  • - l'intérêt de la surcharge des opérateurs
  • - l'intérêt de l'OO (!)
  • - qu'est-ce que le polymorphisme ?
  • - etc... !


Courte liste des premières choses m'étant venues à la tête en écrivant ce message.

Voici ce qui n'est même pas évoqué (liste trop courte par rapport à tout ce que j'ai en tête) :

  • - les fonctions inline
  • - les fonctions à nombre d'arguments variables
  • - les pointeurs sur fonction
  • - les flux (ben oui, moi jusqu'à très récemment j'ai toujours pensé que std::cout ça ouvrait un écran noir et ça écrivait dessus en blanc, et que std::cin ça demandait aux gens d'entrer quelque chose au clavier, ça m'a posé quelques problèmes... et pour les débutants c'est également le cas !)
  • - les autres opérateurs surchargeables, et comment on les surcharge
  • - les namespaces
  • - etc... j'en oublie un nombre incalculable !


L'objectif du nouveau tuto serait de combler ces lacunes. Sans même aller jusqu'à proposer un chapitre entier sur les variadic templates ou autres choses délirantes de complexité dans ce goût là, approfondir et ajouter quelques notions ne serait pas de trop.

Ah, j'allais oublier le plus important : les ressources ! Il n'est pas expliqué comment s'en servir, comment les utiliser, etc... pourtant c'est indispensable à nombre de projets de grande envergure !

Plus de simplicité



La conséquence logique de ce manque de détails va, comme expliqué précédemment, paradoxalement complexifier certaines notions, car les débutants n'ont pas le bagage nécessaire pour les comprendre.

Bien évidemment certains points du C++ sont particulièrement complexes, et leur apprentissage posera toujours des difficultés.

Mais malgré ça, la récurrence de certaines questions des débutants sur le forum me pousse à croire que certaines choses sont mal expliquées. C'est avec surprise que je constate d'ailleurs que les points qui me furent les plus obscurs sont également ceux relevés par nombre de débutants.

Je suis convaincu que s'ils avaient étés mieux expliqués ils auraient certainement mieux été compris (mon expérience personnelle en témoigne) !

Notamment les pointeurs, l'allocation dynamique (petite entrée en matière), et surtout, surtout... plus que tout autre chose, la surcharge des opérateurs! Cette dernière est très puissante et très intéressante, mais à mon sens mal abordée dans le tutoriel officiel.

Une approche pédagogique pas à pas



Autre chose que je reproche au tutoriel officiel : le OO est très (trop) rapidement expliquée, et les notions les plus élémentaires comme les plus complexes nous tombent dans l'assiette, et on nous demande de les respecter point final !

Comme la nécessité d'utiliser un constructeur, l'encapsulation, etc...

Or cela fait beaucoup à apprendre en même temps, et apprendre sans comprendre en mauvaise chose. Car il s'agit de comprendre la nécessité qui pousse à programmer OO (concept peu aisé si on le pratique comme il faut, ce que trop peu de gens font), et pour moi rien de vaut l'apprentissage par l'expérience.

C'est lorsque la nécessité de l'encapsulation ou d'avoir un constructeur "frappera" littéralement à la tête des gens, que la chose leur sera présentée. Elle répondra à un besoin, et donc de ce fait la notion sera immédiatement comprise (elle l'était même avant puisqu'elle répondait à une nécessité), et sera bien employée, toujours pour les mêmes raisons.

Pour cela rien ne vaut une batterie d'exercices et de problèmes, dans une situation telle que le débutant sentira le besoin vital d'une chose ou d'une autre (quand il en aura marre de marquer 20 lignes à chaque initialisation de struct, on lui présentera un constructeur, quand il aura marre de voir un objet instable parce que ces attributs sont manipulés n'importe comment dans tout les sens par des fonctions non membres il aura besoin de l'encapsulation.

La finalité de cette entreprise est de pouvoir penser OO et de savoir qu'une classe est un concept qui rend des services dans un domaine bien précis (au passage on expliquera à quel point la classe std::string est mal conçue à ce propos). Ceci compris l'OO sera plus facile à programmer car c'est sa nature même.

Notez bien que cette approche est celle employée par Bruce Heckel dans son célèbre ouvrage "Penser en C++" (Thinking in C++ en anglais), et je la trouve très bien. Je suis convaincu qu'en simplifiant, épurant et vulgarisant ses propos on peut parvenir à l'adapter.

Sachez que c'est de cette manière que j'ai appris et compris l'OO. Bien qu'elle m'eut été présentée sur le SdZ, comme je ne saisissais pas l'intégralité de ce que ça impliqué, j'ai continué à utiliser des structs publics. Je m'imposait des petits exercices, je faisais des problèmes d'algo qui nécessité des structures de données de plus en plus complexes, et peu à peu chacun des éléments de l'OO précédemment cité a commencé à voir son intérêt véritable révélé à mes yeux.

Des exercices et des problèmes



Je pensais également ajouter un ou plusieurs exercices pour chaque notion évoqué, afin de familiariser le débutant avec.

Les TP seront plus nombreux, et certains chapitres entiers ne seraient composés que d'exercices corrigés ou de problèmes, à intervalle régulier, pour regrouper plusieurs notions.

Cela ajoute de la pédagogie au tutoriel, et est également une manière détournée d'apprendre de nouvelles notions.

Notez que ce ne seront pas des excerices barbants vide sens, mais bien des petits jeux en consoles très simples, qui raviront le débutant (je me rappel encore de ce moment d’exaltation quand j'ai affiché un carré de '#' à l'écran :D ).

Conclusion



Tout cela est autant d'argument en faveur d'un nouveau tutoriel pour corriger les défauts de l'ancien.

Ce présent topic est donc tout d'abord un débat ouvert sur la nécessité d'en créer ou non un autre, et en outre un moyen de relever les personnes qui se sentiraient le courage de contribuer.

J'espère pour cela que des "gurus" du SdZ, ou des gens suffisamment matures, responsables, et ayant suffisamment de connaissance (bien évidemment !) se sentiraient capables de "manager" l'écriture de ce tutoriel, car je ne m'y connais pas suffisamment et je n'ai pas assez de courage pour assurer l'écriture de l’intégralité des chapitres du tuto.

Si suffisamment de monde est ouvert à ce projet, et que plusieurs connaisseurs se sentent d'attaque pour "manager" son écriture, alors sachez que je participerais et que le tutoriel en question aura toutes les chances de voir le jour.

Notez que "manager" le projet n'implique pas de tout écrire tout seul. Je pensais à un système ouvert dans lequel tout le monde peut écrire un chapitre (pour peu qu'il soit de qualité, bien écrit, sans fautes, etc...), qu'il en écrive 1 ou 10, et les "managers" serait charger de réguler tout ça en les triant, les filtrants, les arrangeants, les corrigeant si nécessaire, etc...

Ce système basé sur le libre partage et le libre échange, impliquant beaucoup de personnes, permettrait d'avoir un tuto très riche et très complet, chacun écrivant un chapitre sur la notion qu'il maîtrise le mieux, et surtout ce tutoriel serait susceptible de convenir et d'être compris par le plus grand nombre puisqu'il est écrit par le plus grand nombre !

Si Nanok passe par ici et se sent le courage de défendre le tutoriel officiel (qui est aussi le sien), alors ce serait une bonne chose ! ;)

Nul doute que sa contribution sera aussi intéressante s'il juge bon de le réécrire.


C'en est fini de mon argumentation. Sur ce...

...je me livre à vous et attends vos remarques !

Publicité
Le 24 août 2012 à 23:09:51
Le 24 août 2012 à 23:14:30

En fait certains de tes points sont abordés dans le tutoriel actuel et puis... Le tuto de Nanok et Maté0 n'est pas le SEUL tutoriel sur le C++, les namespaces, les pointeurs sur fonctions et pleins d'autres trucs cool se trouve dans la section Programmation/C++
Le 24 août 2012 à 23:16:29

Intéressant, je suis en partie d'accord avec toi. Bonne chance ;)
Le 24 août 2012 à 23:28:31

Personnellement je trouve que c'est une bonne idée. Je ne connais pas le C++ mais j'ai eu l'occasion de lire plusieurs fois le tutoriel de M@teo21 et Nanoc, et je pense tout comme toi que certaines explications sont à revoir. Je pense par exemple au chapitre sur les fichiers dans lequel on utilise la méthode c_str sans savoir d'où elle sort et ce qu'elle fait. Je pense aussi que le tutoriel appuie trop sur la notion de POO et sur Qt. En effet, C++ != POO, et C++ != Qt. Je viens pour apprendre le C++ en profondeur et non pour faire des fenêtres avec une bibliothèque imposante.

Je trouve également comme tu dis que le tutoriel va trop vite sur les notions les plus basiques. En gros, j'ai l'impression que la première partie du cours C++ est une compression des deux parties du cours C qui déjà n'étaient pas complètes. Bien entendu le C++ est un langage compliqué, mais cela n'empêche pas de prendre son temps pour aller en profondeur. C'est d'ailleurs l'approche du C que l'on a décidé pour notre cours (ce qu'on appelle la pédagogie explicite). Même s'il est plus simple de taire certains détails vraiment complexes, d'autres ont largement leur place.

En conclusion, je suis tout à fait pour la création d'un nouveau tutoriel s'il applique tous les points que tu soulignes. Je pourrais même peut-être apporter mon aide (pour des chapitres basiques et pour la forme).
Le 24 août 2012 à 23:36:27

Le tuto officiel s’adresse principalement à des gens qui n'ont jamais programmé c'est pourquoi certaines notions sont pas vraiment poussés en explications ou alors même pas aborder.

Le tuto, ainsi que plein d'autre tuto du sdZ, faut les voir comme des points de départ qui fournissent les bases nécessaire pour pouvoir apprendre d'autre notions plus ou moins complexe, qu'on peut trouver ici ou ailleurs.



Citation : @algo


Voici une liste (non exhaustive, loin, très loin s'en faut) des questions récurrentes sur le forum ayant pour origine des concepts insuffisamment approfondis :

- la nécessité du passage par référence (parfais constante), et non par copie
- la nécessité d'utiliser des références en valeur de retour
- l'intérêt des pointeurs
- l'intérêt des allocations dynamiques
- l'intérêt de la surcharge des opérateurs
- l'intérêt de l'OO (!)
- qu'est-ce que le polymorphisme ?
- etc... !


Tout ces points que tu as relevé viennent avec la pratique, chose qu'on ne peut trouver/enseigner ni sur le sdZ ni nul part ailleurs.

Citation : @algo


Voici ce qui n'est même pas évoqué (liste trop courte par rapport à tout ce que j'ai en tête) :

- les fonctions inline
- les fonctions à nombre d'arguments variables
- les pointeurs sur fonction
- les flux (ben oui, moi jusqu'à très récemment j'ai toujours pensé que std::cout ça ouvrait un écran noir et ça écrivait dessus en blanc, et que std::cin ça demandait aux gens d'entrer quelque chose au clavier, ça m'a posé quelques problèmes... et pour les débutants c'est également le cas !)
- les autres opérateurs surchargeables, et comment on les surcharge
- les namespaces
- etc... j'en oublie un nombre incalculable !


Y a des mini tuto sur le sdZ qui traitent tout ça ( et pour certain c'est Nanoc l'auteur, donc s'il les a pas abordé dans le tuto officiel c'est que il y a une raison pour cela ).
Et personnellement je trouve vraiment très lourd de parler de tout les opérateurs surchargeables et comment les surchargé.


Ceci dit, créer un deuxième tuto qui sera un complément à l'officiel, même s'il commence de zero mais avec des explications plus poussée, sera une bonne idée.

Bonne chance.


EDIT :

Citation : informaticienzero

Je pense aussi que le tutoriel appuie trop sur la notion de POO et sur Qt. En effet, C++ != POO, et C++ != Qt. Je viens pour apprendre le C++ en profondeur et non pour faire des fenêtres avec une bibliothèque imposante.


Par curiosité ta déjà trouver un tuto C++ qui n'aborde pas la POO ?
et qu'entend-tu par il appuie trop sur la notion POO ? ( d'ailleurs c'est un peu contradictoire avec ce que le poste propose :-° )
Le tuto passe sur les points essentielles de la POO.
Pour Qt, si tu l'aime pas tu peux t'en passer la partie elle n'est pas obligatoire. De plus si tu veux apprendre le C++ en profondeur je pense pas que c'est le meilleurs tuto pour toi, il n'est pas fait pour apprendre le C++ en profondeur.
Le 24 août 2012 à 23:49:02

J’aimerais beaucoup,

Mais sa serait plus une relecture sérieuse pour les débutants, il prenne le tuto actuel pour l'entrée et s'y mette vraiment et pratique énormément avec le tient !

En tout cas je suis le projet !
Le 25 août 2012 à 11:06:36

Citation : FrankFrank

Je sais qu'on est sur le SDZ mais bon, on est pas obligé d'avoir que des tutos qui partent de zéro. Un tuto qui vient combler les lacunes de l'officiel en abordant des points complexes du C++, ça c'est intéressant. Repartir de zéro en ré-abordant les variables, les structures de contrôle, ... ça serait lourd ^^



Je suis d'accord. Tout ce qui est syntaxe et trucs vraiment basiques ne peuvent pas vraiment être compris de travers (si ?).
Le 25 août 2012 à 12:08:41

Citation : Ouss4

Le tuto officiel s’adresse principalement à des gens qui n'ont jamais programmé c'est pourquoi certaines notions sont pas vraiment poussés en explications ou alors même pas aborder.



En effet, et ce nouveau tutoriel restera fidèle à l'esprit du SdZ : il s'adressera lui aussi à des débutants complets. Cependant le fait qu'on s'adresse à des débutants n'implique pas seulement moi qu'on doit forcément alléger le contenu du tutoriel. Bien évidemment rien n'oblige de mettre dans le tutoriel les points sombres et complexes du C++. Je prône même l'inverse : soyons complets sans augmenter la difficulté !

Cependant, le {nouveau} tutoriel tel que le conçois actuellement, passera plus rapidement sur les notions telles que qu'est-ce qu'une variable ? Qu'est-ce qu'un programme ? Qu'est-ce qu'une fonction ? etc... elles seront expliquées, bien évidemment, mais pas autant développées que sur le tutoriel officiel. Bien évidemment des liens redirigeront vers ce dernier pour les débutants qui voudraient voir la notion précisée un peu plus.

Notez que le tutoriel s'adressera également à des gens qui veulent vraiment apprendre le langage C++, et non découvrir la programmation à travers lui. En effet le tutoriel du SdZ n'apprend pas beaucoup de choses sur la langage en lui même, mais plus de savoir programmer des choses simples avec et à l'aide Qt. Une occasion pour le débutant de s'amuser donc.

Mais j'en vois comme @Informaticienzero (pour ne citer que lui) qui connaissent déjà un langage de manière suffisamment approfondie pour savoir ce qu'est une variable, fonction, etc... qui n'ont que faire de Qt et des fenêtres car ce n'est pas leur objectif principal que de l'apprendre, et qui veulent juste apprendre le langage de manière complète et rigoureuse. Ce tutoriel espère pouvoir répondre à ce besoin.

Citation : dubleFrank

Je sais qu'on est sur le SDZ mais bon, on est pas obligé d'avoir que des tutos qui partent de zéro. Un tuto qui vient combler les lacunes de l'officiel en abordant des points complexes du C++, ça c'est intéressant. Repartir de zéro en ré-abordant les variables, les structures de contrôle, ... ça serait lourd ^^ Et puis bon, la philosophie du site elle est bien sympa mais il y a beaucoup de bons codeurs sur le site et je pense que des tutos ne s'adressant pas à des débutants leur feraient un peu plaisir.



C'est également une chose que j’envisage, qui a l'avantage d'éviter de devoir réécrire les bases, et serait alors plus à même d'intéresser les codeurs expérimentés. C'est d'ailleurs le public que vise en priorité le tutoriel, mais j'avais un doute sur le fait qu'un tel tutoriel pouvait être toléré sur un site où l'on est censé permettre aux lecteurs d'aborder un langage sans la moindre connaissances préalable.

Citation : Ouss4

Tout ces points que tu as relevé viennent avec la pratique, chose qu'on ne peut trouver/enseigner ni sur le sdZ ni nul part ailleurs.



Même s'il faut du temps et de l'expérience pour que le "déclic" se fasse, je pense que simplement le préciser pourrait être une bonne chose, dans le sens où cela aidera les gens à mieux comprendre.

Citation : Ouss4

Ceci dit, créer un deuxième tuto qui sera un complément à l'officiel, même s'il commence de zero mais avec des explications plus poussée, sera une bonne idée.



Oui, c'est plutôt ce à quoi je pensais. Je ne pensais pas vraiment remplacer le tutoriel officiel (qui n'est d’ailleurs pas mauvais du moment qu'il reste dans son rayon d'action, à savoir s'initier à la programmation à travers le C++), mais plutôt en proposer un autre en complément. De toute façon l'officiel ne sera jamais remplacé (adapté en livre, etc...), c'est un fait.

Citation : Kevin Leonhart


Je suis d'accord. Tout ce qui est syntaxe et trucs vraiment basiques ne peuvent pas vraiment être compris de travers (si ?).



Non, franchement pas. La syntaxe du C++ est lourdingue mais elle reste logique, et tout de même assez simple (sauf pour les templates il faut un peu plus de gymnastique... et de lourdeur !), et comme elle est tirée du langage C, dont la syntaxe a elle même influencée plein d'autres langage moderne, ça ne posera à priori pas de problèmes.

Citation : informaticienzero

Je pense aussi que le tutoriel appuie trop sur la notion de POO et sur Qt. En effet, C++ != POO, et C++ != Qt. Je viens pour apprendre le C++ en profondeur et non pour faire des fenêtres avec une bibliothèque imposante.



Je plussoie mille fois avec toi !

En effet, le tutoriel officiel appuie beaucoup sur la POO, et le nouveau tutoriel ne compte pas appuyer moins... à condition d'avoir été écrasé auparavant sous la programmation impérative ! La POO est un point important du C++ qui mérite qu'on s'y arrête et même qu'on traîne dessus (quitte à enseigner la POO autant le faire bien, car un joli code impératif est mille fois mieux qu'un code pseudo-OO de mauvaise qualité car mal conçu, et raison de l'utilisation d'un concept mal compris). Cependant pour le débutant il vaut mieux qu'il maîtrise bien la programmation impérative avant de songer à s'y attaquer. Et de toute façon le C++ est loin, très loin, de se limiter à la POO. C'est un aspect important du langage mais pas le principal.

Et comme tu dis si bien, Qt n'a rien à voir là-dedans. Le C++ n'est pas Qt, ceux qui veulent apprendre le langage en profondeur n'ont que faire d'une bibliothèque pour faire des fenêtres (entre autres, plus d'autres trucs comme le réseau aussi il me semble, je ne suis pas spécialiste de Qt).

A la base je crois que le chapitre sur Qt servait surtout à permettre aux débutants de rapidement s'amuser sans s'encombrer avec les points sombres du langage. Bien évidemment ça n'aura pas sa place sur un tutoriel qui ambitionne d'enseigner le langage et uniquement le langage avec rigueur.

Pour le moment je vois qu'il y a suffisamment de gens qui semblent intéressés, et c'est une bonne chose. Mais je n'écrirais pas tout tout seul. Au contraire ! J'espère qu'il y aura d'autres rédacteurs volontaires ! ;)
Le 25 août 2012 à 14:31:40

Citation : Ouss4


Citation : informaticienzero

Je pense aussi que le tutoriel appuie trop sur la notion de POO et sur Qt. En effet, C++ != POO, et C++ != Qt. Je viens pour apprendre le C++ en profondeur et non pour faire des fenêtres avec une bibliothèque imposante.


Par curiosité ta déjà trouver un tuto C++ qui n'aborde pas la POO ?
et qu'entend-tu par il appuie trop sur la notion POO ? ( d'ailleurs c'est un peu contradictoire avec ce que le poste propose :-° )
Le tuto passe sur les points essentielles de la POO.
Pour Qt, si tu l'aime pas tu peux t'en passer la partie elle n'est pas obligatoire. De plus si tu veux apprendre le C++ en profondeur je pense pas que c'est le meilleurs tuto pour toi, il n'est pas fait pour apprendre le C++ en profondeur.



J'ai l'impression que pour le tutoriel on ne fait du C++ qu'avec la POO alors que ce n'est pas toujours le cas en vrai. Je plussoie @lgorythme, je pense qu'il vaut mieux savoir faire de la programmation impérative avant toute chose, ou tout du moins bien insister sur les fonctions. Là dans l'esprit du tutoriel, j'ai l'impression que c'est presque un crime de faire des fonctions qui ne soient pas des méthodes d'une classe.
Le 25 août 2012 à 14:32:47

Citation

A la base je crois que le chapitre sur Qt servait surtout à permettre aux débutants de rapidement s'amuser sans s'encombrer avec les points sombres du langage. Bien évidemment ça n'aura pas sa place sur un tutoriel qui ambitionne d'enseigner le langage et uniquement le langage avec rigueur.


Dans ce cas autant éliminer aussi d'office la STL ? :o
Le SdZ est mort, vive progdupeu.pl !
Le 25 août 2012 à 14:47:31

Non !

La STL fait parti du langage ! Elle devrait même être étudiée plus en profondeur. Et pas seulement la STL d'ailleurs : toute la SL (notamment les flux) mérite d'être abordée.
Le 25 août 2012 à 14:53:36

Dans une partie à part alors ?
Le SdZ est mort, vive progdupeu.pl !
Le 25 août 2012 à 14:58:37

Oui, dans une partie à part à la suite des parties traitants des bases du langage, des objets, etc...
Le 25 août 2012 à 15:03:42

Citation : MicroJoe

Citation

A la base je crois que le chapitre sur Qt servait surtout à permettre aux débutants de rapidement s'amuser sans s'encombrer avec les points sombres du langage. Bien évidemment ça n'aura pas sa place sur un tutoriel qui ambitionne d'enseigner le langage et uniquement le langage avec rigueur.


Dans ce cas autant éliminer aussi d'office la STL ? :o


Une des choses qu'on peut rapprocher au tuto officiel c'est qu'il n'aborde pas en profondeur la STL qui, comme déjà dit, fait partie du langage.

Citation : MicroJoe

Dans une partie à part alors ?


Oui, faut une bonne partie pour parler de la STL.

@informaticienzero : sur ce point je suis tout à fait d'accord.
Le 25 août 2012 à 16:15:09

Citation : Ouss4

<citation rid="7658168">
@informaticienzero : sur ce point je suis tout à fait d'accord.



Ravi de voir que l'on s'est bien comprit. :)

Sinon je suis tout à fait pour une partie entière sur la STL qui m'a l'air quand même bien plus complète que de simple templates pour faire une méthode générique. Et sur la SL aussi.
Staff Le 28 août 2012 à 17:26:46

Je n'ai pas le temps de faire une réponse détaillée pour l'instant. Mais je reviendrai ! Bon courage en tout cas.
Co-auteur du cours de C++. -> Posez vos questions sur le forum !
Le 28 août 2012 à 19:42:14

Citation : Nanoc

Bon courage en tout cas.



Tu vois, je pensais que tu serais du genre à détruire le projet dans l'œuf en t'y opposant par tous les moyens. En fait non tu as l'air plutôt favorable. Tu monte dans mon estime.
Le 28 août 2012 à 21:11:10

Citation : informaticienzero

Citation : Nanoc

Bon courage en tout cas.



Tu vois, je pensais que tu serais du genre à détruire le projet dans l'œuf en t'y opposant par tous les moyens. En fait non tu as l'air plutôt favorable. Tu monte dans mon estime.


Je suis presque choqué de voir ce commentaire... Nanoc a été le premier à écrire un big tuto C++ autre que le tuto officiel...
Le 28 août 2012 à 21:15:59

Citation : germino

Citation : informaticienzero

Citation : Nanoc

Bon courage en tout cas.



Tu vois, je pensais que tu serais du genre à détruire le projet dans l'œuf en t'y opposant par tous les moyens. En fait non tu as l'air plutôt favorable. Tu monte dans mon estime.


Je suis presque choqué de voir ce commentaire... Nanoc a été le premier à écrire un big tuto C++ autre que le tuto officiel...



Je ne dis pas ça du tout contre Nanoc hein, c'est pas une insulte que je lui dit. Simplement que des fois des auteurs n'aiment pas avoir de la concurrence (j'ai déjà vu ça sur Internet). Or là il est favorable à un autre tutoriel sur le C++ qui part de zéro, je trouve ça formidable. Ce n'est absolument pas une critique.

PS : son tutoriel était une sorte de suite du tutoriel de M@teo21, pas un nouveau tutoriel sur le SdZ.
Le 29 août 2012 à 19:29:40

Il est vrai que certaines notions auraient pu être approfondies, j'ai mis énormément de temps avant de comprendre l'utilité des pointeurs, et même toujours pas celle de l'allocation dynamique, cependant refaire un tutoriel entier sur le c++ n'est pas réellement nécéssaire, peut-être qu'un tutoriel se concentrant uniquement sur les notions peu exploitées serait suffisant ? Et même mieux, cela pourrait servir de suite pour ceux qui ont terminé le big tutoriel actuel et qui chercheraient à en apprendre plus !
Ce n'est que mon point de vue, dans tout les cas, je te souhaite bonne chance ! ;)
Le 31 août 2012 à 11:31:47

Je suis d'accord avec toi sur le fait que dans l'actuel tuto, on a parfois du mal à saisir l'utilité de certaines notions...

PS: On va probablement relayer ton topic dans la récap communautaire 75, si tu voulais modifier la présentation à propos de celui-ci, c'est par ici: http://www.siteduzero.com/news-63-45363.html
Le 31 août 2012 à 12:21:48

Je poste avant de lire l’entièreté de ce topic (que je lirais à tête reposée dans l'après midi) juste pour dire qu'un tel tutoriel sera une très bonne idée.

Quand on regarde le forum C++ sur le Site du Zéro on peux voir une majorité de topics concernant le célèbre framework Qt. Je pense qu'il serait temps de diversifier ça et un second tutoriel C++ (à l'image du second tutoriel C) est AHMA la meilleure chose à faire pour changer un peu les habitudes des zéros.

Je pense aussi qu'il serais sympa de faire une partie pratique (bein comme sur l'officiel) mais qui ne soit pas forcément du graphique. Cela permettrais de bien montrer au zéro qu'il existe de nombreuses bibliothèques tout aussi sympa. Je pense par exemple à Boost (même si personnellement je présenterais une autre bibliothèques).

EDIT : vive la diversité. Et merdes à ceux qui ne sont pas pour un second tutoriel ( <-- à prendre au second degré hein ;) ).
Le 31 août 2012 à 12:42:16

>> PS: On va probablement relayer ton topic dans la récap communautaire 75, si tu voulais modifier la présentation à propos de celui-ci, c'est par ici: http://www.siteduzero.com/news-63-45363.html

Ah tiens ! Je n'avais pas remarqué, merci.

Je n'ai pas grand chose de plus à ajouter, si ce n'est rajouter quelques précisions. Je le ferais cet après-midi.
Le 31 août 2012 à 17:28:58

Ok. L'idée c'est de faire un meilleur tuto. On peut difficilement être contre.
Le problème le plus gros reste de l'écrire et un peu comme tu l'entends de trouver des personnes pour l'écrire sachant qu'il faut synchroniser tout ça pour ça soit cohérent.
Que cherches-tu donc par ce thread? Avoir des avis positifs ou recruter?
Parce-que on s'en fout un peu des avis (encore une fois, on peut difficilement être contre), mais il faut l'entamer au moins pour juger / modifier / améliorer / remplir / abandonner.
Le 31 août 2012 à 18:13:40

Citation : nepser

Ok. L'idée c'est de faire un meilleur tuto. On peut difficilement être contre.



Oui, c'est vrai.

Citation : nepser


Le problème le plus gros reste de l'écrire et un peu comme tu l'entends de trouver des personnes pour l'écrire sachant qu'il faut synchroniser tout ça pour ça soit cohérent.
Que cherches-tu donc par ce thread? Avoir des avis positifs ou recruter?
Parce-que on s'en fout un peu des avis (encore une fois, on peut difficilement être contre), mais il faut l'entamer au moins pour juger / modifier / améliorer / remplir / abandonner.



Si tu avais lu un peu plus attentivement le message de présentation d'@lgorithme ... tu ne pauserais pas ces questions.
Le 31 août 2012 à 22:11:54

Citation : @lgorythme


Pourquoi remplacer le tutoriel officiel ?



Plus de rigueur



Attention, plus de rigueur n'implique pas moins de simplicité, ce qui irait à l'encontre de la philosophie même du SdZ. Ce point (la simplicité et le niveau du public visé) sera abordé ci-après.



En effet le tutoriel manque cruellement d'informations, en voulant faire simple on a fait trop vite, et de ce fait sauté des points importants du langage. Certains concepts sont à peine effleurés, et sans même entrer des détails techniques très chiants (le C++ en a plein ! :D ) que seuls les malades consultant les publications de la norme connaissent, il conviendrait de les approfondir un peu.


Je crois que la seconde version du tuto a été écrit avec cet objectif : simplicité sans perdre de rigueur. La conciliation de ces deux éléments est assez complexe. Trop de rigueur et ca perdra son rôle de tuto, trop de simplicité et l'approfondissement future sera impactée.

Citation : @lgorythme


Voici une liste (non exhaustive, loin, très loin s'en faut) des questions récurrentes sur le forum ayant pour origine des concepts insuffisamment approfondis :

  • - la nécessité du passage par référence (parfais constante), et non par copie
  • - la nécessité d'utiliser des références en valeur de retour
  • - l'intérêt des pointeurs
  • - l'intérêt des allocations dynamiques
  • - l'intérêt de la surcharge des opérateurs



Si ces points reviennent souvent sur le forum, ce n'est pas nécessairement la faute du tuto, mais de l'age moyenne du publique qui les rendent complexe.

Citation : @lgorythme


  • - l'intérêt de l'OO (!)
  • - qu'est-ce que le polymorphisme ?



Ces points reviennent souvent car ils sont complexes pour un débutant. Je ne trouve pas choquant que quelqu'un "sortant" d'un tuto ai encore des questions sur ces sujets.

Citation : @lgorythme


Voici ce qui n'est même pas évoqué (liste trop courte par rapport à tout ce que j'ai en tête) :

  • - les fonctions inline
  • - les fonctions à nombre d'arguments variables
  • - les pointeurs sur fonction



Je trouve que ça n'a franchement rien à faire dans un tuto pour débutant.

Citation : @lgorythme


  • - les flux (ben oui, moi jusqu'à très récemment j'ai toujours pensé que std::cout ça ouvrait un écran noir et ça écrivait dessus en blanc, et que std::cin ça demandait aux gens d'entrer quelque chose au clavier, ça m'a posé quelques problèmes... et pour les débutants c'est également le cas !)
  • - les autres opérateurs surchargeables, et comment on les surcharge
  • - les namespaces



En effet il manque des choses (flux/namespace dans ta liste), par contre attention à ne pas vouloir créer un catalogue (ce que tu risques avec "opérateurs surchargeables").

Citation : @lgorythme


Une approche pédagogique pas à pas



Si il y a bien une chose que je reconnais à Nanoc et Mateo c'est bien la pédagogie utilisée. C'est, à mon goût, ce qui en fait un bon tuto pour débuter (surtout avec la nouvelle version qui le corrige et le complète).
Le 1 septembre 2012 à 11:21:46

Je pense qu'il serait mieux de créer un nouveau tutoriel mais qui porterai sur des points avancés du C++ (flux, templates, namespaces...), au lieu de tout recommencer à 0. On gagnerait du temps et sûrement de contenu.

Pour moi le tutoriel officiel est adapté au site, ce qui manque ce sont certains points avancés qui devraient être dans la continuité. C'est pour ça que je propose de faire un tutoriel sur des points avancés.
Le 1 septembre 2012 à 12:30:10

Je plussoie Freedom.

Tout ce que tu veux ajouter au tuto concerne des techniques avancées qui sont déjà abordées dans d'autres tutos sur le site du zéro.

Je trouve cette idée de vouloir refaire un big-tuto du C++ tout aussi inutile que celle d'en refaire un pour le C.
Le 1 septembre 2012 à 12:44:52

Citation : Programpriv

Je pense qu'il serait mieux de créer un nouveau tutoriel mais qui porterai sur des points avancés du C++ (flux, templates, namespaces...), au lieu de tout recommencer à 0. On gagnerait du temps et sûrement de contenu.

Pour moi le tutoriel officiel est adapté au site, ce qui manque ce sont certains points avancés qui devraient être dans la continuité. C'est pour ça que je propose de faire un tutoriel sur des points avancés.



Ouais finalement je pense que ce serait une meilleure idée.
Le SdZ manque cruellement de cours sur des notions plutôt avancées (et pas qu'en C++) et qui ne touchent pas forcément à la syntaxe des langages.
C'est bien beau de former des débutants, mais il faut bien aller un peu plus loin un jour ou l'autre.
Le 1 septembre 2012 à 13:29:44

Dans ce cas il faut viser un public plus expérimenté en abordant des points plus complexes ?

Cela permettrait de réutiliser certains mini-tuto (j'ai vu qu'il y en avait un sur les namespace, un sur les transtypage et un autre sur les pointeurs sur fonction - ce dernier par Nanoc d'ailleurs ! Il devait avoir une bonne raison pour le mettre à part je pense).

Au final l'un des problème majeurs de cette proposition, c'est qu'elle ignore encore quel public exactement elle souhaite viser avec le tutoriel, et de ce fait si le public n'est pas clairement cerné les avis venant de différents publics ayant des connaissances différentes et des avis différents ne se valent pas tous.

Et cela empêche également la rédaction du dit tutoriel faute de savoir quoi y mettre dedans.

Notez bien que le tutoriel tel que je le concevais avait pour ambition de viser un public de "zéros en C++" mais pas un public de "zéros en programmation". Une formation accélérée et poussée pour ceux qui ne veulent pas s'encombrer de détail comme qu'est-ce qu'une variable? , etc...

[Projet] Un nouveau tutoriel C++ sur le SdZ ?

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown