ãã€ãŠgotoæãšããåœä»€ãéçããŠããã、70幎代ããè¡°éãã¯ããã
「æ§é åããã°ã©ãã³ã°」ãæå±ããŠããã³ã³ãã¥ãŒã¿ç§åŠè ãã®äžäººã§ãã£ããã€ã¯ã¹ãã©ã¯、1968幎ã«Go To Statement Considered Harmful(「Go To æã¯æå®³(Harmful)ãšã¿ãªããã」)ãšããåºæ¿çãªèšäºãåœéåŠäŒACMã®åŠäŒèªCommunications of the ACMã«æçš¿ã(ãã ã、æ¬äººãä»ããã¿ã€ãã«ã¯A Case Against the Goto Statementãšããç©äŸ¿ãªãã®ã§、å°ãªããšãã¿ã€ãã«ã®éæ¿ããš、ã¬ã¿ãŒãšããŠçºè¡šãæ¥ãã ããšã¯、ç·šéãæ åœããŠãããŽã£ã«ãã«ãããã®ã§ãã)
「gotoæ、ããããªãã®ã」ãšèšããå§ããã®ã¯ïŒïŒå¹Žã§、ãã€ã¯ã¹ãã©ã®ããã§ã¯ãªãã ãããä»gotoæã«ã€ããŠæèãã人ã¯å°ãªããªã£ãŠãããšæã。ããŸãgotoã䜿ãããã«ã¯ã©ãã«ãå¿ èŠã«ãªã£ãŠãã。
ãã€ã¯ã¹ãã©ãæåã ã、ãã®åã«ç©ç³ãã人ãããããã 。
1959 幎ã«éå¬ãããpre-Algolã®äŒè°ã§、ãã€ã³ã・ãŒããã¯ã¯ GOTOæã®å¿ èŠæ§ã«ã€ããŠæç¢ºã«ç念ãæããããã、åŸã« GOTO ã®è±¡åŸŽçãªå察è ãšãªã£ããšãã¬ãŒ・W・ãã€ã¯ã¹ãã©ãå«ã、åœæã¯èª°ã圌ã®çºèšã«æ³šæãæããªãã£ã。
ALGOLã¯gotoãäžèŠãããªããã¿ã«ãªã£ãŠããã。ãããŸã§ã³ã³ãã³ãã©ãªãŒã ãšãªãå»ãããã®æ¹ãæ°ã«ãªã。
https://www.tutorialspoint.com/execute_algol_online.php
ALGOLã¯ãã¡ãã§è©Šé転ã§ãã。ã³ãŒãã¯rosetta codeã§ããã€ãèªãã§ã¿ãã。
PROC gcd = (INT a, b) INT: (
IF a = 0 THEN
b
ELIF b = 0 THEN
a
ELIF a > b THEN
gcd(b, a MOD b)
ELSE
gcd(a, b MOD a)
FI
);
test:(
INT a = 33, b = 77;
printf(($x"The gcd of"g" and "g" is "gl$,a,b,gcd(a,b)));
INT c = 49865, d = 69811;
printf(($x"The gcd of"g" and "g" is "gl$,c,d,gcd(c,d)))
)ALGOL68ã§GCD(æå€§å ¬çŽæ°)ãæ±ãããµã³ãã«ã ã、wikipediaã®èª¬æéã、ååž°ã䜿ã£ãŠããé¢šãªæãããããŸã¿ãã。PROCãšããããŒã¯ãŒããããã·ãŒãžã£ãŒ(åœä»€ã®ãŸãšãŸã)ã®å®£èšã«éããªã。
ïŒïŒå¹Žä»£ã«æ§é åã®ããŒã ããã£ã
åçãåºå³¶ã«èœã¡ãŠããã®æä»£ãçµãã、å·æŠãããããªãã、ãããã æŠäºã®æä»£ã«çªå ¥ãããšãã«、å²åŠã§ã¯å®åãå«ã°ããããšã«æ§é 䞻矩ã®ããŒã ããã£ã。StructuralismãšããããŒã ã¯å²åŠã«ããã£ãŠ、ããã°ã©ã ãALGOLãç®åãã«StructuredãšããããŒã ãèµ·ãã£ã。ããã§gotoæã¯å®å䞻矩ã¿ãããªãã®ã 。
æ§é 䞻矩ãå°é ãã¯ããããš、次第ã«ãµã«ãã«ã®å®å䞻矩ã¯「äž»äœåéã®ææ³ã§ãã」ãšããŠæ¹å€ã®å¯Ÿè±¡ã«ãªã。ãšãããã¯ããŒã・ã¬ãŽã£=ã¹ãããŒã¹ã、1962幎ã®『éçã®æè』ã®æçµç« 「æŽå²ãšåŒèšŒæ³」ã«ãããŠè¡ã£ããµã«ãã«æ¹å€ã¯ççãªãã®ã§ãã£ã。
ã¹ãã²ãã£ããã°ã©ã
ãµã«ãã«ãã©ããããæ··ä¹±ãæããããããªãã、gotoã¯ã¹ãã²ãã£ããã°ã©ã ãåŒãèµ·ãããšäžè¬ã«ã¯ç¥ãããŠãã。(èŠåºå ž)
Linuxã®çã¿ã®èŠªãªãŒãã¹å çã®åé ã«ãgotoæãåºãŠãã。ç¡éã«ãŒãã®äžçãžãããã。
颿°åã®éç
颿°åã¯å€ãããããã、ãã·ã³ã¹ããã¯ã®åäžã«ããã ãã¶æ®åããŠãã。ãªãã¶ãŒããŒã代衚ããMVCãªã©ã®ãã¶ã€ã³ãã¿ãŒã³ããã€ãŠã®FORTRANãCOBOLã«ãªãã€ã€ããã®ãããããªã。。。
Gotoæã®è¡°éã®æŽç
ããã°ã©ã ã®å¯èªæ§ã®äœäž:
Gotoæã¯、ããã°ã©ã ã®ãããŒã远跡ããã®ãé£ãã、å¯èªæ§ãèããäœäžãããŸã。ã³ãŒããã¹ãã²ããã£åã、ãã°ã®çºèŠãä¿®æ£ãå°é£ã«ãªããŸã。
æ§é åããã°ã©ãã³ã°ã®å°é :
1970幎代ã«ãšãã¬ãŒ・ãã€ã¯ã¹ãã©ã「Gotoæã®äœ¿çšã¯æå®³ã§ãã」ãšè¿°ã¹、æ§é åããã°ã©ãã³ã°ãåºãŸããŸãã。ãã®ããã°ã©ãã³ã°ãã©ãã€ã ã¯、ã«ãŒããæ¡ä»¶åå²ãªã©ã®å¶åŸ¡æ§é ã䜿ãããšã§、ã³ãŒãã®æçæ§ãšä¿å®æ§ãåäžãããŸãã。
èšèªã®é²å:
è¿ä»£çãªããã°ã©ãã³ã°èšèª(äŸ:C、Java、Pythonãªã©)ã¯、Gotoæã䜿çšããã«å¶åŸ¡ãããŒã管çããããã®é«åºŠãªæ§é ãæäŸããŠããŸã。ããã«ãã、Gotoæã®å¿ èŠæ§ãæžå°ããŸãã。
ã¡ã³ããã³ã¹ã®å®¹æã:
Gotoæãé¿ããããšã§、ã³ãŒãã®ã¡ã³ããã³ã¹ã容æã«ãªã、ããã°ã©ã ã®å質ãåäžããŸã。ç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯、æ§é åãããã³ãŒããããŒã ã§ã®ååäœæ¥ãåæ»ã«ããŸã。
ifæã®è¡°éã·ããªãª
颿°åããã°ã©ãã³ã°ã®æ®å:
颿°åããã°ã©ãã³ã°ã§ã¯、ifæã®ä»£ããã«ãã¿ãŒã³ãããã³ã°ãé«é颿°ã䜿çšããããšãæšå¥šãããŸã。ããã«ãã、ã³ãŒãã®æç¢ºããšäºæž¬å¯èœæ§ãåäžããŸã。
ä»£æ¿æ§é ã®æ¡çš:
äžé æŒç®å(æ¡ä»¶æŒç®å)ãã¹ã€ããæ、ããã«ã¯ãããã³ã°æ§æ(äŸ:RustãScalaã®matchæ)ãªã©、ifæã®ä»£æ¿ãšãªãå¶åŸ¡æ§é ãåºãŸãã€ã€ãããŸã。
ãã¶ã€ã³ãã¿ãŒã³ã®æŽ»çš:
ç¶æ ãã¿ãŒã³ãã¹ãã©ããžãŒãã¿ãŒã³ãªã©ã®ãã¶ã€ã³ãã¿ãŒã³ã䜿çšããããšã§、æ¡ä»¶åå²ããªããžã§ã¯ãæåçã«åŠçããããšãå¯èœã«ãªããŸã。ããã«ãã、ifæãæžãã、ã³ãŒãã®ä¿å®æ§ãåäžãããããšãã§ããŸã。
ãã¡ã€ã³ç¹åèšèª(DSL)ã®å©çš:
ç¹å®ã®ã¿ã¹ã¯ããã¡ã€ã³ã«ç¹åããDSLã§ã¯、æ¡ä»¶åå²ãç°¡æœã«è¡šçŸã§ããæ§æãçšæãããŠããããšãå€ã、ifæã®äœ¿çšãäžèŠã«ãªãå ŽåããããŸã。
ãŸãšã
Gotoæã®è¡°éã¯、ããã°ã©ã ã®å¯èªæ§ãšä¿å®æ§ãéèŠããæ§é åããã°ã©ãã³ã°ã®æ®åã«ãããã®ã§ãã、èšèªã®é²åã«ãã£ãŠããããããŸãã。äžæ¹、ifæã®è¡°éã·ããªãªã¯、颿°åããã°ã©ãã³ã°ã®æ®åãä»£æ¿æ§é ã®æ¡çš、ãã¶ã€ã³ãã¿ãŒã³ã®æŽ»çšãªã©ã«ãã£ãŠé²è¡ããå¯èœæ§ããããŸã。ãããã®é²åã¯、ããæç¢ºã§ä¿å®ããããã³ãŒããäœæããããã®ãã®ã§ã。