La programmation en C++ moderne

Apprenez la programmation de zéro jusqu'à l'infini !

a marqué ce sujet comme résolu.

En C, ça n’existe pas. Il n’y a que des fonctions. En Pascal il y avait des procédures. Et ceux qui ont migré du Pascal peuvent utiliser ce terme pour désigner les fonctions void. Et d’autres langages avaient encore d’autres appellations, qui ne sont pourtant pas évoquées dans le tuto. Pourquoi faire une exception?

Pour ce qui est d’un exemple… Réaliser un calcul à partir des attributs me parrainait plus propre.

+0 -0

Alors je partirai sur la classe Fraction. :)

Pourtant si, le tutoriel fait remarquer qu’une fonction void est parfois appelée procédure. C’est dans le chapitre sur les fonctions. :)

Quant à savoir pourquoi on a introduit le terme de méthode, c’est parce qu’il est très répandu en dehors de C++. A contrario, je ne sais pas si les jeunes devs vont souvent entendre parler de sous programmes, ou autre. Après, c’est pas le point bloquant du cours, ça va. :)

Salut à tous.

J’ai mis à jour le premier chapitre POO et il ne me reste plus que la partie Exercices à écrire. Si vous avez de l’inspiration, n’hésitez pas. :)


Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.

Édité par informaticienzero

Salut à tous.

Le premier chapitre est fini, même s’il manque des exercices. J’ai donc commencé à attaquer le deuxième, sur la sémantique de valeur. :)


Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.

Édité par informaticienzero

D’ailleurs, débat C++ : vous êtes plutôt Rules of zero ou plutôt default ? Je parle des constructeurs, destructeurs et opérateurs copie / mouvement. Je demande parce qu’on trouve les Guidelines C++ qui sont plus zéro et Scott Meyers qui est plus default.

Personnellement, je préfère défault pour son côté plus explicite, même si un peu plus lourd. Et vous ?

J’aime bien l’avis donné à la fin de l’article moi aussi. J’avoue que c’est une question plus difficile à trancher. C’est peut-être mon passage par Python qui me fait aimer l’explicite et donc le fait d’utiliser default.

Sinon @lmghs, @jo_link_noir, @gbdivers, vous en pensez quoi ? Les autres aussi, tous les avis m’intéressent. :)

Il faut garder a l’esprit qu’un choix pedagogique n’a pas forcement besoin de suivre les bonnes pratiques de codage, mais doit repondre a un objectif pedagogique.

Un premier objectif est d’expliquer que les objets peuvent etre defaut constructible et defaut copiable. A priori, pour cela, les 2 syntaxes peuvent permettre d’expliquer cela au lecteur.

Un second point peut a transmettre est que les objets ne sont pas magiquement defaut constructible et defaut copiable. Meme quand il n’y a rien d’ecrire, la construction et la copie passent par des constructeur et operateur, meme si on ne les vois pas. Pour cet objectif, je trouve que l’approche avec "default" est plus claire.

J’ajouterais qu’il n’est pas necessaire d’apprendre au lecteur a etre faigeant, il sait generalement faire cela tout seul :) Pas besoin de montrer la version sans "default" en premier, il apprendra a l’utiliser de toute facon. ("parler en premier des choses les plus importante")

Et de toute facon, j’ai de plus en plus tendance a penser que tout ce qui est implicite est un gros probleme pour l’apprentissage, voire le code de tous les jours. Donc j’aurais tendance a preferer aussi "default".

A mon avis, un demarche pour parler de tout cela, c’est de partir du plus explicite au moins explicte :

  • classe avec declaration explicite et definition explicite. On montre la syntaxe pour declarer un constructeur par defaut et les operations de copie. Et on parle du big 5
  • classe avec declaration explicite et definition implicite. On ajoute le fait que le compilateur peut faire une partie du boulot a notre place. (Parler de "default" dans le .h ET le .cpp).
  • classe avec declaration implicite et definition implicite. Parler des limitation (quand l’implicite n’est pas automatique ?). Parler du big-0.

Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

+2 -0

Dans du code de tous les jours, j’ai le même avis que l’article: tout ou rien. Et puisque j’ai assez peu de raison d’écrire une fonction spéciale, je suis la règle du zéro.

Pour un cours, l’approche proposée par @gbdivers me semble préférable.

+2 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Au programme : @informaticienzero a continué à avancer sur la POO. J’ai commencé à écrire la première étude de cas, dont le code est par ailleurs quasiment entièrement prêt.

Merci d’avance pour vos commentaires.

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Apprendre le C++ moderne

+2 -0

A tout hasard, on ne sait jamais. Il n’y a pas un commit-diff de dispo quelque part?

lmghs

Alors j’ai regardé, la bêta mise par @mehdidou99 n’a ajouté que des modifications à la partie « Étude de cas n°1 » donc le reste de la partie POO n’a pas bougé.

Si la question porte entre tes dernières remarques et ce que j’ai modifié, il y a eu plusieurs modifications, dont le début de la partie sur la sémantique de valeur.

Salut à tous.

Petit avancement sur le chapitre Sémantique de valeur, avec notamment la partie sur la copie, où je montre comment définir explicitement le constructeur de copie et l’opérateur d’affectation par copie, avant de dire qu’avec default c’est mieux.

Autre point qui ne concerne pas directement cette mise en bêta, mais qui concerne le tutoriel pour plus tard : je pense sérieusement à virer Qt Creator, MinGW et Visual Studio pour tout remplacer par Visual Studio Code + Docker. Ça permet de ne présenter qu’un même outil pour tout le monde (donc moins de travail pour nous, puisque pas de répétition sur le débogage, sur la séparation en fichiers, etc), ça permet d’avoir les versions les plus récentes de GCC et Clang (donc pas de disparité de ce côté, tout le monde a les mêmes outils), les outils sont libres, gratuits et présents sur toutes les plateformes majeures. Donc je pense réécrire le tutoriel pour partir dessus.


Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.

Édité par informaticienzero

Pour Visual Studio Code, pourquoi pas. C’est light. (Par contre, il est possible d’installer facilement un compilo C++ dans les packages ?) Par contre, Docker ? Je n’ai jamais utilisé pour le C++ mais ça me semble être la grosse artillerie pour débuter.

Et déplacer les tutos que tu vires dans des "Annexes" (+ un disclaimer pour préciser que les tutos sur les IDEs sont souvent moins a jour que les IDEs et qu’il ne faut pas hésiter a demander sur les forums)

Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

+2 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte