Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OFF] Choisir un langage de script/code
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2, 3  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Starch
Guru
Guru


Joined: 26 Feb 2003
Posts: 539
Location: Rennes, France

PostPosted: Mon Sep 26, 2005 4:12 pm    Post subject: Reply with quote

Dais wrote:
J'ai un peu touché à l'orioenté objet, et je ne considère pas que c'est les termes employés et leur principe qui posent problème à l'apprentissage ..
Non, je pense plutôt que c'est l'aspect concret de l'OO qui est difficile d'accès. On voit le principe, mais comment bien s'en servir dans le code de tous les jours ? Je ne doute pas de l'efficacité de la chose, mais des exemples concrets ça peut faire du bien quoi :P


Supposons un groupe de joyeux aventuriers : le Guerrier, le Voleur, l' Elfe.
Tous sont aventuriers, ils dérivent donc de la classe Aventurier.

Chacun a ses propres caractéristiques de vie, endurance etc...

Mais à la fin d'une partie, chacun gagne des points d'expériences, en fonction de ses propres caractéristiques.

Aventurier contient donc la méthode : gagneExperience(), surchargée par chacune des classes filles.

Code:

Aventurier[] aventuriers =  { new Guerrier(), new Voleur(),  new Elfe() };
for (int i = 0; i < 3; ++i)
  aventuriers[i].gagneExperience();


Si tu ne comprends pas ça, tu n'as pas compris la programmation orientée object.

PS : Pour la question à la base du post : Perl. Pour une raison. C'est standard sur quasiment toutes les plateformes Unix-like.
_________________
- Vous aurez beau dire... Y'a pas qu'd'la pomme... Y'aurait pas aussi d'la betterave ?
- Si, y'en a aussi
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Mon Sep 26, 2005 10:32 pm    Post subject: Reply with quote

Starch wrote:


Code:

Aventurier[] aventuriers =  { new Guerrier(), new Voleur(),  new Elfe() };
for (int i = 0; i < 3; ++i)
  aventuriers[i].gagneExperience();


PS : Pour la question à la base du post : Perl. Pour une raison. C'est standard sur quasiment toutes les plateformes Unix-like.


Où l'argc de gagneExperience = 1 et l'argv pointe sur aventurier[i], la fonction se contentant d'incrémenter aventurier[i] c'est bien ça? Si c'est bien ça je pense saisir le concept, mais je trouve ça laid et totalement contre-intuitif.

Je préfère alors un syntaxe à la perl genre variable = fonction(arg1,...,argn), ta syntaxe correspondait à quel langage?
Back to top
View user's profile Send private message
scout
Veteran
Veteran


Joined: 08 Mar 2003
Posts: 1991
Location: France, Paris en Semaine / Metz le W-E

PostPosted: Mon Sep 26, 2005 11:03 pm    Post subject: Reply with quote

Pour reprendre un peu ce qu'expliquait Strach, la POO te permet d'écrire des fonctions plus lisibles et avec moins d'arguments pour le même boulot. Je m'explique: on pourrait écrire une fonction gagneExperienceGuerrier(Guerrier g); une gagneExperienceVoleur(Voleur v); et une gagneExperienceElfe(Elfe e); etc ...
ensuite si tu dois faire une fonction BattreContreUnMonstre, qui te fait te battre et te fait gagner de l'éxpérience, alors il va falloir appeller gagneExperience???? à la fin de ta fonction, reste à savoir laquelle ... donc tu va te taper un test du style: si c'ets un guerrier alors appeller la fonction associée, si c'est un elfe, etc ...

Ou alors tu écris une gagneExperience(Aventurier a); et tu teste si l'aventurier est un Guerrier, un voleur, etc ...

En POO, tout le monde descend de la classe Aventurier et tu n'as pas à faire de test sur le type: tu sais que ton gars réponds à un appel de gagneExperience qui est spécifique à chaque type d'aventurier et la bonne fonction sera appellée automatiquement.

Donc pour moi ça permet de donner des noms identiques à des fonctions qui effectuent le même type d'action, alors qu'en C t'es obligé de leur donner des noms différents si elles ne prennent pas les mêmes arguments.

Deuxième chose, si tu fais de gros projets, il y a forçément à un moment ou a un autre des fonctions qui prennent plein d'arguments. La solution c'est de grouper les arguments en structures, pour ne pas avoir des déclarations de fonctions à rallonge. La POO généralise cette pratique et l'utilise à tort et à travers pours AMHA une meilleur lisibilité des programmes.
_________________
http://petition.eurolinux.org/ - Petition against ePatents
L'essence de la finesse
Back to top
View user's profile Send private message
bong
Apprentice
Apprentice


Joined: 26 Oct 2004
Posts: 276
Location: Brest / Metz

PostPosted: Mon Sep 26, 2005 11:07 pm    Post subject: Reply with quote

Enlight wrote:

totalement contre-intuitif.


Scandale!
Si tu pense une chose pareille, tu n'est definitivement pas apte à programmer en objet.

Le but de l'exemple de Starch est de te montrer que la programmation objet met en avant le principe de specialisation et de delegation des taches.

ici, tu manipule trois instances de trois classes qui derivent d'aventurier.
Tous sont des aventurier et tous peuvent gagner de l'experience a leur maniere mais ce n'est pas ton probleme, tu lui dit juste qu'il en gagne.

Au contraire, moi je trouve ça hyper intuitif, mais moi c'est pas toi (philo inside :lol: )
Back to top
View user's profile Send private message
Starch
Guru
Guru


Joined: 26 Feb 2003
Posts: 539
Location: Rennes, France

PostPosted: Tue Sep 27, 2005 7:03 am    Post subject: Reply with quote

Enlight wrote:
Starch wrote:


Code:

Aventurier[] aventuriers =  { new Guerrier(), new Voleur(),  new Elfe() };
for (int i = 0; i < 3; ++i)
  aventuriers[i].gagneExperience();


PS : Pour la question à la base du post : Perl. Pour une raison. C'est standard sur quasiment toutes les plateformes Unix-like.


Où l'argc de gagneExperience = 1 et l'argv pointe sur aventurier[i], la fonction se contentant d'incrémenter aventurier[i] c'est bien ça? Si c'est bien ça je pense saisir le concept, mais je trouve ça laid et totalement contre-intuitif.


Non. Ce qu'il faut bien saisir (mais c'est pas évident parce que je n'ai peut-être pas été assez clair), c'est que gagneExperience représente ici 3 méthodes bien distinctes, qui manipulent des attributs spécifiques à chaque classe, mais la signification de fonction est la même. (je sais je suis pas clair). Heureusement d'autres le sont plus ;p

L'idée derrière le concept de polymorphisme, c'est de faire la même chose, mais d'une manière différente.
_________________
- Vous aurez beau dire... Y'a pas qu'd'la pomme... Y'aurait pas aussi d'la betterave ?
- Si, y'en a aussi
Back to top
View user's profile Send private message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Tue Sep 27, 2005 7:51 am    Post subject: Reply with quote

/me suit cette discussion avec bcp d'interet, parce que /me y comprend rien a la POO.
Starch wrote:
Non. Ce qu'il faut bien saisir (mais c'est pas évident parce que je n'ai peut-être pas été assez clair), c'est que gagneExperience représente ici 3 méthodes bien distinctes, qui manipulent des attributs spécifiques à chaque classe, mais la signification de fonction est la même.
Et comment tu fais cette distinction ? tu fais un test pour chacun des aventuriers quand tu declares gagneExperience ?

Si je comprend bien ton exemple, on a une classe Aventurier, qui contiend certaines "methodes" (gagneExperience, meursViolemment ...) et ces methodes sont communes a toutes les classes filles : Guerrier, Elfe, Voleur.
Maintenant, supposons que j'ai 2 nouveaux aventurier: Sorcier et Mage. Tous les deux vont etre des classe filles de Aventurier, donc on va pouvoir leur attribuer gagneExperience (il faut rajouter 2 tests dans cette fonction pour determiner comment ils en gagnent). C'est ca ?
Mais ces 2 nouveaux aventuriers, ils ont une propriete supplementaire: faireUneBouledeFeu, ce que ne peuvent pas faire Guerier, Elfe ou Voleur. Comment on s'en sort ? On fait une methode faireUneBouledeFeu() dans la classe Aventurier, ou bein on cree une classe fille de Aventurier (Magot) qui contient cette methode ...

Hum, j'ai vraiment un probleme de vocabulaire.
Back to top
View user's profile Send private message
Kangourou
Tux's lil' helper
Tux's lil' helper


Joined: 12 Mar 2005
Posts: 146

PostPosted: Tue Sep 27, 2005 9:27 am    Post subject: Reply with quote

Nop justement. En fait dans la classe Aventurier, la methode gagneExperience est seulement déclaré, pas défini. Tu la défini apres dans chaque classe fille. Pareil quand tu tu rajoute un sorcier, elle va etre encore une fois redefini dans cette classe.
Ensuite quand tu va arrivé sur:
Code:
aventuriers[i].gagneExperience();
de l'exemple de tout a l'heure, si l'aventurier est un guerrier, c'eslt le gagneExperience de la classe aventurier qui sea executé, si c'est un sorcier, ca sera celle de la classe sorcier. Ca permet de donné un nom générique a une methode que tu devra executé quelques sois la classe fille, mais avec un code différents a l'interieur. Ca evite les tests pour voir la classe que tu a, puisque t'appelle toujours le même nom de méthode.

Quand à la boule de feu du sorcier, elle ne sera pas défini dans la classe aventurier et guerrier, seulement dans sorcier, comme toute les méthodes spécifiques à une classe.

J'espère que j'ai pas été trop flou :oops:
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Tue Sep 27, 2005 9:36 am    Post subject: Reply with quote

eh ben ça a furieusement dévié! :)

dites pour la POO y a plein de tutos sur le net...
_________________
membre officieux du SAV Ati GEntoo
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Tue Sep 27, 2005 9:58 am    Post subject: Reply with quote

kwenspc wrote:
eh ben ça a furieusement dévié! :)

dites pour la POO y a plein de tutos sur le net...


Pas vraiment, en fait, si quelqu'un me convainc de l'intérêt de l'O.O. ce sera ruby, sinon perl. Je pense avoir à peu près saisi le concept, mais pour que notre (nos en fait) gagneExperience ai(en)t un intérêt, il(s) faut qu'il(s) 'utilise(nt) les attributs du {mage,guerrier,etc...}

mais :

1) l'utilité au quotidien me parrait limitée
2) pas besoin de langage O.O. pour faire un truc de ce genre
Back to top
View user's profile Send private message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Tue Sep 27, 2005 10:03 am    Post subject: Reply with quote

Kangourou wrote:
Nop justement. En fait dans la classe Aventurier, la methode gagneExperience est seulement déclaré, pas défini. Tu la défini apres dans chaque classe fille. Pareil quand tu tu rajoute un sorcier, elle va etre encore une fois redefini dans cette classe.
Ensuite quand tu va arrivé sur:
Code:
aventuriers[i].gagneExperience();
de l'exemple de tout a l'heure, si l'aventurier est un guerrier, c'eslt le gagneExperience de la classe aventurier qui sea executé, si c'est un sorcier, ca sera celle de la classe sorcier. Ca permet de donné un nom générique a une methode que tu devra executé quelques sois la classe fille, mais avec un code différents a l'interieur. Ca evite les tests pour voir la classe que tu a, puisque t'appelle toujours le même nom de méthode.

Quand à la boule de feu du sorcier, elle ne sera pas défini dans la classe aventurier et guerrier, seulement dans sorcier, comme toute les méthodes spécifiques à une classe.

J'espère que j'ai pas été trop flou :oops:
Rha, je crois que je comprends. C'est encore plus fort. Merci.

kwenspc wrote:
dites pour la POO y a plein de tutos sur le net...
Oui, mais un tuto, tu lui poses une question pour savoir si t'as compris, et ben il repond pas ...
Back to top
View user's profile Send private message
bong
Apprentice
Apprentice


Joined: 26 Oct 2004
Posts: 276
Location: Brest / Metz

PostPosted: Tue Sep 27, 2005 11:29 am    Post subject: Reply with quote

Enlight wrote:
1) l'utilité au quotidien me parrait limitée
2) pas besoin de langage O.O. pour faire un truc de ce genre


:cry: ARRGLL!! (cri étranglé d'horreur)

Bon, pour ne pas paraitre extremiste, je veux bien t'accorder que pour de petites applications, la poo n'est pas toujours utile mais des que l'on travaille sur un projet de plus grande envergure où l'on manipule beaucoup de données du même genre (j'entent par la: de la même famille mais qui different un peu) la poo est d'un grand secour.

Un autre exemple concret, par exemple un simulateur de circulation:

En pseudo C:
Code:

struct voiture{...}
avancer_voiture();

struct moto{...}
avancer_moto();

struct camion{...}
avancer_camion();

main{
    ...
    voitures[]; motos[]; camions[];
    for(...; i++){
        avancer_voiture(voitures[i]);
    }

    for(...; i++){
        avancer_moto(motos[i]);
    }

    for(...; i++){
        avancer_camion(camions[i]);
    }
}

C'est tres lourd car tu dois en permanence distinguer chaque type de donnee..

En peudo c++:
Code:

class vehicule{
    avancer();  //methode (fonction) vide a definir plus loin;
}

class voiture derive de vehicule{
    avancer(); //methode pour avancer la voiture
}

class moto derive de vehicule{
    avancer(); //methode pour avancer la moto
}

class camion derive de vehicule{
    avancer(); //idem!
}

main{
    vehicules[]; // contient n'importe quel type de vehicule..
    for(...; i++){
        vehicules[i].avancer();
    }
}

Au final, c'est tout de même bien plus comprehensible.....
Back to top
View user's profile Send private message
Kangourou
Tux's lil' helper
Tux's lil' helper


Joined: 12 Mar 2005
Posts: 146

PostPosted: Tue Sep 27, 2005 11:16 pm    Post subject: Reply with quote

Enlight, c'est vrai que pour faire un petit script la POO est pas vraiment utile, mais dès que t'a un truc un poil plus costaud, c'est quand même le jour est la nuit. Je te conseille franchement d'y jeter un oeil, c'est vraiment tout benef :wink:

Sinon j'ai tester Ruby à cause de vous, et je suis moi aussi tomber amoureux :oops: Je sens que je vais m'y mettre sérieusement :D
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Wed Sep 28, 2005 8:02 am    Post subject: Reply with quote

Oui et puis rien n'oblige de faire de la POO avec un langage qui à la base est OO. On peus très bien faire des scripts procédurals avec du ruby ou du python.

en plus python ça peut avoir un interêt sur le cv alors que perl...
_________________
membre officieux du SAV Ati GEntoo
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Wed Sep 28, 2005 8:50 am    Post subject: Reply with quote

kwenspc wrote:
...

en plus python ça peut avoir un interêt sur le cv alors que perl...


Tu peux dévelloper stp? En même temps, vu ma profession je doute que ça apporte un grand plus mais sait-on jamais...
Back to top
View user's profile Send private message
Starch
Guru
Guru


Joined: 26 Feb 2003
Posts: 539
Location: Rennes, France

PostPosted: Wed Sep 28, 2005 9:40 am    Post subject: Reply with quote

Enlight wrote:
Je pense avoir à peu près saisi le concept, mais pour que notre (nos en fait) gagneExperience ai(en)t un intérêt, il(s) faut qu'il(s) 'utilise(nt) les attributs du {mage,guerrier,etc...}


Oui.

Enlight wrote:

mais :
1) l'utilité au quotidien me parrait limitée


Ca dépend ce que tu fais.

Enlight wrote:

2) pas besoin de langage O.O. pour faire un truc de ce genre


Certes... Mais bon faire de l'objet sans langage adapté c'est pénible.
Tu peux utiliser lex et yacc pour parser un fichier, mais une bonne regexp est tellement plus pratique...

C'est dur d'appréhender le concept de polymorphisme au début. Mais ça t'évite les
Code:

switch (type) {
  case GUERRIER:
     {block}
     break;
  ...


Et l'héritage ? Je ne te parle pas du semi-elfe, qui hérite de Elfe et de Homme, qui en plus si il est à tendance Guerrier...

kwenspc wrote:

en plus python ça peut avoir un interêt sur le cv alors que perl...


Pour Zope...
Mouais bon...
Faut le vouloir faire du web après... C'est vite lourd, chiant comme la mort, en utilisant un proto de merde totalement
inadapté aux applications qu'on veut lui faire faire.

</mode le_http_c_est_pourrave>
_________________
- Vous aurez beau dire... Y'a pas qu'd'la pomme... Y'aurait pas aussi d'la betterave ?
- Si, y'en a aussi
Back to top
View user's profile Send private message
Bob_Le_Mou
Tux's lil' helper
Tux's lil' helper


Joined: 17 Jun 2004
Posts: 114
Location: Pantin, France

PostPosted: Fri Sep 30, 2005 10:18 am    Post subject: Reply with quote

Une chose est sûre : choisir un langage pour "scripter" c'est pas simple et dépend de tes besoins, de tes "goûts" en matière de programmation, etc.

Si je peux te donner un conseil au départ, choisis-en un et reste sur celui là.
Plus tu le maitriseras, plus tes scripts seront efficaces et utiles.
Avec l'expérience, tu pourras jetter un coup d'oeil sur les autres langages.

perl (je connais plutôt bien), python (je connais un peu) , ou ruby (je connais pas du tout): tout ces langages offrent l'avantage d'être bien documenté et de disposer de larges communautés d'utilisateurs et de tutoriels d'excellente qualité ainsi que de larges eventails d'extensions (au sens générique du terme) qui te permettront d'enrichir pas mal tes scripts.

/my life
Pour ma part, j'utilise Perl pour 95% de mes réalisations sous Linux, et Windows (au boulot) et j'ai du mal à le lâcher.

Il est vrai que quelquefois, j'ai du mal à relire mes scripts.
Mais, en prenant le temps de bien documenter et d'user voir d'abuser des commentaires on gagne un temps précieux d'une part à la relecture et d'autre part pendant la phase d'"apprentissage" du langage...
/my life
_________________
Rimouski, c'est loin-in d'ici...
Back to top
View user's profile Send private message
sireyessire
Advocate
Advocate


Joined: 20 Mar 2003
Posts: 2991
Location: back in Paris, France

PostPosted: Fri Sep 30, 2005 4:17 pm    Post subject: Reply with quote

bong wrote:
Enlight wrote:
1) l'utilité au quotidien me parrait limitée
2) pas besoin de langage O.O. pour faire un truc de ce genre


:cry: ARRGLL!! (cri étranglé d'horreur)

Bon, pour ne pas paraitre extremiste, je veux bien t'accorder que pour de petites applications, la poo n'est pas toujours utile mais des que l'on travaille sur un projet de plus grande envergure où l'on manipule beaucoup de données du même genre (j'entent par la: de la même famille mais qui different un peu) la poo est d'un grand secour.

Un autre exemple concret, par exemple un simulateur de circulation:

En pseudo C:
Code:

struct voiture{...}
avancer_voiture();

struct moto{...}
avancer_moto();

struct camion{...}
avancer_camion();

main{
    ...
    voitures[]; motos[]; camions[];
    for(...; i++){
        avancer_voiture(voitures[i]);
    }

    for(...; i++){
        avancer_moto(motos[i]);
    }

    for(...; i++){
        avancer_camion(camions[i]);
    }
}

C'est tres lourd car tu dois en permanence distinguer chaque type de donnee..

En peudo c++:
Code:

class vehicule{
    avancer();  //methode (fonction) vide a definir plus loin;
}

class voiture derive de vehicule{
    avancer(); //methode pour avancer la voiture
}

class moto derive de vehicule{
    avancer(); //methode pour avancer la moto
}

class camion derive de vehicule{
    avancer(); //idem!
}

main{
    vehicules[]; // contient n'importe quel type de vehicule..
    for(...; i++){
        vehicules[i].avancer();
    }
}

Au final, c'est tout de même bien plus comprehensible.....

enfin personne ne t'oblige à définir plein de fonctions avancer() en C ...
tu peux en definir une qui prend un pointeur sur une struct de ton choix et qui a un champ type et après c'est qu'un switch() dans la fonction avancer() ce qui rend aussi le truc très lisible.

En fait c'est assez souvent l'histoire de "schtroumpf vert ou vert schtroumpf", le seul avantage de l'objet (même si je l'utilise vraiment très peu: C rules) c'est qu'un gros newb s'il suit les règles n'écrira pas un truc trop horrible, c'est tout.

en autre C:
Code:
struct vehicule {
char* type;
...
};
avancer(struct vehicule* V){
if(strcmp(vehicule->type,"voiture")==0){
do this;}
if(....

l'avantage de cette technique est que les differents avancer sont regroupés donc tu peux bien voir les différences, mais l'avantage de l'objet c'est que pour en rajouter un c'est juste une nouvelle classe à faire... donc chacun a son pour et son contre. En bref, unissez vous, et codez mieux! :wink:
_________________
I never think of the future. It comes soon enough.
Albert Einstein

Try simpler first
Shockley
Back to top
View user's profile Send private message
vishnoo
Tux's lil' helper
Tux's lil' helper


Joined: 05 Jun 2005
Posts: 119
Location: Antony (France)

PostPosted: Fri Sep 30, 2005 5:29 pm    Post subject: Reply with quote

Enlight cherche un langage de script à la base, donc bon, les deux "universels" sont perl et python quand même.

Les deux sont très puissants (ils tendent même à se rapprocher au niveau du bytecode), offrent une base de programmes déjà faits importante (surtout perl avec CPAN je trouve) et permettent de faire bien plus que de simples scripts...

Alors maintenant, comment éviter le troll, hein ? Disons que la différences entre les deux est question d'esthète...
Pout "débuter" je trouve quand même que Python sera plus clair et structurant. Un bon lien là-dessus.

PS. pour l'aspect objet, chaque chose en son temps, non ?
Back to top
View user's profile Send private message
Bob_Le_Mou
Tux's lil' helper
Tux's lil' helper


Joined: 17 Jun 2004
Posts: 114
Location: Pantin, France

PostPosted: Fri Sep 30, 2005 9:39 pm    Post subject: Reply with quote

Quote:
Les deux sont très puissants (ils tendent même à se rapprocher au niveau du bytecode), offrent une base de programmes déjà faits importante (surtout perl avec CPAN je trouve) et permettent de faire bien plus que de simples scripts...


Tout a fait d'accord.

Quote:
Alors maintenant, comment éviter le troll, hein ? Disons que la différences entre les deux est question dle troll, hein ? Disons que la différences entre les deux est question d'esthète...
Pout "débuter" je trouve quand même que Python sera plus clair et structurant.


Je serai un peu plus nuancé. Le souci (ou l'avantage) avec Python, c'est que tout est objet, et que enlight sera tout de suite confronté à l'assimilation des concepts de la programmation orienté objet, ce qui si on a pas le temps n'est pas forcément le plus évident.
Je trouve Perl pas forcément plus abordable, mais sa syntaxe reste classique, j'ose dire presque naturelle (j'ai osé :mrgreen: ) si on pige 2 ou 3 trucs au départ, le tour est joué...

Mais bon, tu as raison c'est une question d'esthète...
_________________
Rimouski, c'est loin-in d'ici...
Back to top
View user's profile Send private message
Starch
Guru
Guru


Joined: 26 Feb 2003
Posts: 539
Location: Rennes, France

PostPosted: Sat Oct 01, 2005 4:25 pm    Post subject: Reply with quote

sireyessire wrote:

en autre C:
Code:
struct vehicule {
char* type;
...
};
avancer(struct vehicule* V){
if(strcmp(vehicule->type,"voiture")==0){
do this;}
if(....

l'avantage de cette technique est que les differents avancer sont regroupés donc tu peux bien voir les différences, mais l'avantage de l'objet c'est que pour en rajouter un c'est juste une nouvelle classe à faire... donc chacun a son pour et son contre. En bref, unissez vous, et codez mieux! :wink:


Le désavantage c'est que si t'as une r11 et une 306, tu dois réécrire le code commun à voiture dans les deux...
_________________
- Vous aurez beau dire... Y'a pas qu'd'la pomme... Y'aurait pas aussi d'la betterave ?
- Si, y'en a aussi
Back to top
View user's profile Send private message
sireyessire
Advocate
Advocate


Joined: 20 Mar 2003
Posts: 2991
Location: back in Paris, France

PostPosted: Sun Oct 02, 2005 1:02 pm    Post subject: Reply with quote

Starch wrote:

Le désavantage c'est que si t'as une r11 et une 306, tu dois réécrire le code commun à voiture dans les deux...

j'ai pas compris le problème là. tu peux faire un OU dans la condition du if.
_________________
I never think of the future. It comes soon enough.
Albert Einstein

Try simpler first
Shockley
Back to top
View user's profile Send private message
Starch
Guru
Guru


Joined: 26 Feb 2003
Posts: 539
Location: Rennes, France

PostPosted: Mon Oct 03, 2005 7:59 am    Post subject: Reply with quote

sireyessire wrote:
Starch wrote:

Le désavantage c'est que si t'as une r11 et une 306, tu dois réécrire le code commun à voiture dans les deux...

j'ai pas compris le problème là. tu peux faire un OU dans la condition du if.


effectivement...
Je n'y avais pas pensé (1).

Code:

if (vehicule->type == voiture || vehicule->type == r11 || vehicule->type == 306)
  do this;
if (vehicule->type == r11)
  do that;
if (vehicle->type == 306)
  do this different that;
...


C'est sur que si on a 50 voitures, c'est optimal cette solution :/ (2)

[1] Ce n'est pas ironique.
[2] Là ça l'est.
_________________
- Vous aurez beau dire... Y'a pas qu'd'la pomme... Y'aurait pas aussi d'la betterave ?
- Si, y'en a aussi
Back to top
View user's profile Send private message
Sleeper
l33t
l33t


Joined: 12 Nov 2002
Posts: 667

PostPosted: Fri Oct 07, 2005 2:19 pm    Post subject: Reply with quote

kwenspc wrote:

lisp...lol comme langage de script on a déjà fait plus simple. C'est horrible ce langage. Y a que les vieux nerds à la RDS qui s'amusent encore avec. Franchement le concept est "marrant" (en se forcant un peu) mais ça va vite te gaver de faire de parenthèses. pi bon ce langage n'a d'interêt que si tu maîtrises la recursivité...chose qui est anti-productive (les cas en prod où on met de la recursivité sont TRES rares). enfin bref c'est à chier quoi.


Lisp est tres bien .. Pas complique et beau .. Y'a encore que Ruby qui me plait autant ....
Quand a la recursivite, il faut voir de quelle recursivite tu parles .. terminale ou non-terminale ??? S'il est vrai que la recursivite non-terminale n'est pas utilisee il n'en est pas de meme de la terminale .. qui a l'avantage d'allier la simplicite d'ecriture aux oerfs :)

Quote:

mais bon c'est vrai le seul, le vrai comme langage c'est le C (l'asm à la rigueur)... :P (oui je sais c'est pas des langages de scripts et alors?)


Un bon dev utilise l'outil qui va bien ... Utiliser le C opur des scripts qui vont massivement parser du texte ... est d'une inefficacite crasse en terme de temps de developpement ... et j'adore le C.
Back to top
View user's profile Send private message
kernelsensei
Bodhisattva
Bodhisattva


Joined: 22 Feb 2004
Posts: 5619
Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)

PostPosted: Wed Oct 12, 2005 8:58 pm    Post subject: Reply with quote

Moi jusqu'à présent, j'ai fait uniquement du bash, mais là, suite a une discution avec scout, je me mets a ruby qui me parrait assez cool !
_________________
$ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join'
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Wed Oct 12, 2005 9:03 pm    Post subject: Reply with quote

Pour l'instant je suis parti sur Perl, mais j'ai l'impression de pas mal stagner, en même temps comme j'essaye de jouer avec socket bind et cie c'est un peu normal... la decouverte absolue, mais au moins le jour où je les réutilise en C je devrait pas être trop paumé.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum