OVH Cloud OVH Cloud

Je me lance, de Francis Glassborow, premiers avis sur ce livre.

41 réponses
Avatar
Loïc Joly
Comme la question de la qualité de ce livre a déjà été débattue ici, je
donne mon premier avis à chaud (j'ai lu une partie, survolé le reste, je
pense en faire une vraie critique quand j'aurais fini).

Les points forts :
- Vraiment aucune connaissance préalable
- Un environnement de développement livré avec et des infos détaillées
sur comment s'en servir
- Des explications qui ont l'air claires, de bonnes analogies
- Des commentaires de la beta testeuse du livre qui peuvent donner une
autre perspective
- Un livre vraiment fait pour apprendre seul
- Un apprentissage des différents éléments dans le bon ordre,
utilisation de la STL
- L'utilisation d'une bibliothèque graphique assez simple permettant de
faire dès le début des programmes assez ludiques

Les points faibles :
- Ne va pas très loin (pas de polymorphisme, de création de templates,
d'exceptions, survol des constructeurs...)
- Je trouve que le style de s'adresser directement au lecteur introduit
parfois des précautions oratoires un peu gênantes à force. Je suis plus
dubitatif que vraiment contre.
- Un nombre important de typos, dont certaines très gênantes (un *
remplacé par un gros point comme on en voit dans une liste de points).
Je pense que ce livre est une des nombreuses victimes de la traduction.
- Peut-être un peu lent (difficile de juger pour un non débutant).

En résumé : Pour des personnes vives d'esprit, avec un certain niveau
d'études scientifiques, je continuerai probablement à conseiller
/Accelerated C++/ de Koenig et Moo. Pour les autres, ou les allergiques
à l'anglais, ce livre pourrait être un premier pas, à complèter
impérativement par un autre (mais lequel ? Une suite du même auteur ?).


--
Loïc

10 réponses

1 2 3 4 5
Avatar
Nadine St-Amand
Jean-Marc Bourguet wrote:

Deja a l'epoque ce n'etait deja plus a enseigner a des debutants (meme
si en 2000 j'en aurais parle plus tard parce qu'il y avait un risque
important qu'ils se retrouvent face a cela dans le code existant, en
2002 ce risque etait deja plus faible


En 2000, c'était effectivement encore enseigné dans des écoles, c'était
encore dans les manuels de programmation encore vendus, peut-etre pas
toutes les écoles ni tous les manuels mais une certaine partie
et les compilateurs à la mode ne commencaient qu'à générer des
avertissements.

En pratique, il fallait sensibiliser les élèves aux deux formes puisque
tout l'ancien code était basé sur l'ancienne syntaxe.

Mais tant que ce n'est pas fait, c'est difficile de faire autre chose
que de prevenir ceux qui demandent conseil.


J'ai mis à jour déjà,

Seules 4-5 pages des chapitres 0 et 1 n'etaient pas a jour,
ainsi que la table des matières du chapître sur les IO,
cependant le chapître etait déjà plus ou moins à jour.

Selon la quantité de clients que je vais attirer, je vais procéder
aux modif rapidement et vendre la version revisée.



Si j'ai bien compris, j'ai envie d'ecrire des choses desobligeantes.


Il faudra bien que je trouve un jour une solution pour en tirer une
source de revenu si je veux pouvoir continuer à développer le contenu.

Il est permis d'avoir édité une version, puis une version revisée.

Ceci dit, les modifs sont en ligne.

C'est pour cela que j'ai ecrit "vieux" et "pas a jour". Pour le reste
il faudrait regarder en detail, mais ca ne donne pas envie.


Le premier chapître est pour les gens très débutant...

C'est pas tout à fait pour les gens comme vous, ni même pour vos élèves
s'ils apprennent a une vitesse normale, cependant, il y a pour tous les
goût et pour toutes les vitesses dans les chapîtres subséquents.

Ceci dit, c'est peut-être mieux de effectivement regarder avant de
donner votre opinion.

--
Nadine St-Amand
Livre-tutorial illustré de C et C++ http://cplusplus.cdoc.biz/
Générateur de code sql2php http://www.phpbackend.com


Avatar
Nadine St-Amand
Andre Heinen wrote:
On Thu, 23 Jun 2005 14:44:25 +0000, Nadine St-Amand
wrote:

Les gens très intéressés peuvent me laisser leur adresse e-mail


Pourquoi ne pas poster un article ici même lorsque le document sera
prêt?


C'est ce qui vient d'être fait.

Je considère que le contenu de ce qui est en ligne est suffisamment mûr
car je ne l'ai pas modifié depuis plusieurs mois.

A moins que vous ne parliez de poster un contenu typique ?
Ce serait difficile car tout est basé sur les dessins et les tableaux
qui accompagnent le texte.

Mon livre ne sera jamais 'complété' puisqu'il est en perpétuelle évolution.

Actuellement je travaille sur des notions d'architecture: les pointeurs
intelligents, les design pattern, plus sur les lib graphiques, des
analyses de design et même les faiblesses du C++.

Pour ce qui est de la version papier,
je ne vais engager une commande chez imprimeurs qu'avec des commandes
fermes. Pour ce qui est des livrets et des résumés plastifiés,
ils sont déjà prêts.

--
Nadine St-Amand
Livre-tutorial illustré de C et C++ http://cplusplus.cdoc.biz/
Générateur de code sql2php http://www.phpbackend.com/


Avatar
Gabriel Dos Reis
Nadine St-Amand writes:

| > Je ne suis plus en France, mais cela m'étonnerait que les choses aient
| > regressé.
|
| le changement n'est pas toujours une evolution,
| surtout quand on ne prend pas soin de garder une back-compatibilite,
| mais la ce devient un petit peu philosophique.

Je ne parle de pas de changement, mais de « régression. » Je ne sais
pas ce qu'il y a de philosophique la dedans. Et puis, une évolution n'est
pas toujours une amélioration, ti tu demandes mon avis.

| > Des bouquins sur C++, il y en a déjà plein.
| > Ce dont la communauté a besoin, c'est de bons bouquins. Sans excuses
| > :-)
|
| Le fond de mon livre n'etant justement pas la compilation

quelqu'un a parlé de « compilation » ?

| et l'utilisation des librairies et des namespace n'en etant pas l'objet,
| je passe.
|
| Le sujet est plutot l'initiation de vrais debutants a la logique de la
| programmation,

Cela tombe bien, parce que depuis bientôt deux ans, je ne bouffe que
de ça :-)

[...]

| Je t'invite par ailleurs a jeter un oeil au livre avant de critiquer
| ou calomnier aveuglement.... ou sinon t'abstenir (merci)

Merci. Je viens de jeter un oeil au livre. Donc maintenant, je suppose
que tu m'invites à être désagréable. Vivement qu'il sorte, j'ai besoin
de câle-pied.

-- Gaby
Avatar
Jean-Marc Bourguet
Nadine St-Amand writes:

Jean-Marc Bourguet wrote:

Deja a l'epoque ce n'etait deja plus a enseigner a des
debutants (meme si en 2000 j'en aurais parle plus tard
parce qu'il y avait un risque important qu'ils se
retrouvent face a cela dans le code existant, en 2002 ce
risque etait deja plus faible


En 2000, c'était effectivement encore enseigné dans des
écoles, c'était encore dans les manuels de programmation
encore vendus, peut-etre pas toutes les écoles ni tous les
manuels mais une certaine partie et les compilateurs à la
mode ne commencaient qu'à générer des avertissements.



En pratique, il fallait sensibiliser les élèves aux deux
formes puisque tout l'ancien code était basé sur
l'ancienne syntaxe.


Qu'ai-je écrit? Qu'en 2000 j'aurais débuté par la forme
normalisée et abordé ensuite les formes historiques.

En 2005, aborder les formes historiques dans l'enseignement
n'a plus de sens ailleurs que dans des notes en bas de page
ou une section historique.

C'est pour cela que j'ai ecrit "vieux" et "pas a jour". Pour le reste
il faudrait regarder en detail, mais ca ne donne pas envie.


Le premier chapître est pour les gens très débutant...


Je n'espérait qu'avoir trouver enfin quelque chose de
conseillable. Ce n'est pas le cas.

C'est pas tout à fait pour les gens comme vous, ni même
pour vos élèves s'ils apprennent a une vitesse normale,


J'enseigne pas.

Ceci dit, c'est peut-être mieux de effectivement regarder
avant de donner votre opinion.


Vous corrigez vite en tout cas, la version que je récupère
maintenant n'a plus le iostream.h de cet après-midi. Mais
j'ai continué un peu et malheureusement c'est loin de tout
régler. James a déjà indiqué certaines choses, en voici
d'autres:

* parler de template pour autre chose que le concept C++ ne
me semble pas indiqué

* c'est quoi vos conventions de nommage? Parfois en
anglais, parfois en français, parfois les identificateurs
de variables commence par une minuscule, parfois par une
majuscule, ... ça m'a l'air homogène à l'intérieur des
extraits, mais entre eux...

* le tableau sur les cast est à revoir. En fait parler des
cast aussi tôt est plutôt à éviter. Donner des exemples
avec des pointeurs alors qu'ils n'ont pas été abordé, ce
n'est pas mal.

* c'est quoi ce #define VTAILLE 40 ?

* typedef c'est pas des nouveaux types

* on introduit la boucle for au milieu de la description des
tableaux,

* on voit les fonctions C de manipulation de caractères,
suivit des classes String et StringBuffer de Java et
j'abandonne.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Nadine St-Amand
Gabriel Dos Reis wrote:
Nadine St-Amand writes:
| En 2000, c'était effectivement encore enseigné dans des écoles,

Entre 1999 et 2002, j'ai enseigné dans ce qu'on appelle en France les
(Grandes) Écoles et fait de la formation continue.


Je ne parlais ni de la France, ni des Grandes Ecoles,
ni meme de "les" ecoles, j'ai dit _des_ ecoles.

Je parle des besoins de certains de mes eleves a cette epoque,
alors que d'autres etaient effectivement passes aux <iostream>
avec les namespace,

bien entendu, j'ai à chaque fois prévenu les élèves de l'existence de
l'autre forme, au cas ou ils la rencontreraient.

Je ne suis plus en France, mais cela m'étonnerait que les choses aient
regressé.


le changement n'est pas toujours une evolution,
surtout quand on ne prend pas soin de garder une back-compatibilite,
mais la ce devient un petit peu philosophique.

Des bouquins sur C++, il y en a déjà plein.
Ce dont la communauté a besoin, c'est de bons bouquins.
Sans excuses :-)


Le fond de mon livre n'etant justement pas la compilation
et l'utilisation des librairies et des namespace n'en etant pas l'objet,
je passe.

Le sujet est plutot l'initiation de vrais debutants a la logique de la
programmation,
et aussi des notions avancees sur les pointeurs, l'allocation dynamique,
et la surcharge d'operateurs, sections pour lesquelle la syntaxe est
tres rigoureusement expliquees.

C'est un concept de "bande dessinee" de l'execution de programme que je
suis en train de developper.
C'est fait pour les gens tres visuels,
pour les gens qui aiment voir ce qui se passe.

Voici un exemple représentatif de ma technique :
http://cplusplus.cdoc.biz/download_fichier.php?f=1%203%20pointeurs%205.pdf

Je crois que c'est assez nouveau et tres original,
donc pas comme tous les autres livres.
Si j'ai ecrit tout ca, c'est justement parce que je ne trouvais pas
sur le marché ce dont j'avais besoin pour expliquer.
En fait, les sections moins bien développées de mon livres
correspondent à celles qui sont mieux expliquées dans les autres livres.
(en fait, j'explique ce qui est pas expliqué ailleurs)

Je t'invite par ailleurs a jeter un oeil au livre avant de critiquer ou
calomnier aveuglement.... ou sinon t'abstenir (merci)
car après 500 pages et environ 200 étudiants hyper-satisfaits
c'est un petit peu démotivant.

J'ai eu beaucoup de feedback positifs et aussi constructifs de la part
de ceux qui ont vraiment regarde ce que cette technique avait a apporter.

Si tu as enseigne dans les "grandes" ecoles, tu n'as peut-etre
eu que de "grands" eleves, etudiants ou encore des eleves qui savaient
deja programmer. Ton regard est donc assez biaise
par rapport a toute la clientele possible.

Ce livre est plutot dedie aux eleves qui auraient des difficultes
ou qui seraient de parfait debutants,
c'est pourquoi il est tres illustre, mais si cela plait a un autre
public, alors pourquoi pas ? (moi cela me plait, meme si je n'ai jamais
eu de difficulte dans l'apprentissage de la prog mais je suis tres
visuelle).
Les sections moins débutantes sont plutôt composées de tableaux-synthèse.

Tu ne t'es peut-etre jamais soucie de l'élève qui ne comprend pas du
tout, celui pour qui tout ces codes ne veulent absolument rien dire,
et qui ne distingue pas la declaration de l'assignement ou de la
comparaison.... et qui a encore moins idée de ce a quoi tout ce bazar
peut servir...

sinon on ne serait pas ici en train de discuter de la version du
standard pour laquelle le livre se conforme...

Il y a encore l'eleve pour qui le c++ n'est qu'une matière
complementaire comme l'etudiant en genie mecanique, celui etudiant en
math ou sciences... qui n'utilisera le c++ que 2 ou 3 fois dans sa vie,
et pour qui le standard changera plus d'une fois entre chaque utilisation...

Je crois que le plus urgent est d'aider ces eleves a fonctionner et
penser la programmation par eux-meme et que le truc de l'evolution
du standard, bien ce n'est pas pour eux.

Concernant les 3 iostream.h qui restaient encore dans mes 500 pages
d'enseignement, dans le plus vieux chapître, ils ont ete deblayes
aujourd'hui, puisse cela enlever le discredit qu'ils auraient jetes sur
ma technique d'enseignement.

--
Nadine St-Amand
Livre-tutorial illustré de C et C++ http://cplusplus.cdoc.biz/
Générateur de code sql2php http://www.phpbackend.com/

Avatar
Gabriel Dos Reis
Michel, au secours !


Nadine St-Amand writes:

[...]

| > -- Je me méfie beaucoup d'un livre d'aujourd'hui qui parle
| > immédiatement, dans le premier chapitre, de char[] et
| > d'int[].
|
| J'aime aborder la programmation avec un regard bas-niveau.
| Ca permet aux élèves de tout de suite comprendre qu'ils
| vont travailler avec une machine.

ça se discute, pas comme chez Jean-Luc.

| Un accent particulier est fait sur l'utilisation faite des
| espace-mémoire car c'est le plus gros problème chez les débutants en
| programmation et c'est aussi ce qui leur permet le plus rapidement
| de retomber sur du tangible.

Le gros problème chez les debutants, c'est qu'on les accable de notions
sans importance pour débuter. Les choses simples devraient rester
simples.

| Il faut dire aussi que c'est un livre
| qui présente le C et le C++ (dans l'ordre).

C'est un problème en soi.

| Il est vrai que l'approche top-down est aussi nécessaire pour devenir un

Je me garderai de l'appeler approche top-down. Ce serait plutôt,
approche de travers.

| développeur complet et la section architecture sera consacré à ce sujet
| et utilisera plutôt les techniques haut-niveau pour cadrer et
| simplifier l'expression.
|
| > Le type chaîne de caractères, c'est std::string en
| > C++, et un tableau d'entiers s'écrit std::vector<int>.
|
| A mon sens, std::vector<int> est plutot le type 'chaine de caractères
| de longueur variable'

Ahem.

[...]

| Le C++ c'est surtout le chapître sur les oo.

Ça aussi, c'est un autre problème.


Il y a un an, on gardait une pile énorme de bouquins jugés nocifs pour
les élèves -- surtout débutants. Un des soucis qu'on avait, c'est
comment s'assurer qu'ils ne tombent dans les mains des élèves.

-- Gaby
Avatar
Gabriel Dos Reis
Nadine St-Amand writes:

| > | A mon sens, std::vector<int> est plutot le type 'chaine de caractères
| > | de longueur variable'
| > Ahem.
|
| std::vector<char>

Si tu vas là, ils auront des problèmes le jour ils découvriront qu'en
fait, le type chaîne de caractères c'est std::string et que, ben en
fait, il ne se comporte pas, mais pas du tout comme std::vector<char>.

À éviter.

Le type chaîne de caractères, ce n'est pas que toi ou moi decidons
qu'il est. Mais ce que la communauté perçoit comme tel. C'est
std::string et non std::vector<char>.

-- Gaby
Avatar
Jean-Marc Bourguet
Nadine St-Amand writes:

L'ordre des chapitres est présentement thématique excepté
pour le premier, je vais tout rediviser en parcours
typiques.


C'est une organisation qui ne convient absolument pas à un
ouvrage pour "l'initiation de vrais debutants a la logique
de la programmation". Il faut aborder les concepts dans une
progression logique sans référencer des choses non vues. Ce
qui n'est pas possible en voulant être exhaustif sur un
sujet avant de passer au suivant.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Gabriel Dos Reis
Nadine St-Amand writes:

| Gabriel Dos Reis wrote:
| > Nadine St-Amand writes:
| > | > | A mon sens, std::vector<int> est plutot le type 'chaine de
| > caractères
| > | > | de longueur variable'
| > | > Ahem.
| > | | std::vector<char>
| > Si tu vas là, ils auront des problèmes le jour ils découvriront qu'en
| > fait, le type chaîne de caractères c'est std::string et que, ben en
| > fait, il ne se comporte pas, mais pas du tout comme std::vector<char>.
| > À éviter.
|
| C'est pas moi qui vais la,
| j'expliquais une différence entre les char [] et les vector<char>
| de mon point de vue

J'ai bien compris cela. Cependant, cela n'en fait pas quelque chose à
conseiller ou à présenter aux débutants -- et même pas débutants.

| Je ne parle pas des STL dans mon livre car il y a d'autres ouvrages
| qui le font déjà très bien, et d'autre part, une base en algo
| est intéressante pour bien comprendre la STL
| et une base en programmation est utile pour faire la base en algo,
| alors commencons par le début

Tu n'as besoin de discuter de la STL en detail. Mais un livre sur la
programmation en C++, en 2005, pour les debutants qui ne les
familiarise pas avec la bibliothèque standard -- à petite dose --
est à jetter à la poubelle. Non, parler brièvement ne compte pas.

| Mon livre présente en long et en large les tableaux de caractères
| (qui null terminés sont considérés par des chaînes de caractères)

Et bien, il n'est pas pour débuter en C++. C'est pour autre chose.

| et ce, par des librairies de c++ telles qui iostream,
| et des librairies de C utilisées en C++ comme stdio.h et string.h.
| Ces librairies sont utilisées par la communauté du C et celle du C++
| historiquement, et même aujourd'hui.

Mais, si le but est leur apprendre à programmer en C++, il faudrait
peut-être se décider à leur apprendre comment on écrit des programmes
en C++ -- pas comment on les écrits en C^@. Les autres ont essayé de
t'expliquer cela.

| Bien sur, quand j'introduis les char [], je me prépare en fait à
| introduire les char * qui permettront d'implémenter des chaînes
| variables.

Mais pourquoi faire ?

| Je présente également les std::string mais extrêmement brièvement.

Eh bien, c'est une idée pas très brillante. Ils devraient d'abord voir
std::string, et si jamais ils ne savent pas comment tuer le temps ils
peuvent regarder les distractions (char[] ou char*, etc.)

| > Le type chaîne de caractères, ce n'est pas que toi ou moi decidons
| > qu'il est. Mais ce que la communauté perçoit comme tel. C'est
| > std::string et non std::vector<char>.
|
| ce n'est pas faux
|
| le type natif de base est char []

cela n'est pas parce qu'il est natif qu'il est celui que les débutants
devraient voir en premier.

| le type objet le plus utilisé est std::string

alors, c'est quoi le but ? Leur apprendre à programmer ou juste faire
passer le temps ?

| on pourrait penser à utiliser un vector<char> pour implémenter une
| classe de type std::string

On pourrait aussi leur apprendre à écrire directement en binaire pour
implémenter une classe de type std::string pendant qu'on y est.

Si tu relègues les distractions à la fin, tu auras de la place pour
leur apprendre à programmer en C++.

-- Gaby
Avatar
Jean-Marc Bourguet
Nadine St-Amand writes:

wrote:
Nadine St-Amand wrote:

C'est le fruit de 3 ans de cours particuliers de C++, il
s'agit du matériel didactique préparé pour mes élèves.

http://cplusplus.cdoc.biz/
Juste quelques petits commentaires, vite faits.



Merci :)

(Je n'ai regardé
que quelque pages du chapitre 1.)


Ce n'est pas vraiment le meilleur chapître,
il vaut mieux consulter les chapitres plus illustrés.

Puisque vous avez consulté le chapître le moins représentatif du livre,
je vous invite plutôt à consulter parmi ces sections
(qui n'ont que quelques pages chacunes) :

sur l'allocation dynamique :
http://cplusplus.cdoc.biz/download_fichier.php?f=1%205%20memoire%20dynamique%2013.pdf


La valeur de retour de new est, soit l'adresse de la
mémoire allouée en cas de succès, soit zéro en cas d
échec.

On disait donc, pas très à jour?

[...]

Pas trop d'erreurs, mais quand même une approche beaucoup
trop axée sur des détails et manquant de progression et de
vision d'ensemble.

-- Je me méfie beaucoup d'un livre d'aujourd'hui qui parle
immédiatement, dans le premier chapitre, de char[] et
d'int[].


J'aime aborder la programmation avec un regard bas-niveau.


Ah, c'est pas un peu dur de commencer par la mécanique
quantique?

Plus sérieusement, dans ce cas il manque un chapitre
important dont le sujet serait "architecture des
ordinateurs".

Et je ne suis pas sûr du tout que ce soit la bonne approche
pour le C++.

et encore une fois, le livre enseigne autant le C que le C++,
surtout dans les premières sections.


Drôle d'idée de mélanger: les styles sont très différents.

je dois lui expliquer comment assigner un caractère
à cet espace-mémoire (et toutes les façons de le faire).
Dans les bouquins de langage C, c'est toujours abordé assez rapidement,
avec la table ascii en annexe.


Bizarre, je n'ai pas souvenir d'une telle table dans les
bouquins où j'ai appris le C et le C++.

---------------

L'ordre des chapîtres et notions, surtout dans les futures
versions, sera davantage l'ordre d'apprentissage que le
classement par thème de programmation


On pourra revoir après cela.

Ce n'est pas un livre de référence mais un livre
d'enseignement et de pratique. C'est pourquoi il ne
ressemble pas à ce que vous attendriez (et s'il y
ressemblait, ce serait inquiétant que je perde mon temps à
refaire ce qui est déjà fait)


Si ça ne correspond pas à ce que j'attends, c'est parce que
le langage décrit ressemble à un mélange de C et de C++ de
la fin des années 80 plutôt qu'au C++ de 2005 et que l'ordre
n'est pas propice à l'apprentissage. Dans l'état vouloir le
proposer comme alternative aux livres de Koenig (que j'ai
lu) et de Glassborow (dont les opinions sur l'enseignement
du C++ sont assez connues pour se faire une idée) ne tient
pas la route.

On verra après la remise en ordre...

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org



1 2 3 4 5