[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: HS: C++



Thu, 04 Nov 2004 00:31:24 +0100, Laurent Martelli a écrit :
> >>>>> "Sylvain" == Sylvain Sauvage <Sylvain.Sauvage@metanoesis.net>
> >writes:
> 
>   Sylvain> Wed, 3 Nov 2004 20:26:16 +0100, Gabriel Paubert a écrit :
>   >> [...]  Hériter d'une classe existante semble plus propre mais il
>   >> faut vraiment en voir le coût, composer est nettement moins cher
>   >> en terme de taille de l'exécutable et pas franchement pire dans
>   >> ce cas.
> 
>   Sylvain> Le choix entre héritage et délégation n'est pas souvent une
>   Sylvain> question de « propreté », c'est plus souvent une question
>   Sylvain> de choix, surtout en C++.
> 
> C'est formidable ce que tu viens de dire, en résumant un peu ça
> devient "le choix c'est une question de choix" ;-)

Oups, me suis eu tout seul. Remplaçons le second « choix » par « goût ».

> Ceci-dit, je pense que choisir entre héritage et délégation c'est un
> question de propreté, mais ça ne veux pas dire qu'hériter est toujours
> plus propre. Dans le cas qu inous intéresse (hériter de la classe
> Window de gtkmm pour la fenêtre d'une appli), je pense qu'il est plus
> propre de déléguer. L'héritage expose l'implémentation (l'utilisation
> de gtk) alors qu'en ayant un attribut Window, tu peux le laisser privé
> et donc encapsuler.

D'accord sur ce point. Mais la propreté, c'est parfois subjectif aussi.

>   >> C'était mon premier projet en C++, il se pourrait bien que ce
>   >> soit le dernier.
> 
>   Sylvain> C'est le problème de C++ : il faut maîtriser la façon dont
>   Sylvain> va être interprété le code pour programmer correctement. 
> 
> Je pense que c'est valable pour n'importe quel langage. 

Quand je dis maîtriser, je veux dire réellement maîtriser, pas seulement
avoir une idée de ce qui se passe. On peut très bien programmer dans un
langage comme Java, Python, Php, etc., sans se soucier de la façon dont
sont stockées en mémoire les fonctions et les structures. En C++, on doit
faire attention à de nombreux détails (notamment la gestion des fonctions
virtuelles, ou simplement la gestion des structures en mémoire) si l'on ne
veut pas avoir de mauvaise surprise.

Je ne dis pas que ce sont des complications inutiles du C++.
Je dis simplement que le C++ nécessite beaucoup de connaissances pour être
utilisable correctement (c'est-à-dire gagner quelque chose à l'utiliser).
Je dis aussi que si on n'a pas besoin des avantages du C++, autant ne pas
subir ses inconvénients (chacun pouvant percevoir avantages et
inconvénients de son point de vue).

À mon avis, le C++ n'est pas un langage pour les débutants (je n'ai jamais
vu de cours de C++ pour débutants qui traite vraiment le C++ et pas
seulement un sous-ensemble restreint du C++).

Je ne dis pas non plus à Gabriel « bien fait pour toi si tu t'en as chié,
le C++ ça se mérite, t'es qu'un noob, tu seras jamais l33t... ». Au
contraire, ce serait plutôt « Persévère, il faut `juste' de l'expérience
et tu en as déjà. »

-- 
Sylvain Sauvage



Reply to: