IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Quel avenir pour le Framework.NET ? [Débat]


Sujet :

Dotnet

  1. #81
    Membre averti

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 95
    Points : 350
    Points
    350
    Par défaut
    Citation Envoyé par niocnam
    Dot Net a forcement un avenir, tout comme ce que Microsoft a fait jusqu'à présent.
    Ok jusqu'ici on est d'accord. C'est enfoncer des portes ouvertes que de souligner qu'ils ont le poids et les moyens d'imposer leur technologie.

    Citation Envoyé par niocnam
    Le leader mondial des solutions en bois ne peut que nous promettre des milliers de versions plus ou moins compatible entre elle et avec tous les soucis que çà posera... que cela ne tienne ! il y aura toujours des gens pour acheter ces technos pourraves soient disant révolutionnaires.
    Là par contre c'est du dénigrement anti crosoft pur et dur sans l'ombre d'un argument. Oui je sais que ca fait genre que d'enfoncer Microsoft mais au moins donne des exemples.

    Je sais bien qu'en tant qu'informaticien on est sensé avoir des raisonnements binaires mais Microsoft c'est une boite comme les autres, y a du bon ( Win2000/XP, l'USB, .NET, Excel ) et des gros loupés ( La techno activeX, IE ... ). Aprés c'est une question de gout, les nostalgiques de vi ne sont pas obligé d'être sous Windows et de programmer avec VS.

    Citation Envoyé par niocnam
    Dot Net ne réinvente pas la poudre, mais permet simplement de vulgariser certaines technos aux pauvres informaticiens que nous sommes en échange de quelques Euros pour chaque version de leur compilo. Enfin bon, çà ne change pas, on connait bien les techniques de l'ami Billou. Cà c'est mon avis et il n'engage que moi.
    Là aussi c'est de la mal/désinformation. La techno .net c'est le truc le plus ouvert que Microsoft ai fait depuis longtemps. Le Framework est gratuit, les compilos sont gratuits, et maintenant il y a même les version Express de VB/C#/C++ qui sont gratuites.

    On est bien d'accords : ils ne font pas ca par altruisme ( il est évident qu'ils souhaites rendre windows encore + incontournable en attirant les développeurs ) mais ce que tu dis dans ce contexte est faux.

    Citation Envoyé par niocnam
    D'un point de vue purement informatique, Dot Net est une réponse au besoin d'aujourd'hui : l'application intra distribuée made in CroSoft.

    Après on adhére ou pas
    Tout a fait, et a chacun de peser les avantages et inconvénients selon la situation.

    Pour en revenir au sujet je fais parti des convaicu de la viabilité du DOTNET et ceci pour plusieurs raisons :

    - Le poids économique de Microsoft ( c'est évident on va pas y revenir )

    - La multiplication des langages ( Le C# a attiré tout un tas de rebelles qui étaient sur des produits borland )

    - L'installation du framework par Windows Update

    - Une techno non pas révolutionnaire mais totalement actuelle et en progression perpetuelle ( voir le futur LINQ )

    - La possibilité de faire de la belle POO de manière plus moderne qu'avec le C++ pour les pros mais aussi de faire des usines a Gaz à coup de Wizard pour les débutants.

    Mais pour moi, l'argument numéro 1 c'est que l'utilisateur final statisquement :

    - Il est sous Windows XP ( pour les jeux/Multimédia/ADSL ).
    - Il a un PC à 1Ghz ou plus
    - Il y connait que dalle et veut pas s'y connaitre
    - Il en a rien a foutre si son logiciel est fait en DotNet ou autre, il veut des belles icones et que ca fonctionne ( si ca fait meuuh quand on clique c'est un plus ).

    Dans ce contexte la technologie qui permet de développer rapidement sur la plateforme cible pour pas trop cher ( et avec des ressources disponibles gratuitement ) ne peut pas se planter.

    Et cette définition colle assez bien à .NET.

  2. #82
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Un pt de vue technique, de la part d'un puriste :

    * C# n'est pas un langage 100% objet. Il y manque une composante indispensable, qui fait facilement 50% de la puissance de l'objet c'est L'Héritage Multiple. Ceux qui répondront "les interfaces ça fait la même chose" ont bien appris leur leçon, mais ils ne savent pas de quoi ils parlent.

    * Dans la même veine : le framework .Net a des classes 'sealed' et 'internal', qui sont des notions complètement anti-objet. Pourquoi cacher des choses alors que le principe même de l'objet est la composition par héritage ? Sans doute à cause de vieux réflexes procéduraux, ou pour cacher des API instables.

    * Le Framework est tout plat !! 90% des objets dérive de 'Object', ce qui est complètement idiot. Tellement d'objets ont de points communs, il aurait fallu une structuration beaucoup plus hiérarchique et une réflexion globale, et pas une bête traduction des WinAPI sous une couche pseudo-objet.

    * On ne peut pas hériter des Value-Type. J'aurait bien aimé pouvoir créer une classe "string-de-10-caractères", mais c'est pas possible. "C'est pour des questions de sécurité" : non. C'est parce que les API derrières sont bancales, ou paske le code de .Net est mal foutu.

    Je sais parfaitement que ces limitations ont été mises en places dans le but de simplifier la programmation de projet de grosse envergure pour ceux qui n'ont pas une formation poussée de développeur. C'est dommage, quand on sait ce qu'on pourrait faire...

    Voilà tout le mal que je pense de .Net. Ceci dit, je ne suis pas un anti : j'en fais depuis 3 ans, environ 10h par jour, et maintenant en tant qu'indépendant (donc par choix). A mon goût, ça reste le plus efficace des langage pour coder rapidement.

    Maintenant si on me demande "que sera l'avenir" ? je répond : pas le C#. Microsoft est une entreprise de business, pas une entreprise de technologie, et j'espère bien qu'une de ces dernières auront la possibilité de faire un vrai langage un de ces jours (aussi puissant et complet que C++, aussi lisible et haut niveau que C# ?).

  3. #83
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Je sais parfaitement que ces limitations ont été mises en places dans le but de simplifier la programmation de projet de grosse envergure pour ceux qui n'ont pas une formation poussée de développeur. C'est dommage, quand on sait ce qu'on pourrait faire...
    Au fait y'a t'il vraiement des projets de grosse envergure developpés avec .net ?

    Qqn aurait a t'il participé a ce type de projets et et pourrat t'il nous faire partager son experience de developpement ?

    Je suis curieux de connaitre les reponses, car je ne suis vraiement pas certain que des "gros" projets .net ( + qq millier de classes, differents connecteurs de services, ... ) existent aujourd'hui.

  4. #84
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par vosaray
    Je sais parfaitement que ces limitations ont été mises en places dans le but de simplifier la programmation de projet de grosse envergure pour ceux qui n'ont pas une formation poussée de développeur. C'est dommage, quand on sait ce qu'on pourrait faire...
    Au fait y'a t'il vraiement des projets de grosse envergure developpés avec .net ?

    Qqn aurait a t'il participé a ce type de projets et et pourrat t'il nous faire partager son experience de developpement ?

    Je suis curieux de connaitre les reponses, car je ne suis vraiement pas certain que des "gros" projets .net ( + qq millier de classes, differents connecteurs de services, ... ) existent aujourd'hui.
    MediaPortal, logiciel Media Center, est un gros projet dévellopé en .net.
    Je n'ai pas programmé pour MediaPortal, mais ce logiciel open-source est en constante évolution depuis 1an et demi, et c'est un énorme projet. Je sais qu'ils ont eu souvent des déboires de code, mais je sais pas si ça aurai été pareil ou pas avec une autre technologie. Le résultat aujourd'hui est plutôt beau! Même si ça ne reste toujours qu'une version bêta...

  5. #85
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Mose
    * C# n'est pas un langage 100% objet. Il y manque une composante indispensable, qui fait facilement 50% de la puissance de l'objet c'est L'Héritage Multiple. Ceux qui répondront "les interfaces ça fait la même chose" ont bien appris leur leçon, mais ils ne savent pas de quoi ils parlent.
    On ne va pas refaire un débat qui a déjà eu lieu 100 fois. Si C# ne supporte pas l'héritage multiple il y a une bonne raison. A chaque fois que le débat a lieu, on ne trouve qu'un ou deux intégristes pour nous dire que c'est une fonctionnalité indispensable, mais je n'ai jamais vu quelqu'un faire une démonstration claire de la suprême utilité de cette fonctionnalité. Par contre, la preuve de sa relative inutilité à déjà été faite maintes fois.

    Citation Envoyé par Mose
    * Dans la même veine : le framework .Net a des classes 'sealed' et 'internal', qui sont des notions complètement anti-objet. Pourquoi cacher des choses alors que le principe même de l'objet est la composition par héritage ? Sans doute à cause de vieux réflexes procéduraux, ou pour cacher des API instables.
    N'importe quoi ! Le raisonnement derrière cette affirmation est tellement obscur que j'ai de la peine à trouver quelque chose à répondre.

    A la limite, je veux bien admettre que "sealed" bloque un peu le paradigme de l'héritage, mais quand tu connais le coût d'un appel à une classe virtuelle et les gains de perfs possibles en permettant au compilateur d'"inliner", c'est pas plus mal que cela existe.

    Mais alors dire que "internal" c'est "anti-objet"...il faut que tu m'expliques là. Tu voudrais pas supprimer "private" aussi non ?

    Citation Envoyé par Mose
    * Le Framework est tout plat !! 90% des objets dérive de 'Object', ce qui est complètement idiot. Tellement d'objets ont de points communs, il aurait fallu une structuration beaucoup plus hiérarchique et une réflexion globale, et pas une bête traduction des WinAPI sous une couche pseudo-objet.
    Tout le monde sait qu'une hiérarchie d'objets à 13 niveaux c'est le top du top de l'architecture...Continue comme ça, c'est bien.

    Citation Envoyé par Mose
    Je sais parfaitement que ces limitations ont été mises en places dans le but de simplifier la programmation de projet de grosse envergure pour ceux qui n'ont pas une formation poussée de développeur.
    Tu ne serais pas "deux fois certifié Java" par hasard ? Ce genre de remarques me fait furieusement penser à quelqu'un...

  6. #86
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par Keihilin
    ... Si C# ne supporte pas l'héritage multiple il y a une bonne raison... mais je n'ai jamais vu quelqu'un faire une démonstration claire de la suprême utilité de cette fonctionnalité. Par contre, la preuve de sa relative inutilité à déjà été faite maintes fois.
    Facile.
    - Je fais une appli winform qui utilise des controles. Mais les controles de base me suffisent pas, je veux les étendre.
    - Dans tous mes controls j'utilise un objet 'context', qui contient un jeu d'icones et de Font, pour modifier l'interface au runtime + une dizaine de méthodes partagées par tous les objets 'WithContext'.
    - Avec l'héritage multiple, je fais un objet 'ObjetWithContext', et j'en fais hériter chaque control pour en faire sa version 'WithContext'. Je fais un override si besoin pour adapter les méthodes, et basta.
    - Avec les interfaces, je suis obligé de recoder mon champs 'Context' et mes 10 fonctionnalités à chaque control (Copier/coller... beeeeeurk).
    Gain de temps : colossal. Et je te parle même pas du jour où les specs change (ex: maintenant on n'utilise plus du tout le context). L'héritage c'est quand même plus propre que le refactoring.

    Citation Envoyé par Keihilin
    A la limite, je veux bien admettre que "sealed" bloque un peu le paradigme de l'héritage, mais quand tu connais le coût d'un appel à une classe virtuelle et les gains de perfs possibles en permettant au compilateur d'"inliner", c'est pas plus mal que cela existe.
    Non, mais je suis curieux. Tu as des chiffres ?
    Pour aller dans ton sens : c'est vrai que les outils puissant en développement ont un coût. Maintenant si les perfs sont ta priorité, remet-toi à l'assembleur : y'a pas mieux !

    Citation Envoyé par Keihilin
    Mais alors dire que "internal" c'est "anti-objet"...il faut que tu m'expliques là. Tu voudrais pas supprimer "private" aussi non ?
    Rien à voir. D'ailleurs pourquoi le mot 'internal' a été inventé, alors que 'private' suffit dans la plupart des cas ?
    Ce que je reproche à 'internal', c'est d'ajouter une dimension 'physique' (les DLL) dans un univers conceptuel (le code).
    Je ne râle pas pour le principe, mais parce que ça m'a déjà cassé les noisettes une paire de fois.

    Citation Envoyé par Keihilin
    Tout le monde sait qu'une hiérarchie d'objets à 13 niveaux c'est le top du top de l'architecture...Continue comme ça, c'est bien.
    C'est vrai ça. D'ailleurs pourquoi on a inventé l'héritage ? C'est cause d'erreur ! Et d'ailleurs pourquoi dans une entreprise tout le monde ne dépend pas directement du patron ?

    Citation Envoyé par Keihilin
    Tu ne serais pas "deux fois certifié Java" par hasard ? Ce genre de remarques me fait furieusement penser à quelqu'un...
    Perdu. Je n'ai jamais fais de Java. J'ai toujours bossé avec .Net, pour et avec Microsoft. Si ne ne défend pas mon beefsteak c'est paske je suis plus un techi qu'un homme d'affaire.

  7. #87
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Mose
    - Je fais une appli winform qui utilise des controles. Mais les controles de base me suffisent pas, je veux les étendre.

    - Avec les interfaces, je suis obligé de recoder mon champs 'Context' et mes 10 fonctionnalités à chaque control (Copier/coller... beeeeeurk).
    Gain de temps : colossal. Et je te parle même pas du jour où les specs change (ex: maintenant on n'utilise plus du tout le context).
    Voui voui voui. Et avec la composition c'est pas possible de faire ça ? Bien sûr que si; et sans forcément se taper 1'000 lignes de code supplémentaires.

    Citation Envoyé par Mose
    Non, mais je suis curieux. Tu as des chiffres ?
    Pour aller dans ton sens : c'est vrai que les outils puissant en développement ont un coût. Maintenant si les perfs sont ta priorité, remet-toi à l'assembleur : y'a pas mieux !
    Ben si tu veux des chiffres, tu les cherches sur Google. 3 ans de Dotnet et ne pas connaître l'incidence de l'inlining, c'est étrange.
    Et puis je ne vois pas en quoi le fait de travailler avec un outil "puissant" devrait empêcher de penser aux performances.

    Citation Envoyé par Mose
    D'ailleurs pourquoi le mot 'internal' a été inventé, alors que 'private' suffit dans la plupart des cas ?
    Parce que il y a un manque évident entre "private" et "public". Une assembly c'est aussi conceptuel que du code...et des cas ou l'on veut partager quelque chose à l'intérieur d'une assembly (disons d' un composant si cela te parles plus) sans pour autant rompre l'encapsulation, il y en a des tas.

    Citation Envoyé par Mose
    C'est vrai ça. D'ailleurs pourquoi on a inventé l'héritage ? C'est cause d'erreur ! Et d'ailleurs pourquoi dans une entreprise tout le monde ne dépend pas directement du patron ?
    Superbe exemple. Navré de te dire ça, mais ne jurer que par l'héritage d'implémentation (multiple si tu pouvais) ça ne démontre qu'une chose : ton côté "techni", tu devrais un peu plus le cultiver...Ca te rendrait un peu plus agnostique...

    L'héritage d'implémentation ne définit pas à lui tout seul la POO. D'autre part, il peut facilement conduire à des abhérations sémantiques ou à des couplages forts gênants la maintenance.

  8. #88
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Keihilin
    Tu ne serais pas "deux fois certifié Java" par hasard ? Ce genre de remarques me fait furieusement penser à quelqu'un...
    Par contre toi tu m'as l'air d'être carrément anti-java si j'en juge par cette citation et ta signature.

  9. #89
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Descent
    Citation Envoyé par Keihilin
    Tu ne serais pas "deux fois certifié Java" par hasard ? Ce genre de remarques me fait furieusement penser à quelqu'un...
    Par contre toi tu m'as l'air d'être carrément anti-java si j'en juge par cette citation et ta signature.
    Non non, pas plus que ça. Faut prendre ma signature au second degré...

  10. #90
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Keihilin
    On ne va pas refaire un débat qui a déjà eu lieu 100 fois. Si C# ne supporte pas l'héritage multiple il y a une bonne raison. A chaque fois que le débat a lieu, on ne trouve qu'un ou deux intégristes pour nous dire que c'est une fonctionnalité indispensable, mais je n'ai jamais vu quelqu'un faire une démonstration claire de la suprême utilité de cette fonctionnalité.
    Je ne sais pas si ma démonstration sera claire ou suprême, mais voici mon avis. Pour supporter la programmation par contrat, il faut, dans une version simplifiée, que les fonctions virtuelles des classes dérivées ne cassent pas le contrat établi par les classes de base.

    Si l'on veut vérifier ça dans le code et dans un langage où de telles fonctions ne sont pas codées en dur, le plus classique est de définir en public des fonctions non virtuelles (donc non modifiables) qui vont vérifier les précondition, appeler la fonction virtuelle privée (pour qu'on ne puisse pas l'appeler sans la vérification de contrat), puis vérifier les post-conditions.

    Ce type de méthode demande donc la possibilité de mettre du code d'instrumentation au niveau de l'interface, et non seulement au niveau des classes dérivées.

    Les raisons que je vois pour ne pas permettre l'héritage multiple sont que c'est compliqué pour la personne écrivant le compilateur, et éventuellement pour l'apprentit développeur (s'il y a en d'autres, merci de me donner une url).

    Ce qui est amusant, c'est que pour l'utilisation à laquelle je tiens assez, ce n'est plus compliqué du tout : Quand on ne peut définir que des fonctions non virtuelles dans la classe de base, il n'y a plus de problèmes d'implémentation (héritage en diamant...).

  11. #91
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Keihilin
    mais je n'ai jamais vu quelqu'un faire une démonstration claire de la suprême utilité de cette fonctionnalité. Par contre, la preuve de sa relative inutilité à déjà été faite maintes fois.
    D'autant qu'avec la composition on se débrouille très bien pour les cas où un héritage multiple aurait pu servir.
    J'ai rien contre avoir un langage qui gère ça, pour peu que ce soit bien géré, notamment le cas habituel du conflit qui arrive forcément un jour ou l'autre. Et les langages qui gèrent ce cas-là correctement... à part Eiffel, y a quoi ? :)

    Citation Envoyé par Keihilin
    A la limite, je veux bien admettre que "sealed" bloque un peu le paradigme de l'héritage, mais quand tu connais le coût d'un appel à une classe virtuelle et les gains de perfs possibles en permettant au compilateur d'"inliner", c'est pas plus mal que cela existe.
    Même pas besoin de parler de perfs.
    Si une classe n'est pas faite pour être dérivée (et le principe de la POO n'est pas que tout soit dérivable), on l'indique clairement. D'où l'intérêt de sealed. Avec ça, pas de doute possible.

    C'est aussi l'intérêt de devoir choisir quelles sont les méthodes virtuelles plutôt que de tout avoir par défaut (oui, c'est le cas en Java, et je suis loin d'être sûr que ce soit un bon point de ce langage :)

    Citation Envoyé par Mose
    Je sais parfaitement que ces limitations ont été mises en places dans le but de simplifier la programmation de projet de grosse envergure pour ceux qui n'ont pas une formation poussée de développeur.
    Mmh nan, ça c'est surtout la raison d'être des divers assistants à deux balles qui génèrent/poussent à faire du code particulièrement abominable.

    Citation Envoyé par Mose
    Ce que je reproche à 'internal', c'est d'ajouter une dimension 'physique' (les DLL) dans un univers conceptuel (le code).
    D'où l'intérêt d'organiser ses assemblages à un niveau conceptuel aussi. C'est sûr que si tu organises ça n'importe comment, l'intérêt devient tout de suite plus flou.

    Citation Envoyé par Mose
    D'ailleurs pourquoi on a inventé l'héritage ? C'est cause d'erreur !
    Ah, j'aurais cru que c'était pour le polymorphisme :)

    Citation Envoyé par Mose
    Et d'ailleurs pourquoi dans une entreprise tout le monde ne dépend pas directement du patron ?
    Parce que tout le monde n'est pas un patron.

  12. #92
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par JolyLoic
    Ce qui est amusant, c'est que pour l'utilisation à laquelle je tiens assez, ce n'est plus compliqué du tout : Quand on ne peut définir que des fonctions non virtuelles dans la classe de base, il n'y a plus de problèmes d'implémentation (héritage en diamant...).
    Il y a toujours un problème si deux des classes dont on hérite ont des méthodes avec signatures identiques. Même si elles ne sont pas virtuelles, elles sont quand même accessibles, donc conflit pour savoir laquelle prendre :)

    Cela dit la discussion est un peu hors sujet. C# ne fait pas de programmation par contrat, si ça finissait par le faire, ce serait de toute évidence via les attributs, et Aspect# n'est pas encore intégré :)

  13. #93
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par jazz matazz
    MediaPortal, logiciel Media Center, est un gros projet dévellopé en .net.
    Je n'ai pas programmé pour MediaPortal, mais ce logiciel open-source est en constante évolution depuis 1an et demi, et c'est un énorme projet. Je sais qu'ils ont eu souvent des déboires de code, mais je sais pas si ça aurai été pareil ou pas avec une autre technologie. Le résultat aujourd'hui est plutôt beau! Même si ça ne reste toujours qu'une version bêta...
    Merci pour l'info, j'ai tenté de verifier ca, mais curieusement, sur leur site on ne peut pas telecharger le source alors qu'ils se reclament open source et que le soft est sous GPL .

    Difficile d'evaluer la taille du source et la complexité de la solution dans ces conditions...

  14. #94
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    aaaaaaah j'ai oublié un truc auquel je voulais absolument répondre :)

    Citation Envoyé par Mose
    L'héritage c'est quand même plus propre que le refactoring.
    Sur quelle planète, ou plutôt dans quel univers, est-ce que l'héritage et le refactoring ont ne serait-ce qu'un rapport vaguement éloigné qui permettrait de les comparer ? :)

    C'est là qu'on se demande si tu sais de quoi tu parles. Dans le cas du refactoring, clairement, non.

  15. #95
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Maniak
    aaaaaaah j'ai oublié un truc auquel je voulais absolument répondre

    Citation Envoyé par Mose
    L'héritage c'est quand même plus propre que le refactoring.
    Sur quelle planète, ou plutôt dans quel univers, est-ce que l'héritage et le refactoring ont ne serait-ce qu'un rapport vaguement éloigné qui permettrait de les comparer ?

    C'est là qu'on se demande si tu sais de quoi tu parles. Dans le cas du refactoring, clairement, non.
    Entierement d'accord: l'héritage et le refactoring sont 2 notions complétement différentes qui n'ont rien à voir l'une avec l'autre

  16. #96
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par vosaray
    Merci pour l'info, j'ai tenté de verifier ca, mais curieusement, sur leur site on ne peut pas telecharger le source alors qu'ils se reclament open source et que le soft est sous GPL :?
    Euh, les projets open source fonctionnent quasiment tous à partir d'un repo CVS ou SVN. Un peu comme là quoi : http://cvs.sourceforge.net/viewcvs.py/mediaportal/

  17. #97
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    * Pour répondre à Keihilin :
    - Désolé, le ton de mes mails (après relecture) était un peu sec, je l'avoue (limite fasciste). Ca c'est pour la forme.
    - Sur le fond, je maintiens tout ce que j'ai dit et je pourrais discuter longuement avec toi de chacun de ces points. Visiblement, nous ne conceptualisons pas les choses de la même façon. Je ne prétend pas que le mien est "mieux" (ça veut rien dire), mais il s'appuie sans doute plus sur la théorie informatique pure, ce en quoi je lui voit plus d'avenir (c'était le sujet du post). Je te propose qu'on continue à en discuter en privé.
    - Une petite note en passant : j'ai vu ton site sur lequel le mec prétend démontrer que l'héritage c'est pourri, et je répondrai que oui, on peut tout démontrer à partir d'un mauvais exemple. (Mais là j'ai vraiment pas envie de me battre pour des conneries)

    * Pour répondre à Maniak sur le lien entre l'héritage et le refactoring :
    - Le refactoring c'est l'automatisation de la modification de code.
    - L'héritage entre autre utilités, permet découper une implémentation en fragments qui permettent une souplesse au code. (notamment quand il faut faire des modif).
    Maintenant, tu pourras toujours argumenter que ça n'a rien à voir. Dans la pratique avec un modèle objet souple, t'as quasiment jamais besoin de refactoring. (Ca va encore faire 10 tonnes de blablabla, pask'on n'a pas la même notion de ce qu'est un modèle objet souple... pffff...)

    Bref, avant que vous ne vous déchainiez à nouveau sur vos clavier pour critiquer quelqu'un qui pense différemment, je précise qu'il y a plusieurs écoles, que vous ne me convaincrez pas comme je ne vous convaincrez pas, et que ça sert à rien de perdre du temps à se cracher dessus par forums interposés. L'avenir répondra à tout ça.

    ---- L'absolu c'est ce qu'on crois être absolu ---

  18. #98
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Mose
    - Désolé, le ton de mes mails (après relecture) était un peu sec, je l'avoue (limite fasciste).
    Content que tu t'en sois rendu compte...Oublions donc ça.

    Citation Envoyé par Mose
    - Une petite note en passant : j'ai vu ton site sur lequel le mec prétend démontrer que l'héritage c'est pourri
    Non, le sujet de l'article n'est pas "l'héritage c'est pourri"...
    L'héritage d'implémentation est bien entendu une technique qui répond à un certain nombre de problèmes, mais elle comporte également des pièges qui donne lieu à des architectures moyennement bonnes si l'on ne fait pas attention. Je crois que l'auteur de l'article reste très objectif dans ses exemples; le message n'étant pas : "il faut éviter l'héritage", mais plutôt : "connaissez ses faiblesses et les alternatives".

    Citation Envoyé par Mose
    Bref, avant que vous ne vous déchainiez à nouveau sur vos clavier pour critiquer quelqu'un qui pense différemment, je précise qu'il y a plusieurs écoles, que vous ne me convaincrez pas.
    Je ne te reproches pas de ne pas penser la même chose que moi. Je te reprochais le ton "intégriste qui ne se prend pas pour une merde" de ton premier message. Ok, je ne pourrais pas te convaincre, mais demande-toi quand même pourquoi Gosling, Box ou Fowler ne partagent pas ton point de vue...

  19. #99
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par grigann
    Citation Envoyé par vosaray
    Merci pour l'info, j'ai tenté de verifier ca, mais curieusement, sur leur site on ne peut pas telecharger le source alors qu'ils se reclament open source et que le soft est sous GPL
    Euh, les projets open source fonctionnent quasiment tous à partir d'un repo CVS ou SVN. Un peu comme là quoi : http://cvs.sourceforge.net/viewcvs.py/mediaportal/
    Oui sauf que la il n'y a pas un seul fichier source, et que la plupart des fichiers ont une revision de 1.1 ( soit initiale ).

    Bon j'avoue que j'ai browsé toute l'arbo ( mais un peu tout de meme ) et mis a part des dll, qq fichiers xml et un tas de sources d'icones ( .psd photoshop ) y'a pas un bout de .net sur le serveur.

    Par ailleurs, ce fameux soft ne semble pas fonctionner correctement ( essayé sur 2 PC differents, avec des configs ultra standard ( i.e une nvidia video et une Pinnacle TV ), ca donne que dalle ....

    Pour conclure je pense que c'est pas un exemple terrible.

    Et comme personne ne releve le défi, j'en conclu que des "gros projets" , "qui marchent" , en .net, faudra attendre longtemps pour voir ...

    A mon avis toute discussion sur l'avenir d'une techno, sans analyser un cas pratique en detail, et sans argumenter vis a vis de la solution implementée, reste sterile et inutile. ( un peu comme .net pour moi )

  20. #100
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Mose
    - Le refactoring c'est l'automatisation de la modification de code.
    Hum... non ? :)

    Indice : http://www.refactoring.com/
    C'est le premier paragraphe.
    Ah aussi, achète le bouquin.

    Et donc non, ce dont tu parles n'a rien à voir avec le refactoring.

    Citation Envoyé par Mose
    - L'héritage entre autre utilités, permet découper une implémentation en fragments qui permettent une souplesse au code. (notamment quand il faut faire des modif).
    Hum... non ? :)

    Ça ne découpe rien, ça *regroupe* un traitement commun entre classes qui partagent un même 'concept'.
    (et d'ailleurs ça peut rendre le code sacrément rigide si c'est mal pensé :)

    Pour découper une implémentation en fragments, c'est la composition. Et là encore, c'est pas vraiment un découpage, mais une meilleure répartition des responsabilités.
    Cf http://c2.com/cgi/wiki?search=inheritance pour plein de discussions sur l'héritage, dont l'héritage multiple d'ailleurs.

    Citation Envoyé par Mose
    Maintenant, tu pourras toujours argumenter que ça n'a rien à voir.
    À ce niveau-là je n'argumente pas, j'affirme (et pourtant je fais mon possible pour éviter ça en général :). Mais c'est uniquement parce que ta définition du refactoring est complètement à côté de la plaque :)

    Citation Envoyé par Mose
    Dans la pratique avec un modèle objet souple, t'as quasiment jamais besoin de refactoring.
    Non vraiment, il faut que tu trouves le bon terme à utiliser pour ce dont tu parles, parce que là ça ne va pas :)
    Le refactoring est là pour améliorer le design sans changer son comportement. Justement pour arriver au design le plus souple possible.
    Si tu arrives à ça sans refactoring, faut donner la recette hein, tu deviendras rapidement riche et célèbre pour avoir donné tort à un paquet de gens aussi connus qu'ils sont bons (à savoir très :)

    Citation Envoyé par Mose
    (Ca va encore faire 10 tonnes de blablabla, pask'on n'a pas la même notion de ce qu'est un modèle objet souple... pffff...)
    Loin de là. Ça tient en un lien :
    http://www.domaindrivendesign.org/book/index.html
    Colonne de gauche, lien "Download the DDD Pattern Summaries.". Prends ça et va voir "Part III - Supple Design"
    Ah aussi, achète le bouquin.

    Citation Envoyé par Mose
    Bref, avant que vous ne vous déchainiez à nouveau sur vos clavier pour critiquer quelqu'un qui pense différemment, je précise qu'il y a plusieurs écoles, que vous ne me convaincrez pas comme je ne vous convaincrez pas, et que ça sert à rien de perdre du temps à se cracher dessus par forums interposés. L'avenir répondra à tout ça.
    Fowler, Evans, Cunningham et tous ces gens bien travaillent justement à organiser cet avenir (sachant que leur présent est déjà un lointain avenir pour un paquet de gens).
    Ils établissent un vocabulaire pour que les dévs puissent parler la même langue, essayent d'unifier les diverses communautés de dévs autour des mêmes notions, et globalement font de leur mieux pour que le boulot de tout le monde soit à la fois plus simple, plus agréable et plus efficace.

    Maintenant à toi de voir si tu veux rester braqué sur ce que tu crois savoir (genre la définition du refactoring :) en refusant d'admettre que d'autres pourraient en savoir davantage, soit tu te rends compte que le développement, c'est plus grand que toi, et tu accordes un peu plus de valeur à ceux qui maîtrisent *vraiment* ce dont ils parlent.

    Pas moi hein, Fowler & co :)
    Moi je suis justement passé par de nombreuses séances de remise en question de ce que je croyais savoir, après avoir découvert ce qu'il en était réellement. Mais pour se remettre en question, il faut d'abord savoir admettre que beaucoup de choses qu'on croit au départ sont des conneries.

    (et c'est particulièrement valable pour ceux qui sortent de fac ou autres écoles :)

    À toi de me dire si tu considères que ta définition du refactoring est plus ou moins correcte que celle de Fowler. Pas de la mienne, je n'en ai pas. Fowler l'a popularisé, je m'en remets à la sienne. Il arrive un moment où il faut arrêter de vouloir tout faire à sa sauce, et commencer à travailler avec les autres.

Discussions similaires

  1. Quel avenir pour .NET dans Windows 8 ?
    Par Hinault Romaric dans le forum Général Dotnet
    Réponses: 133
    Dernier message: 06/10/2013, 09h40
  2. Quel avenir pour VB.NET?
    Par tssi555 dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 14/11/2010, 15h38
  3. Réponses: 4
    Dernier message: 17/09/2008, 11h03
  4. Quel avenir pour les informaticiens ?
    Par ghita269 dans le forum Emploi
    Réponses: 25
    Dernier message: 09/12/2005, 09h21
  5. Quel avenir pour les outils de génération de code ?
    Par Bruno75 dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 05/11/2003, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo