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

Langages de programmation Discussion :

Y a-t-il une raison pour laquelle les fonctions ne retournent qu'une seule valeur ?


Sujet :

Langages de programmation

  1. #81
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par anonyme Voir le message
    j'ai mis -1 à ceux qui ont mis -1 à plus de la moitié de mes posts de manière totalement injustifiable pour m'empecher de mettre un avatar "élevé au TO7-70"
    Désolé mais cela me semble au contraire justifiable.

    Tu as l'air d'être cultivé et intelligent alors sois un peu plus humble sur tes propos et comprends que les remarques faites peuvent avoir un fond de vérité avant de foncer dans la dénégation et le complot

    Pour ma part tu pars un peu trop dans des directions qui n'ont à faire avec le vrai sujet du topic. Le sujet aurait été tout autre que tu pourrais ressortir la même chose.

  2. #82
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Uther Voir le message
    C'est vrai que sur x86 c'est pas vraiment envisageable de passer les valeurs de retour sur la pile.
    Au contraire, c'est ce que font les compilateurs, pas le choix : c'est soit eax, ebx, ecx et edx (et leur équivalents 8, 16, 32, 64, 128... bits, x86 ou 68000 ou autre, c'est assez homogène selon des puces) soit la pile, ou les deux d'ailleurs, c'est le rôle de l'optimisation du compilateur, qui utilisera toujours eax comme valeur de retour (rapide, 1 cycle cpu) et la pile pour les paramètres (plus lente, plusieurs cycles cpu autant de fois que de valeurs de case mémoire à gérer). On peut bien sur utiliser directement la mémoire mais c'est encore plus lent.

    Ce que je voulais dire, c'est pourquoi les fonctions programmatives informatiques retournent une seule valeur, parce que EAX, parce que nombre de cycle cpu que cela consomme, soit 1 au lieu de x (selon l'architecture et le mode). Je me souviens plus et j'ai même pas envie de chercher, mais par exemple, faux exemple, pour l'idée, si retourner la valeur dans eax consomme 1 cycle cpu, utiliser la pile va en consommer 10 pour chaque valeur... donc avec ce faux exemple, void machin(out int truc) est 10 fois plus lent que int machin().

    Citation Envoyé par Uther Voir le message
    Ceci dit un langage étant avant tout là pour abstraire, je rejoint esperanto sur le fait que le but des langages de haut niveau est justement d'avoir une notation qui s'éloigne de l'assembleur et se rapproche des mathématiques.
    sur ! mais à la question du sujet du pourquoi, la raison est ce fait dû à la structure des cpu et même des fpu, c'est l'origine de tout en informatique, la pensée de l'homme selon les capacités des lois de l'univers et de la vie, qu'on les utilise bien ou mal.

  3. #83
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Désolé mais cela me semble au contraire justifiable. Tu as l'air d'être cultivé et intelligent alors sois un peu plus humble sur tes propos et comprends que les remarques faites peuvent avoir un fond de vérité avant de foncer dans la dénégation et le complot
    ça devient ridicule.

    en quoi nier la réalité de l'architecture des processeur, du langage machine et du rôle des compilateurs de langages de haut-niveau possède-t-il un fond de vérité justifiable ?

  4. #84
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    y a deux genre de pile : pile cpu et pile data.
    quand au pointeurs, y a aucune "variante de structure récursive", un pointeur est un nombre entier
    Tu fais le prof d'asm x86 mais ce memble c'est la seule chose que tu connais et mal ...Sache que j'ai programme du code asm X86 ,tu portais surement des couches culottes
    Mais comme dit par :
    Ca serait assez drôle que ce soit toi qui aies mis le "-1" à tes contradicteurs !
    Bref tu es atteint du syndrome "JE VAIS VOUS EXPLIQUER CE QU'JE NE CONNAIS PAS !!!

  5. #85
    Invité
    Invité(e)
    Par défaut
    quelle étrange manière d'accueillir les nouveaux membres qui vous apprennent des choses vérifiables.



    pour la peine j'suis allé voir dans les manuels intel des vieux x86 et donc voici des données.

    c'est à peu près toujours valable pour un core i7... en actualisant les cycles.

    MOV - Move Byte or Word

    Usage: MOV dest,src
    Modifies flags: None

    Copies byte or word from the source operand to the destination
    operand. If the destination is SS interrupts are disabled except
    on early buggy 808x CPUs. Some CPUs disable interrupts if the
    destination is any of the segment registers

    Clocks Size
    Operands 808x 286 386 486 Bytes

    reg,reg 2 2 2 1 2
    mem,reg 9+EA 3 2 1 2-4 (W88=13+EA)
    reg,mem 8+EA 5 4 1 2-4 (W88=12+EA)
    mem,immed 10+EA 3 2 1 3-6 (W88=14+EA)
    reg,immed 4 2 2 1 2-3
    mem,accum 10 3 2 1 3 (W88=14)
    accum,mem 10 5 4 1 3 (W88=14)
    segreg,reg16 2 2 2 3 2
    segreg,mem16 8+EA 5 5 9 2-4 (W88=12+EA)
    reg16,segreg 2 2 2 3 2
    mem16,segreg 9+EA 3 2 3 2-4 (W88=13+EA)
    reg32,CR0/CR2/CR3 - - 6 4
    CR0,reg32 - - 10 16
    CR2,reg32 - - 4 4 3
    CR3,reg32 - - 5 4 3
    reg32,DR0/DR1/DR2/DR3 - 22 10 3
    reg32,DR6/DR7 - - 22 10 3
    DR0/DR1/DR2/DR3,reg32 - 22 11 3
    DR6/DR7,reg32 - - 16 11 3
    reg32,TR6/TR7 - - 12 4 3
    TR6/TR7,reg32 - - 12 4 3
    reg32,TR3 3
    TR3,reg32 6
    POP - Pop Word off Stack

    Usage: POP dest
    Modifies flags: None

    Transfers word at the current stack top (SS:SP) to the destination
    then increments SP by two to point to the new stack top. CS is not
    a valid destination.

    Clocks Size
    Operands 808x 286 386 486 Bytes

    reg16 8 5 4 4 1
    reg32 4 - - 4 1
    segreg 8 5 7 3 1
    mem16 17+EA 5 5 6 2-4
    mem32 5 - - 6 2-4
    PUSH - Push Word onto Stack

    Usage: PUSH src

    PUSH immed (80188+ only)
    Modifies flags: None

    Decrements SP by the size of the operand (two or four, byte values
    are sign extended) and transfers one word from source to the stack
    top (SS:SP).

    Clocks Size
    Operands 808x 286 386 486 Bytes

    reg16 11/15 3 2 1 1
    reg32 - - 2 1 1
    mem16 16+EA 5 5 4 2-4 (W88=24+EA)
    mem32 - - 5 4 2-4
    segreg 10/14 3 2 3 1
    immed - 3 2 1 2-3
    CALL - Procedure Call

    Usage: CALL destination
    Modifies flags: None

    Pushes Instruction Pointer (and Code Segment for far calls) onto
    stack and loads Instruction Pointer with the address of proc-name.
    Code continues with execution at CS:IP.

    Clocks
    Operands 808x 286 386 486

    rel16 (near, IP relative) 19 7 7+m 3
    rel32 (near, IP relative) - - 7+m 3

    reg16 (near, register indirect) 16 7 7+m 5
    reg32 (near, register indirect) - - 7+m 5

    mem16 (near, memory indirect) - 21+EA 11 10+m 5
    mem32 (near, memory indirect) - - 10+m 5

    ptr16:16 (far, full ptr supplied) 28 13 17+m 18
    ptr16:32 (far, full ptr supplied) - - 17+m 18
    ptr16:16 (far, ptr supplied, prot. mode) - 26 34+m 20
    ptr16:32 (far, ptr supplied, prot. mode) - - 34+m 20
    m16:16 (far, indirect) 37+EA 16 22+m 17
    m16:32 (far, indirect) - - 22+m 17
    m16:16 (far, indirect, prot. mode) - 29 38+m 20
    m16:32 (far, indirect, prot. mode) - - 38+m 20

    ptr16:16 (task, via TSS or task gate) - 177 TS 37+TS
    m16:16 (task, via TSS or task gate) - 180/185 5+TS 37+TS
    m16:32 (task) - - TS 37+TS
    m16:32 (task) - - 5+TS 37+TS

    ptr16:16 (gate, same privilege) - 41 52+m 35
    ptr16:32 (gate, same privilege) - - 52+m 35
    m16:16 (gate, same privilege) - 44 56+m 35
    m16:32 (gate, same privilege) - - 56+m 35

    ptr16:16 (gate, more priv, no parm) - 82 86+m 69
    ptr16:32 (gate, more priv, no parm) - - 86+m 69
    m16:16 (gate, more priv, no parm) - 83 90+m 69
    m16:32 (gate, more priv, no parm) - - 90+m 69

    ptr16:16 (gate, more priv, x parms) - 86+4x 94+4x+m 77+4x
    ptr16:32 (gate, more priv, x parms) - - 94+4x+m 77+4x
    m16:16 (gate, more priv, x parms) - 90+4x 98+4x+m 77+4x
    m16:32 (gate, more priv, x parms) - - 98+4x+m 77+4x
    RET/RETF - Return From Procedure

    Usage: RET nBytes
    RETF nBytes
    RETN nBytes
    Modifies flags: None

    Transfers control from a procedure back to the instruction address
    saved on the stack. "n bytes" is an optional number of bytes to
    release. Far returns pop the IP followed by the CS, while near
    returns pop only the IP register.

    Clocks Size
    Operands 808x 286 386 486 Bytes

    retn 16/20 11+m 10+m 5 1
    retn immed 20/24 11+m 10+m 5 3
    retf 26/34 15+m 18+m 13 1
    retf (PM, same priv.) - 32+m 18 1
    retf (PM, lesser priv.) - 68 33 1
    retf immed 25/33 15+m 18+m 14 3
    retf immed (PM, same priv.) 32+m 17 1
    retf immed (PM, lesser priv.) 68 33 1

  6. #86
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    Tu fais le prof d'asm x86 mais ce memble c'est la seule chose que tu connais et mal ...Sache que j'ai programme du code asm X86 ,tu portais surement des couches culottes
    t'as apparemment 13 ans de plus que moi, j'ai commencé avec le basic t'avais 23 ans, et donc quand j'ai commencé l'assembleur 6809, t'avais environ 25 ou 26 ans et quand j'ai persévéré avec le 8086/8088 t'avais vers les 30 ans, et quand j'ai fait mon projet d'école de moteur 3D shading sous 80486, t'avais logiquement 35 ans, mais quelle importance, je parle processeurs x86 et ça a rien à voir avec moi, ou avec toi, ou avec qui que ce soit d'autre que les ingénieurs intel et leurs manuels de référence publics. y a pas que intel bien sur. et y a aussi le CIL de nos jours, et les autres fondeurs.
    https://fr.wikipedia.org/wiki/Fonderie_(électronique)

    non mais je m'inscrit sur developpez.net y a quelques semaines pour télécharger delphi 5 pour tenter de faire marcher un petit logiciel open source buggé, puis je vois ce sujet et je vois que personne dit la vrai raison de la coutume de retourner une seule variable de fonction qui est le eax et le fonctionnement interne du cpu avec sa pile, alors je me dis puisque j'ai un compte je vais poster mon avis sur la question, on critique, alors je détaille, explique, donne des exemples et des preuves, et alors on critique encore plus. sérieux. et puis je lis que pour definir un avatar y a une histoire de points, et lorsqu'on me critique que je dit faux (ce qui n'est pas du tout le cas) ou des choses qu'on sait (ce qui ne semble pas le cas), d'un coup mes posts se retrouvent avec -1 de vite. non mais c'est quoi le problème avec ces trois ou quatre membres de ce forum ? quel accueil !

  7. #87
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    Tu fais le prof d'asm x86 mais ce memble c'est la seule chose que tu connais et mal
    faux et si tu veux tout savoir je connais le basic microsoft thomson TO7/TO9, l'assembleur 6809 et 808x, le c et le c++ jusqu'en 1998, le c# v3, le pascal objet delphi, un brin de java, du sql oracle de requête classiques, le php, un peu de html et un tout petit peu de prolog. je connais que ça avec des rudiments de français, encore moins d'anglais et un peu de quelques autres langues anciennes.


  8. #88
    Invité
    Invité(e)
    Par défaut Intel instruction reference manual
    Pour les versions modernes :

    Intel instruction reference manual

    Version 8086/8080/80286/80386/80486 avec cycles CPU de chaque opcode selon accès registre et/ou mémoire (c'est mieux que le copié collé précédent) :

    http://web.itu.edu.tr/kesgin/mul06/intel/index.html

    http://web.itu.edu.tr/kesgin/mul06/intel/instr/mov.html
    http://web.itu.edu.tr/kesgin/mul06/i...nstr/push.html
    http://web.itu.edu.tr/kesgin/mul06/intel/instr/pop.html
    http://web.itu.edu.tr/kesgin/mul06/i...nstr/call.html
    http://web.itu.edu.tr/kesgin/mul06/i.../ret_retf.html

    c'est la liste des instructions du processeur x86.

    il ne comprend que ça.

    tout langage évolué est traduit dans ce langage.

    donc historiquement, une fonction de langage évolué ne retourne qu'une valeur parce qu'une proc ne retourne rien et ne prend aucun paramètre.

    les paramètres et la valeur de retour est un artéfact de jeu avec les registres et le stockage mémoire.

    un cpu, c'est en gros une unité d'exécution, quelques registres qui sont comme des variables globales, et la mémoire du segment de code exécutif et du segment de données de stockage.

    une proc selon de point de vue du cpu, n'est qu'un goto/return et il ne connais pas la notion de variable locale ni de paramètre in/out/ref qui sont des inventions de compilateurs évolués grâce à la gestion de la pile du processeur/registres/mémoire et aux règles syntaxiques du dit langage évolué.

    donc à la question "Y a-t-il une raison pour laquelle les fonctions ne retournent qu'une seule valeur ?", une réponse est "c'est selon ce qu'offre le compilateur évolué selon les possibilités du cpu" et donc "c'est selon ce que les humains qui fabriquent ces compilateurs imaginent et mettent en eauvre selon ce qui est possible de faire avec le cpu".

    j'ai encore pris le bouton "enregistrer" pour celui "prévisualisation"
    Dernière modification par Invité ; 18/09/2015 à 22h18.

  9. #89
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Tu as l'air d'être cultivé et intelligent alors sois un peu plus humble sur tes propos et comprends que les remarques faites peuvent avoir un fond de vérité avant de foncer dans la dénégation et le complot
    c'est vraiment bien le poker.

  10. #90
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par anonyme Voir le message
    ça devient ridicule.

    en quoi nier la réalité de l'architecture des processeur, du langage machine et du rôle des compilateurs de langages de haut-niveau possède-t-il un fond de vérité justifiable ?
    Personne ici n'a nié la "réalité de l'architecture des processeurs"... tout comme personne n'a nié que "l'eau ça mouille" et si tu ne comprends pas ce que je veux dire... non je ne ferais pas comme toi : citer une source wiki de 3 pages démontrant la mouillitude de l'eau.

    Parce que c'est hors sujet et n'a rien avoir avec les problématiques d'aujourd'hui.

    Ton cours d'histoire était peut être intéressant au début expliquant l'origine des 1ières fonctions calquant le langage machine sous-jacent mais depuis le niveau d'abstraction est tel que tout est possible.

    Pour ma part je dirais que les fonctions ne retournent qu'une seule valeur jusqu'à aujourd'hui car il n'était pas évident d'avoir un intérêt pour des structures ou classes anonymes (contenants donc plusieurs valeurs).

    Maintenant que Linq a fait pété tout ça et rend son utilisation courante via les requêtes SQL en C#, l'idée de les étendre fait son chemin et quasis toutes les étapes sont prêtes pour qu'elles arrivent <3

  11. #91
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Ton cours d'histoire était peut être intéressant au début expliquant l'origine des 1ières fonctions calquant le langage machine sous-jacent mais depuis le niveau d'abstraction est tel que tout est possible.
    c'est vraiment bien le poker.

    Citation Envoyé par ijk-ref Voir le message
    Pour ma part je dirais que les fonctions ne retournent qu'une seule valeur jusqu'à aujourd'hui car il n'était pas évident d'avoir un intérêt pour des structures ou classes anonymes (contenants donc plusieurs valeurs).
    quand j'ai demandé au vendeur du TO7-70 de me conseiller un livre sur le Basic, il m'a dit que si je voulais devenir programmeur, je devais commencer par l'assembleur et puis faire du C après le Basic.

    Citation Envoyé par ijk-ref Voir le message
    Maintenant que Linq a fait pété tout ça et rend son utilisation courante via les requêtes SQL en C#, l'idée de les étendre fait son chemin et quasis toutes les étapes sont prêtes pour qu'elles arrivent <3
    ???

  12. #92
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par anonyme Voir le message
    j'ai mis -1 à ceux qui ont mis -1 à plus de la moitié de mes posts de manière totalement injustifiable pour m'empecher de mettre un avatar "élevé au TO7-70"
    Vu qu'il n'y a pas de moyen de savoir qui a mis -1 à tes posts, tu as du mettre des -1 un peu au hasard.
    Et si tu crois vraiment que les gens s'amusent à te downvoter juste pour que tu n'aies pas droit à ton avatar, ça relève de la paranoïa... en général les gens mettent des -1 parce qu'ils ne sont pas d'accord, c'est tout.

    Citation Envoyé par anonyme Voir le message
    quelle étrange manière d'accueillir les nouveaux membres qui vous apprennent des choses vérifiables.
    Quelle étrange manière d'arriver sur un forum en adoptant une attitude aussi arrogante. Je ne doute pas que tu connaisses plein de choses sur la programmation et l'architecture des processeurs, mais ce n'est pas une raison pour te comporter comme si tu avais la science infuse et que les gens qui ne sont pas de ton avis avaient forcément tort... A mon avis il ne faut pas chercher plus loin la cause de tes -1.

  13. #93
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 691
    Points : 30 988
    Points
    30 988
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anonyme Voir le message
    c'est la liste des instructions du processeur x86.

    il ne comprend que ça.

    tout langage évolué est traduit dans ce langage.
    Dans l'absolu, tout langage se ramène en final à une machine de Turing, c'est à dire un ruban découpé en cases sur lequel on peut
    • avancer/reculer d'une case
    • faire saisir une valeur à l'endroit du ruban où se trouve le crayon et afficher cette valeur
    • incrémenter/décrémenter de 1 cette valeur
    • encapsuler une partie du ruban dans une boucle qui se répètera tant que la valeur placée sous le crayon est différente de 0


    Citation Envoyé par anonyme Voir le message
    j'ai encore pris le bouton "enregistrer" pour celui "prévisualisation"
    C'est pas grave puisque t'as aussi un bouton "modifier" !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #94
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Vu qu'il n'y a pas de moyen de savoir qui a mis -1 à tes posts, tu as du mettre des -1 un peu au hasard.
    Et si tu crois vraiment que les gens s'amusent à te downvoter juste pour que tu n'aies pas droit à ton avatar, ça relève de la paranoïa... en général les gens mettent des -1 parce qu'ils ne sont pas d'accord, c'est tout.

    Quelle étrange manière d'arriver sur un forum en adoptant une attitude aussi arrogante. Je ne doute pas que tu connaisses plein de choses sur la programmation et l'architecture des processeurs, mais ce n'est pas une raison pour te comporter comme si tu avais la science infuse et que les gens qui ne sont pas de ton avis avaient forcément tort... A mon avis il ne faut pas chercher plus loin la cause de tes -1.
    Il n'y a pas assez de +1 dans le monde pour te rendre justice. Mais je te donne au moins le seul que je peux.


    Note: Quand on retourne une grosse structure en C, celle-ci est généralement là où l'appelant veux qu'elle soit, car dans les implémentations actuelles, elle est secrètement passée par référence. La réponse pour les retours vraiment "sur la pile" (valeur de retour au sommet de la pile) est tout simplement que c'est difficile à implémenter sur certains processeurs, parce que ça force le nettoyage de la pile par la fonction appelée PUIS l'empilage de la valeur de retour; même l'architecture x86, qui s'accommode très bien du "callee-clean", aurait du mal à ré-empiler l'adresse de retour ensuite. Et le 68k, c'est pire; j'ai essayé le "callee-clean" en 68k, j'en suis revenu. D'où la prévalence du retour par registre (ou par référence pour les gros objets).
    Franchement, le seul code sur lequel j'ai bossé qui fasse du retour par la pile, c'est le code IL de .Net (et je présume que Java fait pareil) et là c'est seulement conceptuel, vu que sur x86 le JIT transforme ça en retour (et souvent passage) par registre.

    Et maintenant, la partie "pas hors sujet" de mon message:

    Vu qu'on sait déjà comment, à bas niveau, retourner struct/tuple/whatever, il n'y a pas de limitation technique empêchant cela. C'est juste une question de sucre syntaxique dans le langage au-dessus, générer automatiquement la structure de données sous-jacente pour transformer function f() { return {toto="test", titi=42}; } en struct tuple001 { string toto; int titi; } tuple001 f() { tuple001 ret = { "test", 42 }, return ret; }.

    La réponse est donc plus une question d'usage qu'une question technique.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #95
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    La réponse est donc plus une question d'usage qu'une question technique.
    Je n'ai pas évoqué l'aspect performance dès le début de ma contribution, et c'est un tort que j'ai un peu corrigé par la suite.

    Je te garantis que si tu essayes de faire tourner l'entity framework sur un 8080 à 10 MHz... déjà, faut faire tourner windows xp minimum et supposons que ça soit possible, ensuite faut faire tourner visual studio 2008 minimum et supposons que ça soit possible, ensuite faut faire tourner SQL server compact 3.5 minimum et supposons que ça soit possible... combien d'heures il te faut pour créer un projet, ajouter un entity model mappé sur une seule table, compiler une simple query select et lancer l'exe pour avoir le résultat en console ?

    Personne à l'époque n'était même capable d'imaginer ces choses dont on dispose de nos jours, hormis les visionnaires.

    Donc bien que le jeu d'instruction assembleur ai peu évolué lui, il n'y a rien d'historique et de non valable dans l'argument du eax et de la pile qui sont là dans ton cpu qui est là sur ta carte mère à l'intérieur du boitier de ton ordi ou de ton mobile.

    La performance a changé et c'est donc toujours une contrainte technique, même si là on parle d'un autre type de contrainte, donc ce que j'ai dit sur ce sujet reste toujours valable, pas parce que c'est moi qui le dit mai parce que je fais que communiquer des faits établis par d'autres qui m'ont enseigné.

    En d'autres termes, si de nos jours on a java, .net, linq, les génériques, et tout ce bazar de nouvelles technologies objets et composants qui rament, c'est parce que la structure et la vitesse des processeurs permettent aux humains de mettre en oeuvre l'évolution de leurs pensées et de leurs buts dans le domaine de la programmation informatique qui imprègne tous les métiers de la société : c'est parce que par exemple un core i7 traite pour ainsi dire les même MOV/PUSH/POP/CALL/RET des millions de je sais pas combien plus vite qu'il y a 30 ans.

    On pourrait très bien demander "Y a-t-il une raison pour laquelle la quasi-majorité des voitures ont des moteurs qui font tourner quatre roues ?"

    Et ça, c'est une question qui peut être très intéressante pour certaines personnes.

  16. #96
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 691
    Points : 30 988
    Points
    30 988
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anonyme Voir le message
    On pourrait très bien demander "Y a-t-il une raison pour laquelle la quasi-majorité des voitures ont des moteurs qui font tourner quatre roues ?"
    Ben en fait il me semble que les moteurs des voitures ne font tourner en réalité que deux roues, les roues avant. Et que les roues arrières, solidaires du corps de la voiture, ne tournent que parce que les roues avant ont entrainé ledit corps.

    En revanche, si tu veux une question analogue à celle du topic, alors tu pourrais demander pourquoi les premières voitures faisaient tourner les roues arrière alors qu'il est prouvé que la voiture a une meilleure tenue de route quand ce sont les roues avant qui la font avancer...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #97
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je suis juste amateur en programmation.
    Je connais pas grand chose de ce qui se passe sous un langage, même pas Ada.

    Mais pour moi un fonction prend 1 à plusieurs paramètre en entré qui ne serons pas modifier au cours du traitement.
    Et c'est la que c'est intéressant ou pas. Pour moi, une fonction c'est un traitement et pas deux donc ça ne doit retourné qu'un seul résultat.

    Mais déjà c'est faux.

    Toute les opérations sur un processeur me semble t-il influence les drapeaux d'état du processeur, ce qui fait deux résultat à observer.

  18. #98
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jovalise Voir le message
    pour moi un fonction prend 1 à plusieurs paramètre en entré qui ne serons pas modifier au cours du traitement.
    Et c'est la que c'est intéressant ou pas. Pour moi, une fonction c'est un traitement et pas deux donc ça ne doit retourné qu'un seul résultat.
    d'un point de vue mathématique, c'est dit très simplement et c'est très juste (on peut avoir 0 paramètres d'entrée), sachant qu'une fonction peut comme en math retourner un ensemble de valeur comme une matrice voire une autre fonction. il y a donc cohérence entre math et prog, ce qui est naturel et logique. en algorithmique on appelle ça les entrée et les sorties.

    en C on appelle fonction même les procédures qui retournent rien i.e. void, tandis qu'en en assembleur on appelle ça dans tous les cas une procédure puisque ça prend rien et ça retourne rien puisque c'est un goto/return et que c'est aux sections de codes appelant et appelé de gérer la mémoire et la pile et les registres en totale liberté sans notion de visibilité et de droit d'accès autre que le segment de thread et de processus voire de mémoire partagée et quelques bidules.

    c'est en pascal par exemple qu'on fait la distinction au sens mathématique du terme entre func et proc.

    en objet on a réglé ce problème linguistique d'un consensus général en disant "méthode" de classe et on doit même plus dire variable mais attributs (on fait la distinction entre attribut de champ qui est une variable de classe et de propriété qui est un accesseur get/set vers un attribut), les deux choses étant dites des "membres" de classe.

    avec les délégués anonymes en .Net on a toujours Func et Action.

    le processeur n'imposant aucune structure cela fait que les compilateurs peuvent faire ce qu'ils veulent, c'est l’avantage de la contrainte structurelle limité par les performances.

    Citation Envoyé par jovalise Voir le message
    Toute les opérations sur un processeur me semble t-il influence les drapeaux d'état du processeur, ce qui fait deux résultat à observer.
    en effet, un des registres de flag est principalement utilisés pour les tests conditionnels tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CMP eax, ebx  ; compare la valeur de deux registres
    JNE adr       ; jump at adr if not égal (eax != ebx) else continue - le résultat du test étant un bit du flag
    et de la même manière pour le contrôle d'états de calculs élémentaire et binaires du genre ADD et AND.

    Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX
    https://books.google.fr/books?id=plInCgAAQBA
    extrait page sur le registre de flag fpu

  19. #99
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par anonyme Voir le message
    d'un point de vue mathématique, c'est dit très simplement et c'est très juste (on peut avoir 0 paramètres d'entrée), sachant qu'une fonction peut comme en math retourner un ensemble de valeur comme une matrice voire une autre fonction. il y a donc cohérence entre math et prog, ce qui est naturel et logique. en algorithmique on appelle ça les entrée et les sorties.
    Vous auriez du Cité ma première phrase en premier ça vous aurait donné un arument de vente.

    Côté construction c'est pas top.

    Mais j'observe tout de même vos points de vues.

  20. #100
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Vous auriez du Cité ma première phrase en premier ça vous aurait donné un arument de vente.

    Côté construction c'est pas top.

    Mais j'observe tout de même vos points de vues.
    pas compris ce que veut dire ce qui est souligné


Discussions similaires

  1. [AC-2003] Une formule pour calculer les in et out d une table de pointage
    Par taz devil dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 29/06/2015, 12h46
  2. Réponses: 10
    Dernier message: 10/02/2010, 08h49
  3. Réponses: 6
    Dernier message: 06/05/2009, 15h35
  4. [Excel] fonction SOMME.SI avec une cellule pour critère
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2006, 17h39

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