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"

Répondre à