( uid_21365 | 2020. 12. 29., k – 18:56 )

A Peri olyan nyelv, ahol a goto használata teljesen elfogadott. Mármint, szándékaim szerint... Én eleve hajlandó se lennék megtanulni olyan programnyelvet, amiből direkt kihagyták a goto-t. Tudom, manapság nagy divat a goto démonizálása. És magam is elismerem, csúnyán vissza lehet vele élni. Ez azonban nem indok arra, hogy eleve kihagyjuk mint lehetőséget. A villával is vissza lehet élni, mert bizonyára előfordult már hogy villával szúrtak szíven valakit, de ez nem indok a villák betiltására.

Az egyik legelső vezérlési szerkezet amit a Periben megvalósítottam, a goto volt. Mert nekem elvem hogy adjunk meg minden lehetőséget a programozónak, bízzunk benne... mármint, a nyelv bízzon benne.

A második pedig amit megvalósítottam, a szubrutinhívás volt. A "gosub", bár a Periben nem így nevezik hanem ez a mnemonikja: sbr

(ez rövidebb, és ismerős is nekem a Ti-58 korszakából. Kis nosztalgia ugye).

Máig nem értem, miért nincs valami hasonló a C nyelvben, ezt mindigis ótvar nagy hiányosságnak tartottam. Rém nehézkes, hogy minden függvény, és nincs lehetőség szubrutinhívásokra. (jó, tudom, valamiképp biztos össze lehetne hozni mindenféle furmányos kerülőutakon). A szubrutinnak épp az a nagy előnye hogy az egyes hívások során NEM különülnek el egymástól a változók, hanem ugyanazzal a változókészlettel dolgoznak a szubrutinjaink. Ez igenis előny rengetegszer.

Na most ha belegondolsz, a szubrutin se más mint egy goto, épp csak nelőtte elmenti a visszatérési címet valahová. (praktikusan valamelyik veremtárba). Tehát igazából ő is goto. A goto tehát nagyon hasznos.

Sőt ha tovább bogarásszuk a dolgot, végülis a C/C++ switch szerkezete ugyan mi más mint egy rakás goto, álcázva?

Ami példákat fentebb felsoroltál a kivételkezelésre, azokat a Periben is lehet természetesen, épp csak szerintem ez nem klasszikus értelemben vett kivételkezelés, hanem bizonyos visszatérési értékek ellenőrzése. Ilyen a C nyelvben is van.

A Perit amúgy sosem szántam „magas szintű” nyelvnek. Ezt teljesen őszintén bevallom és elismerem. Amikor készítettem, inkább olyasmi járt az eszemben hogy nekem egy olyan szkriptnyelv kéne ami valamiképp a FORTH és a C ötvözete. Igen, e kettő keveréke, de szkriptnyelvként. Nos, azt hiszem ezt sikerült elérnem.