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

C++ Discussion :

Variable et Attribut, Fonction et méthode


Sujet :

C++

  1. #21
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Pas de tout tu fais fausse route, j'étais juste là pour demander justement parce qu'au final il y'a tellement de monde qui dit que ça n'a rien à voir que je commençais à avoir des doutes. Je m'en moque du vocabulaire du moment qu'on se comprends quand on parle techniquement.

  2. #22
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Alors parce que d'autres gens n'ont pas l'air d'utiliser le même vocabulaire que toi, tu nous demande notre avis?
    Pourquoi ne pas simplement prendre le temps de définir le vocabulaire avec eux.

  3. #23
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 338
    Par défaut
    @LuNaTiC93, pour faire simple, toutes tes remarques autres que sur l'ambiguïté du vocabulaire sont des assertions et elles sont complètement fausses.

    La taille d'un int, c'est pas 4.
    Prends ce code et compile en 64 bits ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
    	int toto;
     
    	std::cout<< sizeof(toto);
    }
    Une fonction membre/ méthode membre, ça n'a pas grand-chose de commun avec une fonction libre car les conventions d'appels (donc les "arguments" disponibles) et la résolution de nom n'ont absolument rien de commun.
    (Et une fonction membre virtuelle et une fonction membre non-virtuelle ont encore plus de différence entre elles qu'une fonction membre non-virtuelle et une fonction libre)
    Si ton interlocuteur, ton prof. je te le rappelle, fait la distinction, c'est que pour lui, c'est des différence qui ont de l'importance dans la suite de ces explications/enseignements.
    Si tu ne vois pas les différences, admets que tu les ignorent et demandes à ton interlocuteur quelles différences tu dois connaitre pour que les informations qu'il doit te transmette soit correctement assimilées.

  4. #24
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Citation Envoyé par ternel Voir le message
    Alors parce que d'autres gens n'ont pas l'air d'utiliser le même vocabulaire que toi, tu nous demande notre avis?
    Pourquoi ne pas simplement prendre le temps de définir le vocabulaire avec eux.
    Relis ce que j'ai du tout à l'heure, qu'ils n'utilisent pas le même vocabulaire je m'en contre fou, mais quand on leur demande une explication eux même ne sont pas capable d'en fournir une pour définir la différence.

    Je demandais un avis et alors ? Ce n'est pas un forum ici ? On est pas là pour échanger ou partager nos connaissances ? La réaction de la plupart des membres ici est typiquement française, prendre de haut et péter plus haut que son cul, pour avoir passé 7 ans sur des forums ricains la mentalité est tout autre.

  5. #25
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Citation Envoyé par bacelar Voir le message
    @LuNaTiC93, pour faire simple, toutes tes remarques autres que sur l'ambiguïté du vocabulaire sont des assertions et elles sont complètement fausses.

    La taille d'un int, c'est pas 4.
    Prends ce code et compile en 64 bits ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
    	int toto;
     
    	std::cout<< sizeof(toto);
    }
    Une fonction membre/ méthode membre, ça n'a pas grand-chose de commun avec une fonction libre car les conventions d'appels (donc les "arguments" disponibles) et la résolution de nom n'ont absolument rien de commun.
    (Et une fonction membre virtuelle et une fonction membre non-virtuelle ont encore plus de différence entre elles qu'une fonction membre non-virtuelle et une fonction libre)
    Si ton interlocuteur, ton prof. je te le rappelle, fait la distinction, c'est que pour lui, c'est des différence qui ont de l'importance dans la suite de ces explications/enseignements.
    Si tu ne vois pas les différences, admets que tu les ignorent et demandes à ton interlocuteur quelles différences tu dois connaitre pour que les informations qu'il doit te transmette soit correctement assimilées.
    Enfin quelque chose de constructif de ta part c'est fort étonnant. Si tu n'as toujours pas compris que mon exemple pour l'allocation mémoire pour un entier était là pour appuyer mes arguments

    J'ai rarement vu ça dans ma vie, je suis là pour demander les différences si il y'en a et mise à part la réponse de Luc qui était constructive je ne vois que de l'agressivité et de la vantardise de la part de membres qui ont plus de 40 ans et des années d'expérience derrière eux.

    Un forum c'est fait pour échanger et non pour prendre de haut les gens qui posent des questions même si tu peux trouver ma question inutile au final aucun membre jusqu'ici ne s'accorde pour définir la différence entre une "méthode" ou une "fonction".

    N'oubli pas que toi comme moi nous n'avons rien inventé, je suis là pour apprendre et comprendre toutes les compléxités du C++ et c'est normal de poser une question quand on a un doute sur quelque chose non ?

  6. #26
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 338
    Par défaut
    Apprends-nous à être de bon gros ricains, élevés aux grains, mais on t'a déjà donné des arguments contre tes assertions, mais tu ne t'attaques qu'à la forme.
    Donc, non, un int n'a pas 4 de longueur, il a même très souvent 8 comme longueur quand on compile en 64 bits.
    Et les mécanismes d'appel d'une fonction membre non-statique ajoutent un argument "this", et la résolution des noms de variables prend en compte prioritairement les champs de la classe (après les variables locales), qui fait que le code d'une fonction libre et d'une fonction membre non-statique sont assez/très différents.

    Beaucoup des personnes que tu rambardes travaillent ou ont travaillés hors de l'hexagone, et fréquentent assidument les forums anglophones (et pas que) alors arrêtes de nous prendre pour des jambons.

    Si tu insistes sur la forme et le vocabulaire, je te considèrerais comme un troll et je demanderais à ne pas te nourrir.

    Il n'y pas pire aveugle que celui qui ne veut pas voir.

  7. #27
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Les forums anglohones ont une autre mentalité que ça te plaise ou non mon gars. A part répéter qu'un int fait 64 bits quand on compile en 64bits tu n'as donné aucun argument, tu as juste été agressif depuis le début. Contrairement à toi je ne rambarde personne, je suis juste là pour discuter tranquillement, me dire ça c'est l'hôpital qui se fout de la charité.

    Le sujet est passé en "résolu", ce n'est plus la peine de me répondre, je sais que tu aimes bien péter plus haut que ton cul et prendre les gens de haut mais ça n'est pas nécessaire.

    Et avant de faire des citations philosophiques relis toi et fait attention à ton orthographe tu perds toute crédibilité

  8. #28
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    Citation Envoyé par bacelar Voir le message
    a-Une fonction membre/ méthode membre, ça n'a pas grand-chose de commun avec une fonction libre car les conventions d'appels (donc les "arguments" disponibles) et la résolution de nom n'ont absolument rien de commun.

    b- Si ton interlocuteur, ton prof. je te le rappelle, fait la distinction, c'est que pour lui, c'est des différence qui ont de l'importance dans la suite de ces explications/enseignements.
    Si tu ne vois pas les différences, admets que tu les ignorent et demandes à ton interlocuteur quelles différences tu dois connaitre pour que les informations qu'il doit te transmette soit correctement assimilées.
    a- Je ne suis pas trop d'accord là dessus.
    Membre et libre avec un argument, c'est pour moi exactement la même chose sur les plans techniques (assembleur) et conceptuel (kick(dog) et dog.kick() c'est pareil, ce n'est que de la syntaxe; c'est bien pour ça que j'ai montré la syntaxe de CLOS). Les papiers sur l'UCS ne font que me confirmer cette vision.
    OK, il va y avoir en C++ des différences dans les résolutions d'appels. Et c'est ce qui a posé problèmes pour l'acceptation de l'UCS. Les différences sont encore plus subtiles quand on introduit l'amitié: le libre se rapproche encore plus du membre.

    Dans tous les cas, cela ne mérite pas que l'on se prenne le choux sur ce sujet.

    b- hum... Étant de plus en plus dubitatif quant à la compréhension et l'enseignement de l'objet... disons que je vais me garder de critiquer.
    Si par contre le prof parle de messages et que les méthodes sont le moyen technique pour mettre en œuvre les messages... là on commence à introduire des différences subtiles qui ne sont pas vides de sens. Mais ce n'est pas forcément facile à expliquer vu que le côté pratique finit toujours par prendre le dessus sur le côté théorique dans les langages que l'on manipule et qui ne sont pas orientés messages.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #29
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 338
    Par défaut
    a-Une fonction membre/ méthode membre, ça n'a pas grand-chose de commun avec une fonction libre car les conventions d'appels (donc les "arguments" disponibles) et la résolution de nom n'ont absolument rien de commun.
    Citation Envoyé par Luc Hermitte Voir le message
    a- Je ne suis pas trop d'accord là dessus.
    Membre et libre avec un argument, c'est pour moi exactement la même chose sur les plans techniques (assembleur) et conceptuel (kick(dog) et dog.kick() c'est pareil, ce n'est que de la syntaxe; c'est bien pour ça que j'ai montré la syntaxe de CLOS). Les papiers sur l'UCS ne font que me confirmer cette vision.
    OK, il va y avoir en C++ des différences dans les résolutions d'appels. Et c'est ce qui a posé problèmes pour l'acceptation de l'UCS. Les différences sont encore plus subtiles quand on introduit l'amitié: le libre se rapproche encore plus du membre.
    Je n'en disconviens pas, mais si l'interlocuteur doit enchainer sur les conventions d'appel de fonction __thiscall, __std ou _cdecl sur architecture x86, ne pas faire la différence entre ces "machins", ça va être compliqué.

    Citation Envoyé par Luc Hermitte Voir le message
    Dans tous les cas, cela ne mérite pas que l'on se prenne le choux sur ce sujet.
    T'as raison, qu'il reste dans sa bulle.

  10. #30
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    a- Je ne suis pas trop d'accord là dessus.
    Membre et libre avec un argument, c'est pour moi exactement la même chose sur les plans techniques (assembleur) et conceptuel (kick(dog) et dog.kick() c'est pareil, ce n'est que de la syntaxe; c'est bien pour ça que j'ai montré la syntaxe de CLOS). Les papiers sur l'UCS ne font que me confirmer cette vision.
    OK, il va y avoir en C++ des différences dans les résolutions d'appels. Et c'est ce qui a posé problèmes pour l'acceptation de l'UCS. Les différences sont encore plus subtiles quand on introduit l'amitié: le libre se rapproche encore plus du membre.

    Dans tous les cas, cela ne mérite pas que l'on se prenne le choux sur ce sujet.

    b- hum... Étant de plus en plus dubitatif quant à la compréhension et l'enseignement de l'objet... disons que je vais me garder de critiquer.
    Si par contre le prof parle de messages et que les méthodes sont le moyen technique pour mettre en œuvre les messages... là on commence à introduire des différences subtiles qui ne sont pas vides de sens. Mais ce n'est pas forcément facile à expliquer vu que le côté pratique finit toujours par prendre le dessus sur le côté théorique dans les langages que l'on manipule et qui ne sont pas orientés messages.
    Merci pour ces explications, ça me fait plaisir de voir quelqu'un qui prend le temps d'expliquer et surtout qui ne fait pas preuve d'agressivité.

  11. #31
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Bon, alors, pour être clair:

    Oui, un attribut est une variable et oui, une méthode est une fonction.

    Mais le fait est que, quand elle fait partie d'un "agglomérat" (comme cela, on reprend struct, class et même union), une variable ou une fonction a besoin de cet agglomérat, soit pour exister (quand elle n'est pas statique) soit pour être simplement reconnue comme telle par le compilateur (lorsqu'elle est statique).

    Les gens qui hurlent à la différence ont donc pris deux éléments en compte:
    1. une fonction ou une variable qui fait partie d'un agglomérat subit de grosses restrictions par rapport à une fonction ou à une variable qui n'en fait pas partie et
    2. il est donc "cohérent" de permettre de faire la distinction entre les deux, ce qui implique l'utilisation d'un terme différent

    Avec l'utilisation de termes différents ou spécifiques comme "donnée / fonction membre" ou comme "attribut / méthode", on se donne la possibilité d'éviter toute ambiguïté.

    Mais, du coup, on se rend compte que si tout attribut (variable /donnée membre) est une variable, et que toute méthode (fonction membre) est une fonction, l'inverse n'est pas forcément vrai, car une variable (sous entendu "variable locale") ou une fonction (sous entendu "fonction libre") n'est pas forcément soumise aux mêmes restrictions qu'un attribut ou qu'une méthode.

    Après, on peut ne pas partager leur avis, mais on est bien obligé d'admettre que leur logique est sans faille; aussi bien dans la décision de faire une distinction entre les différents termes que dans celle de faire respecter (et si possible comprendre) cette distinction.

    Pour le reste, j'ai envie de dire que ce n'est qu'une question de conventions et de "savoir vivre":

    Tu peux décider (ou non) de respecter les conventions, mais, si tu décides de ne pas les respecter, il ne faudra pas t'étonner si tu n'est pas toujours compris et, surtout,

    Quand tu décides de t'intégrer dans un groupe, si tu veux que l'intégration se passe bien, il est préférable d'en respecter les habitudes et les coutumes (à moins, bien sur, qu'elle ne choquent tes propres croyances ou ta propre sensibilité).

    Or, il se fait que, si beaucoup de développeurs ne se choqueront nullement de t'entendre parler de fonction lorsqu'il s'agit de fonction membre / méthode, ils peuvent facilement être choqués s'il t'entendent parler de méthode au sujet d'une "fonction libre".

    Tu peux, bien sur, être persuadé qu'ils ont tord, mais, à partir du moment où je ne vois pas en quoi cela pourrait choquer tes propres croyances ou ta propre sensibilité, le mieux que tu aies à faire est encore d'en prendre acte, et d'agir en conséquence. Ne crois tu pas
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #32
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par défaut
    Merci pour ton explication elle est au top. Comme tu l'as dit le fait de donner un nom différent aux fonctions membre et aux variables membre permet d'éviter toute ambiguité et ça me convient parfaitement, je n'étais pas là pour imposer une quelconque croyance bien au contraire j'étais là justement pour demander l'avis de développeurs expérimentés.

    Les quelques devs que j'ai vu IRL n'ont pas su m'expliquer la différence si ce n'est dire "c'est pas pareil c'est tout". Et il est évident que je m'adapte à mon interlocuteur quand je discute, ce qui m'a fait ouvrir ce topic était justement un interlocuteur qui lui n'a pas su s'adapter à mon vocabulaire et qui me disait que ça n'était pas pareil sans apporter de précision

    Merci pour ta réponse

  13. #33
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    Ce que j'ai lu entre les lignes, c'était limite le contraire d'ailleurs: des développeurs qui tenaient à dire que les méthodes ne sont pas des fonctions sans savoir expliquer pourquoi. Je me trompe?

    <Car si c'est bien le cas> Mais pourquoi diable tout ce bruit et débat depuis hier? Car pour le coup, les gars en face, c'est des boulets qui ont des classifications à l'ouest. Ils sont au niveau de dire que les manchots ne sont pas des oiseaux car ils n'ont pas la liberté de voler. Franchement?</>

    On passe à autre chose?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  14. #34
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Ce que j'ai lu entre les lignes, c'était limite le contraire d'ailleurs: des développeurs qui tenaient à dire que les méthodes ne sont pas des fonctions sans savoir expliquer pourquoi. Je me trompe?
    En gros, ce sont les agneaux de Panurge, qui ont accepté ce que les autres leur disaient sans se poser de question.

    L'un dans l'autre, je préfère l'approche de LuNaTiC93 qui en demande la raison afin d'au moins avoir une chance de la comprendre
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 20h05
  2. Réponses: 3
    Dernier message: 08/12/2005, 15h41
  3. retour de variable d'une fonction
    Par thunderblade dans le forum ASP
    Réponses: 4
    Dernier message: 28/04/2005, 14h27
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 14h45
  5. Réponses: 5
    Dernier message: 09/02/2005, 19h50

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