1

Ce matin encore, j'avais le nez dans un livre sur le Java et je vous laisse imaginer les quelques lignes qui dénigrent cette instruction. Sous pretexte qu'en langage 'structuré' il faut pas l"utiliser de toute façon elle existe pas.

C'est sur qu'un break, ou un continue c'est pas un goto tongue

C'est quand même grave de vouloir retirer une instruction d'un microprocesseur car soit disant cela nuit a la structure (Que ce superbe langage a bien sur.... tongue )

Cela me fait penser a plusieurs fois ou vous voulez rajouter cette idée de génie dans votre programmme et vous dites faut que je reecrive toute la routine, car il faut que je restructure tout car on m'a retiré mon goto.

Donc maintenant je suis membre du front de libération du goto !!!

J'aime programmé car cela nous ouvre une voie de création plutot gigantesque, alors se faire restreindre mes libertés de création car certains rigolos qui se l'autorisent (A coup de break et continue) nous interdisent cela, allez vous faire voir !!


GT Goto !!! top

P.S. : Pour Folco je traduis : Vive le Bra !!! \o/ et son petit frere bra.s bien sur !!
avatar
Accrochez vous ca va être Cerebral !!

2

-

3

mais java n'est pas un microprocesseur tongue

bra 0xB16B00B5 FTW!

4

Evidemment que j'utilise bra en assembleur, ceci dit, c'est son emploi dans la programmatino structurée qui pose question. Pour moi, l'approche et la logique sont différentes, donc c'est pas comparable.

5

Pourtant, c'est parfois bien utile. D'ailleurs, si elle existe, c'est pour être utilisée, je doute que les concepteurs du langage ont créé une instruction uniquement pour ne pas l'utiliser. Ça n'empêche pas qu'elle ne doit pas être utilisée n'importe comment.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

c'est ultra utile pour optimiser des tests de cas d'erreur sans dupliquer des tonnes de code.

7

Tout à fait, je l'utilise, je dis simplement que ça peut poser question, alors qu'en assembleur c'est pas le cas vu que c'est incontournable.

8

On demande pas grand chose, Libérez le Goto !!
Pourquoi l'interdire ? Il existe il est la. Nous interdire une instruction pour nous forcer a programmé autrement. Nous sommes libre, nous interdire le goto c'est restreindre notre liberté, c'est vouloir faire disparaitre une partie de notre passé !!

Ils ont qu'a le libérez et a nous le choix de l'utilisé ou pas !!!

Libérez le Goto, Libérez le Goto !!

Deuxième loi de Small :

En vérité, on peut écrire du bon ou du mauvais code dans n'importe quel langage. On peut appliquer des règles de structure dans n'importe quel langage.

Troisième loi de Small :
Tout programmeur assez stupide pour s'imposer une camisole de force la mérite amplement.


Pour ceux qui connaissent pas Dave Small, il avait dévéloppé un émulateur Mac pour Atari ( http://en.wikipedia.org/wiki/Spectre_GCR ). Il a écrit plein de chouette article, dont celui la (Ou j'ai recopié ces lois) :

http://collection.sasfepu.free.fr/atari/dave.small/pascal.html

Donc ceux qui veulent porté une camisole de force, faites vous plaisir mais moi je veux ma liberté !!!

GT Libre !!
avatar
Accrochez vous ca va être Cerebral !!

9

GT Turbo (./8) :
Tout programmeur assez stupide pour s'imposer une camisole de force la mérite amplement.

Oué, alors faudrait peut-être un peu préciser, parce qu'entre s'imposer une camisole, et programmer à l'arrache et bordéliquement, ya peut-être un juste milieu qui s'appelle "conventions"

10

Tout dépend toujours du programmeur, loi No 2 smile

Moi je demande qu'une chose un peux de liberté.

Tu va me dire que tu a jamais codé un truc comme un gorret ? wink Tous les programmeurs l'on fait (Certains continu (La je parle de moi wink ))

Souvent tu va vite codé comme un goujat, pour essayer un truc, voire si cela marche, et ensuite ranger ton code.

Car on a beau posé tout sur papier avant, au moment de l'écriture du code même, plein de choses vont pas coller, plein de choses vont changer, donc quand tu regarde ton papier de départ tu te dis, a part la finalité il y a plus grand chose qui colle.



GT smile
avatar
Accrochez vous ca va être Cerebral !!

11

12

GT Turbo (./1) :
Ce matin encore, j'avais le nez dans un livre sur le Java et je vous laisse imaginer les quelques lignes qui dénigrent cette instruction. Sous pretexte qu'en langage 'structuré' il faut pas l"utiliser de toute façon elle existe pas.

+1, le Java sux, et celle-ci est une des raisons.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

J'ai qu'une seule chose à dire: http://msdn.microsoft.com/en-us/library/13940fs2.aspx #troll#
tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

14

GT Turbo (./1) :
C'est sur qu'un break, ou un continue c'est pas un goto tongue.gif?33

Un break ou un continue agit sur la boucle dans laquelle on se trouve ou sur l'un de ses parents. C'est une sortie d'un empilement, en lisant l'instruction on sait déjà où l'on atterrit.
Le goto, c'est l'équivalent de la téléportation dans la lecture du code. On en cherche sa destination, et en tombant sur son label on se demande combien de goto atterrissent sur lui.
Un peu comme une fonction séparée, à part que cette dernière est plus lisible.

Il y a des codes où le goto est indispensable, bien sûr. Mais la raison de chercher à bannir le goto autant que possible vient du besoin de facilité de lecture du code. C'est une convention destinée à partager les sources, si tu fais ton code dans ton coin, tu peux bien boucler jeter toutes les structures de boucles et les remplacer par des tas de goto.
On peut trouver d'autres exemples d'éléments parfaitement utilisables mais fortement déconseillés, comme les if sans accolades à une instruction ou les conditions ternaires imbriquées.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

15

1er cas : eek au secours.
2eme cas : c'est gérable dans la plupart des langages qui interdisent le goto comme Java, Javascript ou Rust via les labels de bloc.

Personnellement je n'ai rien contre le goto, mais les seules fois ou j'en ai vraiment eu besoin en Java, je l'ai remplacé sans soucis par un bloc avec label.
avatar

16

C'est très utile pourtant, les goto dans les switches. J'en utilise souvent en C++ (et d'ailleurs c'est dommage que le C/C++ ne permet pas goto case 1;, on est obligés de rajouter un label case_1:, mais sinon ça marche très bien).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

Merci GT pour cette "unpopular opinion" que je ne cesse de répéter depuis des années à mes ptits camarades qui pensent que seul l'objet (ou pire le java) ne vaut le coup!
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

18

Oui, une seule réponse pour ces bornés d'esprit:
goto hell;
tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

20

gni

21

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

22

Kazushige Gotō (後藤和茂, Gotō Kazushige?) is a software engineer specializing in high performance, hand-written, machine code. He was a research associate at the Texas Advanced Computing Center at the University of Texas at Austin when he famously hand-optimized assembly routines for supercomputing and PC platforms that outperform the best compiler generated code.
Tiens, c'est un genre de Folco japonais, ce M. Goto cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

23

miam grin

24

(Comme quoi le goto c'est pas si mal ^^)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

25

Pour moi le but du Goto est en aucun cas de rendre illisible mon code, mais combien de fois juste un petit saut peux t'éviter bien de retournement de morceaux de programme, de modification de structure.

Surtout que si c'est pour des raisons de lisibilité, je peux te donner des exemples de code (en assembleur) ou un label et un branchement seront beaucoup plus lisible / comprehensible qu'une version sans saut.

Un label si tu le baptise proprement peux apporter une belle aide a la lisibilité / compréhension d'un code.

Les personnes qui font du Java, je comprends que vous arrivez a vous en passez, vous coupez cotre code en si petit morceaux que c'est dure de placer un petit saut. C'est pas un reproche, je suis pas la pour critiqué tel ou tel langage, moi pour sauver le Goto !!

Qu'on nous rende notre Goto, et que ceux qui veulent l'utiliser l'utilise et l'inverse.

Moi je comprends pas qu'on puisse nous le retirer, ou faire des critiques méchantes, car aucun programme ne pourrait pas fonctionner sans aucun saut, car même si votre programme le fait pas, une fois compilé voire interprété, je suis sur qu'il le fait. Donc nous interdire de faire une chose que les autres ont le droit de faire, c'est pas cool !!


#JesuisGoto....


GoTo to the bugs !!!
avatar
Accrochez vous ca va être Cerebral !!

26

GT Turbo (./26) :
our moi le but du Goto est en aucun cas de rendre illisible mon code
Ouais mais bon, ton code à toi, il est déjà illisible wink

• Zerosquare aime bien taquiner GT
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

27

Y'a un cas ou personnellement, j'aime bie utiliser goto, c'est pour écrire une fonction de traitement de texte type échappement de caractères (ou remplacement). En général on se trouve face à deux cas: soit y'a rien à modifier, soit y'a un truc à modifier, donc un cas où idéalement on n'alloue rien, soit y'a quelque chose à modifier, donc un cas où on alloue forcément au moins un nouveau buffer.

Y'a plusieurs façons d'écrire le code, mais par exemple:public static string DoubleQuotes(string text, char quote) { int i; for (i = 0; i < text.Length; ++i) if (text[i] == quote) goto DoDoubleQuotes; return text; DoDoubleQuotes: ; var sb = new StringBuilder(text.Length + 2); // Chiffre magique pris presque au pif en espérant que ça marche bien la plupart du temps sb.Append(text, 0, ++i).Append(quote); int start = i; for (; i < text.Length; ++i) if (text[i] == quote) sb.Append(text, start, -start + (start = i + 1)).Append(quote); if (i > start) sb.Append(text, start, i - start); return sb.ToString(); }
Je met la version sans goto histoire de vous ménager un peu, mais j'aime moins: (Entre autres parce que ça fait un appel de méthode en plus et qu'on a pas souvent la chance d'avoir des optimisations tail call)public static string DoubleQuotes(string text, char quote) { for (int i = 0; i < text.Length; ++i) if (text[i] == quote) return ReallyDoubleQuotes(text, quote, i); return text; } private static string ReallyDoubleQuotes(string text, char quote, int i) { var sb = new StringBuilder(text.Length + 2); // Chiffre magique pris presque au pif en espérant que ça marche bien la plupart du temps sb.Append(text, 0, ++i).Append(quote); int start = i; for (; i < text.Length; ++i) if (text[i] == quote) sb.Append(text, start, -start + (start = i + 1)).Append(quote); if (i > start) sb.Append(text, start, i - start); return sb.ToString(); }Et là y'a qu'une seule variable pour représenter l'état du parsing car c'est un cas simple (donc ça passe bien avec deux méthodes), mais c'est pas forcément toujours le cas.

(PS: J'ai écrit ce code sans le compiler ou le tester donc je garantis pas ne pas m'être foiré sur les calculs de plage de caractères)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

28

GT: Rassure toi, l' "asm virtuel" genere par le code java utilise bien des jumps, lui grin

29

J'ai peut-être lu trop vite mais pourquoi tu fais
for ( ) {
   if ( c ) {
      goto lbl
   }
   return r2 ;

  lbl:
   return r1 ;
}



au lieu de :
for ( ) {
   if ( c ) {
      return r1 ;
   }
   return r2 ;
}


confus

30

Lu trop vite, je pense grin

La structure, c'est { for () { if () { return } } return } ^^
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes