GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

LE GOTO C'EST LA VIE !

+5
MonsieurBouboule
tophe38
rocky007
F.L
drfloyd
9 participants

Aller en bas

LE GOTO C'EST LA VIE ! Empty LE GOTO C'EST LA VIE !

Message par drfloyd Mar 16 Nov 2021, 9:34 pm

Qui met met encore des GOTO (ou équivalent) dans ses programmes ?  Mr. Green


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

_______________________________________________________
LE GOTO C'EST LA VIE ! Giphy10





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 182121
Age : 54
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Mar 16 Nov 2021, 10:19 pm

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)
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

drfloyd offre 1 suppo à ce post!

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par rocky007 Mar 16 Nov 2021, 10:52 pm

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
rocky007
rocky007
Interne
Interne

Masculin Nombre de messages : 8776
Age : 49
Date d'inscription : 29/01/2011

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par tophe38 Mer 17 Nov 2021, 8:10 am

C'est quoi déjà un GOTO ? MDR
Perso, je préfère le Wonderbra au BRA, mais chacun son truc ...
tophe38
tophe38
Interne
Interne

Masculin Nombre de messages : 6130
Age : 50
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par MonsieurBouboule Mer 17 Nov 2021, 8:19 pm

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…
MonsieurBouboule
MonsieurBouboule
Patient contaminé

Masculin Nombre de messages : 623
Age : 30
Localisation : Montpellier
Date d'inscription : 18/02/2020

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par Anarwax Mer 17 Nov 2021, 8:23 pm

et les GOSUB ?
Anarwax
Anarwax
Docteur *
Docteur *

Masculin Nombre de messages : 18539
Age : 47
Localisation : Bretagne
Date d'inscription : 06/09/2012

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par Anarwax Mer 17 Nov 2021, 8:26 pm

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
Anarwax
Docteur *
Docteur *

Masculin Nombre de messages : 18539
Age : 47
Localisation : Bretagne
Date d'inscription : 06/09/2012

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par tophe38 Jeu 18 Nov 2021, 9:10 am

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 tongue

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
tophe38
Interne
Interne

Masculin Nombre de messages : 6130
Age : 50
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par rocky007 Jeu 18 Nov 2021, 9:22 am

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
rocky007
rocky007
Interne
Interne

Masculin Nombre de messages : 8776
Age : 49
Date d'inscription : 29/01/2011

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Jeu 18 Nov 2021, 7:39 pm

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 Wink . 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 BIENVENUE
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par drfloyd Jeu 18 Nov 2021, 8:04 pm

J'ai utilisé beaucoup de GOTO dans ma vie, il est temps pour moi de me repentir

I AM A SINNER !


_______________________________________________________
LE GOTO C'EST LA VIE ! Giphy10





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 182121
Age : 54
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Jeu 18 Nov 2021, 9:55 pm

Sorry, i dont speak english 😀😃
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par 65c02 Ven 19 Nov 2021, 6:59 am

Le code de barbarian est un chef d'œuvre.
F.L a réussit à faire son jeu en inventant son propre langage.
Et le plus beau c'est que ça marche.
Il contrôle parfaitement le comportement de son code.
Quand on me demande si je connais un véritable artiste dans la programmation, je cite toujours François.
Very Happy

LE GOTO C'EST LA VIE ! Obfusc10
65c02
65c02
Docteur *
Docteur *

Masculin Nombre de messages : 2055
Age : 53
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par drfloyd Ven 19 Nov 2021, 7:14 am

FL est un artiste unique en programmation  thumleft

_______________________________________________________
LE GOTO C'EST LA VIE ! Giphy10





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 182121
Age : 54
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Ven 19 Nov 2021, 9:07 pm

Merci les amis c'est trop d'honneur !  amoureux amoureux
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par xinyingho Sam 20 Nov 2021, 12:16 am

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.
xinyingho
xinyingho
Infirmier

Masculin Nombre de messages : 4595
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Sam 20 Nov 2021, 8:43 am

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 Wink
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par ichigobankai Sam 20 Nov 2021, 10:24 am

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 Razz
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.
ichigobankai
ichigobankai
Patient incurable

Masculin Nombre de messages : 1922
Age : 44
Localisation : 49
Date d'inscription : 04/04/2011

https://www.2minds.fr

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par tophe38 Sam 20 Nov 2021, 12:25 pm

C'est vrai que, lorsque je vois le travaille de F.L., on pardonne tout Wink

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
tophe38
Interne
Interne

Masculin Nombre de messages : 6130
Age : 50
Localisation : Vallée du Grésivaudan
Date d'inscription : 11/12/2009

F.L offre 1 suppo à ce post!

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par 65c02 Sam 20 Nov 2021, 1:28 pm

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 :
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
Allez y pour debugger cette merde  Mr. Green
65c02
65c02
Docteur *
Docteur *

Masculin Nombre de messages : 2055
Age : 53
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par drfloyd Sam 20 Nov 2021, 2:14 pm

là fait le faire exprès  MDR

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 C'EST LA VIE ! Giphy10





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 182121
Age : 54
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par xinyingho Sam 20 Nov 2021, 9:54 pm

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.
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.

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.
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.
xinyingho
xinyingho
Infirmier

Masculin Nombre de messages : 4595
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par 65c02 Dim 21 Nov 2021, 8:58 am

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
Mr. Green
65c02
65c02
Docteur *
Docteur *

Masculin Nombre de messages : 2055
Age : 53
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

F.L offre 1 suppo à ce post!

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par drfloyd Dim 21 Nov 2021, 9:24 am

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 Wink

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.

_______________________________________________________
LE GOTO C'EST LA VIE ! Giphy10





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 182121
Age : 54
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par xinyingho Dim 21 Nov 2021, 10:10 am

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.
xinyingho
xinyingho
Infirmier

Masculin Nombre de messages : 4595
Age : 44
Localisation : Noisy-le-Grand
Date d'inscription : 23/07/2018

Revenir en haut Aller en bas

LE GOTO C'EST LA VIE ! Empty Re: LE GOTO C'EST LA VIE !

Message par F.L Dim 21 Nov 2021, 5:09 pm

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 Wink

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  MDR MDR MDR
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 48
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum