On Thu, Nov 04, 2004 at 01:16:39AM +0100, Sylvain Sauvage wrote:
> Thu, 04 Nov 2004 00:31:24 +0100, Laurent Martelli a �crit :
> > >>>>> "Sylvain" == Sylvain Sauvage <[EMAIL PROTECTED]>
> > >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�. �
Ben oui, mais de l'exp�rience dans d'autres languages, c'est pas �a qui
me manque. Je connais une vingtaine d'assembleurs (de 8 bits � 64 bits,
du 8051 au mainframe IBM en passant par le VAX, et quand je dis que je
les connais, �a veut dire au moins quelques milliers de lignes �crites
dans chacun) et j'ai utilis� aussi une grande vari�t� d'autres compilateurs
et interpr�teurs (Fortran, Pascal, Ada, C, PL/1, APL/APL2, Lisp, Python, et
j'en oublie, mais ni Cobol ni Perl ne font partie la liste). Je suis juste
un peu d�go�t� par le fait que certains choix en C++ ont une influence
�norme sur la taille de l'ex�cutable, et que la plupart des programmeurs
C++ s'en foutent (ceux de Gtkmm entre autres). En plus de l'explosion de
la taille du code dues aussi aux g�n�riques (template), compr�hensible
dans certains cas, pas dans tous.
Cas particulier, libsigc++, je trouve la fonctionnalit� g�niale et je
suis pr�t � payer un surco�t raisonnable pour la s�curit� qu'elle
apporte mais le choix entre appel � la biblioth�que, instantiation d'un
g�n�rique et code en ligne est fait en d�pit et m�me � l'encontre du
bon sens. Un constructeur qui met juste une pointeur � NULL est dans
la biblioth�que (rien que le nom de la fonction est plus long que le
code machine!, et chaque appel est aussi bien plus long et plus lent
que si le code �tait en ligne, surtout avec l'indirection de la PLT),
mais une fonction d'une centaine d'instructions machine est toujours
en ligne. J'ai limit� les d�gats en cr�ant des fonction qui ont juste
une instruction return, rien d'autre.
C'est le premier language dans lequel je n'ai aucune id�e de ce que
va g�n�rer le compilateur, et �a me donne l'impression tr�s d�sagr�ble
de que je ne sais pas ce que je fais. Je pense s�rieusement retomber
sur C et Gtk, m�me si je n'aime pas Gtk, mais je n'ai pas non plus �t�
impressionn� par wxwindows ni aucun autre toolkit (le seul qui m'a plu
c'est Python+Tkinter, mais c'est vraiment trop lent pour ce projet).
Quant � libxclass, il n'est pas m�r et programmer directement avec
Xlib ou Xt, non merci, m�me si �a doit �tre formateur.
Gabriel "small is beautiful"