Auteur Sujet: Programmation : Le GOTO c'est le maaaaaaal  (Lu 51150 fois)

0 Membres et 1 Invité sur ce sujet

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #72 le: 07 mars 2015 à 01:24:38 »
Oui, c'est n'importe quoi (parcque les IO font toujours appels à des syscall, quel que soit le langage utilisé, en userspace).
Il faudrait que tu précises ce que tu entends par IO.

(J'aurais certainement mieux fait de commencer par ça, mais bon...)

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #73 le: 07 mars 2015 à 01:28:01 »
Comme c'est toi, je vais faire un peu de mauvaise foi pour la route : ça reste un goto, au sens sémantique du terme  8)
Qu'est-ce que "goto (au sens sémantique)"?

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #74 le: 07 mars 2015 à 01:33:56 »
Oui, c'est n'importe quoi (parcque les IO font toujours appels à des syscall, quel que soit le langage utilisé, en userspace).
En revanche, cela a tout à voir avec les interruptions.
Tu peux définir ce que tu appelles "interruption" dans ce contexte?

Est-ce que tu cherches juste à dire que la fonction appelant cesse d'être exécutée pendant l'exécution de l'appel système?

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #75 le: 07 mars 2015 à 01:59:25 »
Traduction des instructions en français littéral, autorisation des accents dans les variables, le rêve de tout développeur !
</trolldi>
Le C autorise tous les caractères accentués.

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #76 le: 07 mars 2015 à 02:15:36 »
C'est nécessaire uniquement quand tu as besoin immédiatement d'une information (cette information peut être "void" ou "unit" : une information vide qui indique qu'une opération est terminée).

Pour les write de toute façon le fait que write retourne une valeur indique juste que de la place a été trouvée dans un tampon ou un cache pour écrire les données. Elles n'ont encore été envoyées nul part (sauf cas particulier).
EXPLICATION

Sauf cas particulier, après un appel à write vous n'avez pas la garantie que des données ont été physiquement écrites, juste qu'une zone mémoire a été copiée ailleurs et que l'écriture physique ou ce qui doit être fait va se produire sous peu.

Donc on pourrait tout à fait avoir une fonction write qui ne fait aucun appel système dans certains cas.

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #77 le: 07 mars 2015 à 02:44:34 »
Autre exemple montrant que C n'est pas langage de bas niveau :

Vous avez une carte graphique qui affiche une image si vous copiez l'image à une adresse précise et qu'ensuite vous mettez une valeur magique dans une autre adresse.

Comment faire ça en C?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 103
  • Paris (75)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #78 le: 07 mars 2015 à 09:08:51 »
Rien qu'a lire ces 2 choses on voit clairement que tu as une connaissance plus que superficiel sur ses sujets...

Le C est très difficilement optimisable. Il n'a pas été conçu pour être optimisable. Et quand un compilateur décide de s'amuser à vraiment optimiser il casse énormèment de code, voir linux par exemple. La "sémantique" est un vrai merdier.
C difficilement optimisable, pas concu pour être optimisable?! soit tu confond avec optimisation au niveau du source (source-level optimisation) et encore C est aussi tres optimisable a ce niveau, soit t'as carrèment aucune idée de comment un compilateur fonctionne.

Oui parce que goto est l'opération élèmentaire qui défini les "structures" de la soi-disant programmation structurée.
Mais non c'est parce que 'goto' est ce qui se compile directement en un branchement de code en langage machine , quasi la seule instruction disponible pour faire ca. Tu raisonnes de haut en bas alors qu'il faut raisonner dans l'autre sens. On a  concu les langages de programmation de bas en haut: au fil des années on a abstrait de plus de plus pour faciliter la productivité, la qualité , la concision, ...

Ne réduit pas ton raisonnement sur ce sujet a ce que tu connais: Linux et x86. C'est plus vaste que cela. Le C n'a pas été concu pour Linux (c'est l'inverse) et pour être compiler en x86 ... Ne pas confondre le langage (la syntaxe, 'if','while','for',etc) et les librairies (open(),printf(),...). Par abus de langage on confond souvent les 2.

Je sais pas même pourquoi je me fatigue a répondre, enfin ça servira a d'autres, j’espère. De toute façon le sujet est, encore une fois, déjà torpillé.


corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #79 le: 07 mars 2015 à 09:18:10 »
Rien qu'a lire ces 2 choses on voit clairement que tu as une connaissance plus que superficiel sur ses sujets...
kgersen, le poly-incompétent, a un avis. Sur tout. Il a presque toujours tout faux, mais c'est distrayant.

Mais non c'est parce que 'goto' est ce qui se compile directement en un branchement de code en langage machine , quasi la seule instruction disponible pour faire ca.
N'importe quoi!

Tu raisonnes de haut en bas alors qu'il faut raisonner dans l'autre sens. On a  concu les langages de programmation de bas en haut: au fil des années on a abstrait de plus de plus pour faciliter la productivité, la qualité , la concision, ...
N'importe quoi!

Ne réduit pas ton raisonnement sur ce sujet a ce que tu connais: Linux et x86.
Tu confonds moi et les autres. Normal. C'est le bordel dans tête!

C'est plus vaste que cela. Le C n'a pas été concu pour Linux (c'est l'inverse)
N'importe quoi!

et pour être compiler en x86 ... Ne pas confondre le langage (la syntaxe, 'if','while','for',etc) et les librairies (open(),printf(),...). Par abus de langage on confond souvent les 2.
La bibliothèque standard fait parti du langage!

Il n'y a pas un truc qui ait un sens dans ton message.

Si tu savais à qui tu t'adresses... lol

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #80 le: 07 mars 2015 à 09:25:05 »
En Java il n'y a pas d'instruction goto, à ma connaissance. :)
Il y a juste return (utilisable n'importe où), continue, break (survitaminé).

Bref, les puristes de la programmation structurée repasseront.

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #81 le: 07 mars 2015 à 09:25:56 »
Bon je vous ressers des cahuètes mais faudrait consommer messieurs.

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #82 le: 07 mars 2015 à 09:30:30 »
encore heureux ;) C# et les autres langages de plus haut niveau que C permettent dans la plus part des cas d'éviter l'emploi de goto.

Le C est un peu a part. On fait des trucs très bas niveau avec et souvent utiliser un goto peut-être très pratique et concis (pour sortir d'une imbrication de "if" notamment ).

Il ne faut pas généraliser un langage ou des techniques de programmation a toutes sortes de cas et de types de projets.

Quand on écrit un driver bas niveau ou un soft embarqué pour du temps réel ou un gros logiciel de gestion on n'a pas du tout les mêmes contraintes et on n'utilise pas les mêmes techniques.
Si, on utilise les mêmes techniques pour parvenir au même résultat : un programme qui marche, le plus efficace, lisible, vérifiable possible...

linux utilise goto absolument partout, et une grande partie de l'arborescence du source (en nombre de répertoires) n'est pas du tout de bas niveau.

Une bonne partie du code de linux ressemble à n'importe quel code C, sauf que les bibliothèques utilisées sont limitées. linux est vraiment conçu à un haut niveau. Même les drivers sont souvent multi-plateformes.

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #83 le: 07 mars 2015 à 09:31:50 »
c'est une question de rigueur.
comme certains pro-java, pro-C# disant que le PHP c'est crade.
PHP est sans discussion possible une monstruosité, une abjection absolue.

Les mecs qui l'ont pondu doivent avoir l'ESB, un truc comme ça.