LE GOTO C'EST LA VIE !
+5
MonsieurBouboule
tophe38
rocky007
F.L
drfloyd
9 participants
Page 1 sur 1
LE GOTO C'EST LA VIE !
Qui met met encore des GOTO (ou équivalent) dans ses programmes ?
Linus Torvalds ou Robert Love (en), ont fait remarquer que même si elle incite à produire du code spaghetti, l'instruction goto peut être appréciable et rendre au contraire le code plus lisible, lorsqu'elle est employée à bon escient1. D'ailleurs, dans leur livre The Elements of Programming Style (en), Kernighan et Plauger (en) indiquent comment écrire du code structuré en Fortran et en PL/I, tout en faisant intensivement appel à l'instruction goto Wiki
Ce que l'on reproche au goto, donc, c'est surtout d'être généralement incompatible avec la programmation structurée. Mais ça, c'est un paradigme qui doit être pensé par le programmeur avant tout. De la même façon qu'il est possible d'avoir une approche orientée objet en C même si le langage n'est pas spécialement conçu pour cela au départ, il est possible d'écrire un programme propre avec des gotos si le programmeur le souhaite.
Il faudrait commencer par arrêter d'associer systématiquement goto et code spaghetti. D'abord parce qu'à la longue, ça devient pénible, ensuite et surtout parce que rien n'empêche un programmeur d'écrire du code spaghetti sans goto. Et précisément, une grande maladie, contemporaine cette fois, consiste à éliminer tous les gotos et les remplacer par n'importe quoi d'autre, sans se soucier de savoir si c'est réellement plus efficace (même au niveau global) et surtout si ce n'est pas pire.
Developpez.com
Linus Torvalds ou Robert Love (en), ont fait remarquer que même si elle incite à produire du code spaghetti, l'instruction goto peut être appréciable et rendre au contraire le code plus lisible, lorsqu'elle est employée à bon escient1. D'ailleurs, dans leur livre The Elements of Programming Style (en), Kernighan et Plauger (en) indiquent comment écrire du code structuré en Fortran et en PL/I, tout en faisant intensivement appel à l'instruction goto Wiki
Ce que l'on reproche au goto, donc, c'est surtout d'être généralement incompatible avec la programmation structurée. Mais ça, c'est un paradigme qui doit être pensé par le programmeur avant tout. De la même façon qu'il est possible d'avoir une approche orientée objet en C même si le langage n'est pas spécialement conçu pour cela au départ, il est possible d'écrire un programme propre avec des gotos si le programmeur le souhaite.
Il faudrait commencer par arrêter d'associer systématiquement goto et code spaghetti. D'abord parce qu'à la longue, ça devient pénible, ensuite et surtout parce que rien n'empêche un programmeur d'écrire du code spaghetti sans goto. Et précisément, une grande maladie, contemporaine cette fois, consiste à éliminer tous les gotos et les remplacer par n'importe quoi d'autre, sans se soucier de savoir si c'est réellement plus efficace (même au niveau global) et surtout si ce n'est pas pire.
Developpez.com
_______________________________________________________
Re: LE GOTO C'EST LA VIE !
Salut Doc !
Biensur, je suis un grand adepte du GOTO !
J'en use et abuse, à tel point que j'en ai quasiment un par ligne sur des milliers de lignes dans mon listing barbarian
D'ailleurs, meme si le langage que j'utilise ne comporte pas de GOTO,
je m'en suis inventé un, en le remplacant par un
if GOUTOU = 0 THEN
devant chaque ligne afin de pouvoir la lire
Voici par exemple mes milliers de GOTOU en html5, et ça tourne nickel :
http://barbarian.1987.free.fr/online
(Tapez f11 pour voir le code source sur votre navigateur)
Biensur, je suis un grand adepte du GOTO !
J'en use et abuse, à tel point que j'en ai quasiment un par ligne sur des milliers de lignes dans mon listing barbarian
D'ailleurs, meme si le langage que j'utilise ne comporte pas de GOTO,
je m'en suis inventé un, en le remplacant par un
if GOUTOU = 0 THEN
devant chaque ligne afin de pouvoir la lire
Voici par exemple mes milliers de GOTOU en html5, et ça tourne nickel :
http://barbarian.1987.free.fr/online
(Tapez f11 pour voir le code source sur votre navigateur)
drfloyd offre 1 suppo à ce post!
Re: LE GOTO C'EST LA VIE !
le GOTO n'est pas sale !
ce sont ces elitiste orbjet qui l'ont critiqué alors que c'est très propre si bien utilisé... je l'utilise encore volontiers, n'oublions pas qu'il est cousin du BRA
ce sont ces elitiste orbjet qui l'ont critiqué alors que c'est très propre si bien utilisé... je l'utilise encore volontiers, n'oublions pas qu'il est cousin du BRA
rocky007- Interne
- Nombre de messages : 9154
Age : 50
Date d'inscription : 29/01/2011
Re: LE GOTO C'EST LA VIE !
C'est quoi déjà un GOTO ?
Perso, je préfère le Wonderbra au BRA, mais chacun son truc ...
Perso, je préfère le Wonderbra au BRA, mais chacun son truc ...
tophe38- Interne
- Nombre de messages : 6383
Age : 51
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009
Re: LE GOTO C'EST LA VIE !
Je n’ai jamais connu de langage basic donc jamais utilisé de GOTO. Pourtant j’ai appris à programmer avec Lua qui n’est pas du tout un langage orienté objet.
C’est marrant parce que n’en ayant jamais utilisé, le GOTO ne me manque évidemment pas, et je me demande bien à quoi il peut servir… je ne vois pas l’interêt d’un GOTO quand on peut créer des fonctions et les appeler où bon nous semble…
C’est marrant parce que n’en ayant jamais utilisé, le GOTO ne me manque évidemment pas, et je me demande bien à quoi il peut servir… je ne vois pas l’interêt d’un GOTO quand on peut créer des fonctions et les appeler où bon nous semble…
MonsieurBouboule- Patient contaminé
- Nombre de messages : 623
Age : 30
Localisation : Montpellier
Date d'inscription : 18/02/2020
Re: LE GOTO C'EST LA VIE !
et les GOSUB ?
Anarwax- Docteur *
- Nombre de messages : 21177
Age : 47
Localisation : Bretagne
Date d'inscription : 06/09/2012
Re: LE GOTO C'EST LA VIE !
F.L a écrit:Salut Doc !
Biensur, je suis un grand adepte du GOTO !
J'en use et abuse, à tel point que j'en ai quasiment un par ligne sur des milliers de lignes dans mon listing barbarian
D'ailleurs, meme si le langage que j'utilise ne comporte pas de GOTO,
je m'en suis inventé un, en le remplacant par un
if GOUTOU = 0 THEN
devant chaque ligne afin de pouvoir la lire
Voici par exemple mes milliers de GOTOU en html5, et ça tourne nickel :
http://barbarian.1987.free.fr/online
(Tapez f11 pour voir le code source sur votre navigateur)
excellent je décapite un peu trop facilement mais bon, une version definitive ?
Anarwax- Docteur *
- Nombre de messages : 21177
Age : 47
Localisation : Bretagne
Date d'inscription : 06/09/2012
Re: LE GOTO C'EST LA VIE !
Le GOSUB, c'est très bien. Ça permet de faire des fonctions réutilisables.
Donc, c'est structuré, mais c'est réservé aux élites
Comme dit plus haut, le noyaux linux (et surtout les drivers), sont gavés de GOTO. Et ce n'est pas prêt de changer, car la règle que j'avais lu concernant l’écriture d'un nouveau driver/module, c'est de copier un module similaire à celui que vous voulez écrire.
Donc, c'est structuré, mais c'est réservé aux élites
Comme dit plus haut, le noyaux linux (et surtout les drivers), sont gavés de GOTO. Et ce n'est pas prêt de changer, car la règle que j'avais lu concernant l’écriture d'un nouveau driver/module, c'est de copier un module similaire à celui que vous voulez écrire.
tophe38- Interne
- Nombre de messages : 6383
Age : 51
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009
Re: LE GOTO C'EST LA VIE !
justement le GOTO permet de faire ce qu'un GOSUB ne peut pas de faire... exemple faire des sauts internes dans la boucle principale ou dans une fonction.
pour des codeurs qui n'ont toujours connu que l'orienté objet, c'est évidement incompréhensible, je le conçoit, ça fait très sale
pour des codeurs qui n'ont toujours connu que l'orienté objet, c'est évidement incompréhensible, je le conçoit, ça fait très sale
rocky007- Interne
- Nombre de messages : 9154
Age : 50
Date d'inscription : 29/01/2011
Re: LE GOTO C'EST LA VIE !
Anarwax a écrit:F.L a écrit:Salut Doc !
Biensur, je suis un grand adepte du GOTO !
J'en use et abuse, à tel point que j'en ai quasiment un par ligne sur des milliers de lignes dans mon listing barbarian
D'ailleurs, meme si le langage que j'utilise ne comporte pas de GOTO,
je m'en suis inventé un, en le remplacant par un
if GOUTOU = 0 THEN
devant chaque ligne afin de pouvoir la lire
Voici par exemple mes milliers de GOTOU en html5, et ça tourne nickel :
http://barbarian.1987.free.fr/online
(Tapez f11 pour voir le code source sur votre navigateur)
excellent je décapite un peu trop facilement mais bon, une version definitive ?
Merci !
Oui c'est une version definitive mais effectivement cette version en ligne est plus facile que l'original car il s'agit en fait de ma version megadrive que j'ai "traduit" du basic à l' html5
A l'epoque j'avais rendu volontairement rendu l'IA de la version megadrive plus simple à cause de la manette megadrive qui n'aide pas le joueur à faire des coup en diagonale....
Par contre, à partir de l'adversaire No6, ça devient dur de le decapiter . Et sinon, tu es arrivé jusqu'au sorcier ?
J'aurais bien aimé faire les autres versions de barbarian en html5 mais je n'arrive pas à changer la police de caracteres dans ma page html..... si qq veut bien m'aider
Re: LE GOTO C'EST LA VIE !
J'ai utilisé beaucoup de GOTO dans ma vie, il est temps pour moi de me repentir
I AM A SINNER !
I AM A SINNER !
_______________________________________________________
Re: LE GOTO C'EST LA VIE !
FL est un artiste unique en programmation
_______________________________________________________
Re: LE GOTO C'EST LA VIE !
J'ai banni le goto de mes programmes mais aussi le continue. Je ne me sers du break que vraiment quand je n'ai pas le choix. Mélanger les break et les continue à l'intérieur d'une boucle est la meilleure façon de ne plus rien comprendre et de faire du code spaguetti. C'est pour ça que j'ai aussi banni l'instruction continue.
Sinon pour le reste, c'est l'autoroute, y compris l'héritage multiple quand le langage le permet mais avec parcimonie.
Sinon pour le reste, c'est l'autoroute, y compris l'héritage multiple quand le langage le permet mais avec parcimonie.
xinyingho- Interne
- Nombre de messages : 5038
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018
Re: LE GOTO C'EST LA VIE !
Il y a une maniere d'utiliser les goto sans faire du code spaghetti :
Faire un listing unique, une boucle unique avec tout dedans
Le code ne fait que descendre, il ne remonte jamais (a part en bas quand il arrive au loop)
Le goto sert à descendre plus vite, en evitant des parties entieres du listing
Le goto ne doit jamis remonter !
De plus, si on n'utilise aucune fonction comme moi, le listing reste tres lisible
Et le debuggage en est facilité, car il suffit de descendre dans le coe pour suivre les actions.
C'est ce que je fait, mon main fait 5000 lignes et ça marche
Faire un listing unique, une boucle unique avec tout dedans
Le code ne fait que descendre, il ne remonte jamais (a part en bas quand il arrive au loop)
Le goto sert à descendre plus vite, en evitant des parties entieres du listing
Le goto ne doit jamis remonter !
De plus, si on n'utilise aucune fonction comme moi, le listing reste tres lisible
Et le debuggage en est facilité, car il suffit de descendre dans le coe pour suivre les actions.
C'est ce que je fait, mon main fait 5000 lignes et ça marche
Re: LE GOTO C'EST LA VIE !
Comme lu plus haut le GOTO c'est ni plus ni moins que le BRA ou JMP en Assembleur,
donc y'a pas vraiment de souci à l'utiliser (même si perso je ne l'utilise jamais sauf en asm)
Faut quand même un code propre avec des noms de variables clean pour s'y retrouver.
En C & autres langages avancés, ca reste à mon sens un peu délicat a utiliser, du moins pas n'importe comment sinon garre aux fuites.
Par contre xxxx lignes dans un main, là je peux pas trop acquiescer
C'est quand même vachement plus simple de débugguer/vérifier des bouts de fonction d'un gros gros bordel géant noyé dans la masse... Et 5000 lignes c'est pas du tout "gros".
PS. pour le break, je vois mal par contre comment tu peux t'en passer, surtout dans un switch/case ou plus rarement pour des cas de sorties tres spécifique dans une boucle.
Le continue, j'ai du utiliser ca genre 1 fois dans un truc perso.
donc y'a pas vraiment de souci à l'utiliser (même si perso je ne l'utilise jamais sauf en asm)
Faut quand même un code propre avec des noms de variables clean pour s'y retrouver.
En C & autres langages avancés, ca reste à mon sens un peu délicat a utiliser, du moins pas n'importe comment sinon garre aux fuites.
Par contre xxxx lignes dans un main, là je peux pas trop acquiescer
C'est quand même vachement plus simple de débugguer/vérifier des bouts de fonction d'un gros gros bordel géant noyé dans la masse... Et 5000 lignes c'est pas du tout "gros".
PS. pour le break, je vois mal par contre comment tu peux t'en passer, surtout dans un switch/case ou plus rarement pour des cas de sorties tres spécifique dans une boucle.
Le continue, j'ai du utiliser ca genre 1 fois dans un truc perso.
Re: LE GOTO C'EST LA VIE !
C'est vrai que, lorsque je vois le travaille de F.L., on pardonne tout
Mais finalement, tu es très structuré, et donc, ça passe nickel.
Et encore une fois, bravo pour le travail accompli.
Le continue, je l'utilise pas mal. Il me sert à passer un cas dans une boucle qui ne remplie pas les toutes les conditions pour appliquer la suite du traitement.
Mais finalement, tu es très structuré, et donc, ça passe nickel.
Et encore une fois, bravo pour le travail accompli.
Le continue, je l'utilise pas mal. Il me sert à passer un cas dans une boucle qui ne remplie pas les toutes les conditions pour appliquer la suite du traitement.
tophe38- Interne
- Nombre de messages : 6383
Age : 51
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009
F.L offre 1 suppo à ce post!
Re: LE GOTO C'EST LA VIE !
Ce n'est pas forcement le mal absolu le goto.
D'ailleurs il est pas mal utilisé par l'interpréteur du langage python : source du main.c du python
Mais bon, un goto mal utilisé peut niquer un algo et le rendre indebuggable.
imaginez :
D'ailleurs il est pas mal utilisé par l'interpréteur du langage python : source du main.c du python
Mais bon, un goto mal utilisé peut niquer un algo et le rendre indebuggable.
imaginez :
- Code:
10 for i=1 to 10
... plein de trucs avec dedans un goto qui pointe sur 120
100 next i
110 for i= 20 to 0 step -1
120 ... plein de trucs avec un goto qui pointe sur 20
200 next i
Re: LE GOTO C'EST LA VIE !
là fait le faire exprès
le GOTO est pratique pour passer à une partie différente d'un programme sans devoir structurer. Ca peut meme parfois rendre certains programmes plus lisibles.
le GOTO est pratique pour passer à une partie différente d'un programme sans devoir structurer. Ca peut meme parfois rendre certains programmes plus lisibles.
_______________________________________________________
Re: LE GOTO C'EST LA VIE !
Si tu mets les bonnes conditions, tu n'as plus besoin de continue. Il suffit souvent juste d'inverser une condition pour placer un break à la place ou même pour qu'il n'y ait plus besoin ni de l'un ni de l'autre.tophe38 a écrit:Le continue, je l'utilise pas mal. Il me sert à passer un cas dans une boucle qui ne remplie pas les toutes les conditions pour appliquer la suite du traitement.
Je tique sur le "sans devoir structurer". Si tu ne veux pas structurer, c'est que tu es en train de faire du code temporaire et jetable sur le court terme. Sinon c'est pas bon du tout. Il y a certainement quelques cas où le goto permet d'avoir quelque chose de plus lisible mais c'est souvent parce qu'à la base le code est mal structuré et donc un bon refactoring (en bon français, on pourrait parler de refonte du code) permet souvent d'éviter à utiliser un goto et avoir du code maintenable sur le moyen à long terme.drfloyd a écrit:le GOTO est pratique pour passer à une partie différente d'un programme sans devoir structurer. Ca peut meme parfois rendre certains programmes plus lisibles.
xinyingho- Interne
- Nombre de messages : 5038
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018
Re: LE GOTO C'EST LA VIE !
Mais ouai, il s'en cogne le doc que les autres maintiennent son code.
C'est son fils, sa bataille. Son projet mourra avec lui.
C'est une œuvre unique et indomptable
Le doc est un rocker barbare coder
C'est son fils, sa bataille. Son projet mourra avec lui.
C'est une œuvre unique et indomptable
Le doc est un rocker barbare coder
F.L offre 1 suppo à ce post!
Re: LE GOTO C'EST LA VIE !
oui penser à quelqu'un d'autre qui pourrait maintenir mon code, je m'en tape, c'est un homebrew, une fois fini c'est fini. C'est pas un code de logiciel d'entreprise à maintenir sur 30 ans
Dans mes jeux d'arcade, façon Crash Time ou Supa Zazai, y a pas de goto rassurez vous... j'en met dans certains cas de figures ou c'est inutile de structurer. Je pourrai le faire, structurer à 100%, mais j'ai pas envie quand ca sert à rien.
Dans mes jeux d'arcade, façon Crash Time ou Supa Zazai, y a pas de goto rassurez vous... j'en met dans certains cas de figures ou c'est inutile de structurer. Je pourrai le faire, structurer à 100%, mais j'ai pas envie quand ca sert à rien.
_______________________________________________________
Re: LE GOTO C'EST LA VIE !
Nul part dans ce thread, on a parlé de limiter le sujet au codage de homebrews. Mais bon, même les homebrews ne sont pas codés que sur 1-2 semaines. Ca s'étire plutôt en mois ou même en années, donc la maintenabilité et la lisibilité du code restent des critères importants même dans ce cas particulier à mon sens.
Enfin chacun code comme il veut. Je donne simplement des explications sur comment je coderais et pourquoi je le fais comme ça.
Enfin chacun code comme il veut. Je donne simplement des explications sur comment je coderais et pourquoi je le fais comme ça.
xinyingho- Interne
- Nombre de messages : 5038
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018
Re: LE GOTO C'EST LA VIE !
drfloyd a écrit:oui penser à quelqu'un d'autre qui pourrait maintenir mon code, je m'en tape, c'est un homebrew, une fois fini c'est fini. C'est pas un code de logiciel d'entreprise à maintenir sur 30 ans
Dans mes jeux d'arcade, façon Crash Time ou Supa Zazai, y a pas de goto rassurez vous... j'en met dans certains cas de figures ou c'est inutile de structurer. Je pourrai le faire, structurer à 100%, mais j'ai pas envie quand ca sert à rien.
C'est dommage que tu ne partages tes sources car je t'aurais bien porté crash time sur megadrive et/ou jaguar, comme je te l'avais deja proposé
Mais finalement vu ce que tu dis c'est pas plus mal : moi c'est l'inverse : si il n'y a pas de goto, si c'est trop strucuré et s'il y a trop de fonctions, je suis perdu
Sujets similaires
» Cest grave docteur?
» Alors docteur ? Cest grave ?
» VOILA.cest fait.je suis inscrit...on ne peut plus rien faire
» Alors docteur ? Cest grave ?
» VOILA.cest fait.je suis inscrit...on ne peut plus rien faire
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum