Un langage adapté à mes désirs ?

Non ce n'est pas un énième sujet sur quel langage choisir, promis!

Le problème exposé dans ce sujet a été résolu.

Pour ma part en tout cas je n'ai jamais eu de cours parler de smart_ptr, ni de RAII par exemple. Je viens de vérifier, même un de mes anciens cours Advanced C++, qui était très bien d'ailleurs, détaille des trucs aussi avancés et inutiles en pratique que placement new.... mais ni dans le chapitre gestion de la mémoire , ni dans STL, ni dans idiomes il n'est fait mention de ces concepts.

A vrai dire, le RAII et la SL, c'est pourtant la base et devrait être vu dans un cours pour débutant. Cependant, il est vrai que les gens qui viennent vers des cours "advanced" ont souvent besoin de revoir ce que l'on estime appartenir aux bases.

En fait, pour les débutants en C++, il faudrait un cours où on aborde les pointeurs, l'allocation dynamique, et new/delete le plus tard possible. Le véritable tour de force serait de faire de l'OO avancé avec polymorphisme sans parler ni de pointeur ni de new. Comme ça on prend la bonne habitude tout de suite, systématiquement utiliser smart_ptr (j'ai encore pas pigé à quoi servait unique_ptr, donc pas taper si je viens de dire une énorme bêtise)

QuentinC

Tout à fait. Je me Lance de Francis Glassborrow ne parlait justement que du C++ procédural avec 0 OO, 0 template, 0 exception (même si le code était exception (et error) safe au final), et 0 pointeur.

Aah oui, je ne parlais pas d'apprendre avec ces tutos la et malheureusement je n'en connais pas d'autre :(. Je parlais d'une veritable formation (je suis en DUT). Meme si pour un debutant le C est assez dur, il me Emble indispensable de savoir comment cela fonctionne vraiment. Et d'ailleurs on nous a parler rapidement de la RAII nous ^^

Ricocotam

Ça ne change malheureusement pas grand chose. Pour un débutant, savoir comment ça marche derière n'est pas indispensable. Pour un niveau plus avancé par contre, oui.

+0 -0

Sans parler que derrière l'assembleur il y a encore une autre couche avant d'arriver au hard… Donc, est-ce que l'on voit vraiment ce qui se passe derrière quand on manipule la mémoire à la main en C ? Est-ce que l'on ne ferait pas mieux de voir aussi comment fiabiliser des codes où l'on demande à réaliser des choses qui peuvent nous être refusées ?

Pour un débutant, savoir comment ça marche derière n'est pas indispensable.

Ca serait intéressant de comparer les enseignements que j'appellerais bottom up, c'est-à-dire commencer par le hardware et l'assembleur puis monter progressivement dans les abstractions, et qui est me semble-t-il plus ou moins la règle dans les écoles, et l'approche opposée, appelons-la top down, c'est-à-dire commencer par le haut niveau et descendre petit à petit vers le ahrdware. Quels avantages aurait l'un face à l'autre, lequel ferait-il de nous de meilleurs programmeurs, etc.

+0 -0

Dans mon passage en école (Info/maths applis en 94-97 – pXtXXn, 20 ans!), c'était Algo et/puis Ada pendant bien 6 mois pour la partie développement (comprendre qu'il y avait d'autres trucs en parallèle: archi, maths, langues, de la théorie, …). Du lisp à un moment donné. Asm et prolog en fin de première année ou lors de la deuxième (je ne sais plus). Pareil pour les 4 semaines de C. Et l'OO en seconde année (là c'est sûr) avec plein d'Eiffel. Donc clairement pas du bottom up.

Et avant (lycée (ouais il y avait l'option à mon époque), puis prépa), c'était Pascal (bien que le prof ait regretté d'avoir montré le BASIC en seconde). Donc toujours pas du bottom up.

Argh, 20 ans quand même! Les approches ont peut-être changé depuis.

En fait si on regarde l'ensemble des matières, je crois qu'on fait un mix de top down et de bottom up plutôt. De mon côté, en première année (en 2007) les deux gros cours d'info c'était d'un côté l'intro à l'OO avec java donc très top down, et de l'autre l'assembleur puis le C donc très bottom up. Quand je disais que la règle était me semble-t-il souvent le bottom up, c'était en ce qui concerne le C/C++ uniquement. Ce que j'ai l'impression de ne jamais voir et c'est peut-être ce qui est dommage, c'est un cours de C++ avec une approche top down, qui nous éviterait sûrement de penser à la C avant de penser à la C++ dans bien des cas. Peut-être que la façon dont le langage C++ est construit ne le permet pas aisément, contrairement au java, et c'est tout simplement pour ça qque personne ne s'y essaie.

Bon, il y a peut-être des différences régionales aussi. Je ne suis pas en France.

+0 -0

J'avais appris le C++ sur le tas et suivant l'approche historique. Après, j'avais déjà des bases en OO et plein d'autres choses.

Mais pour ce qui est de l'enseignement du langage, regarde la préface du Programming Principles and Practice using C++ de Stroustrup (dispo sur son site web). Il aborde justement les diverses façons d'enseigner le langage et le pourquoi de son choix sur la question.

Après dans un cursus d'enseignement complet, il ne faut pas perdre de vu qu'il y a beaucoup de choses à enseigner et que les profs profitent de ce que les collègues ont déjà enseigné. Il est ainsi difficile de résister au piège du "vu avez vu ça en X, voici comment on fait en Y".

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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