Nem is olyan rossz dolog, hogy úgy döntöttem, nem publikálom a nyelvet amíg kész nincs a doksi fordítása...
Mert ezzel is láthatóan úgy vagyok mint a regényeimmel: mikor már azt mondom: "kész", egy idő után kiderül hogy még ezt-azt beleírhatok.
Most itt a programnyelvemnél például, nem hazudtam, tényleg kész van, nem kezdtem újra... de ettől még KIEGÉSZÍTETTEM egy remek feature-vel, ami NEM töri meg a kompatibilitást. Egyszerűen arról van szó, hogy alapesetben amikor indexelek egy stringet (vagy akármit...) akkor a nyelvem nem végez indexhatárellenőrzést. Az lassítaná a futást ugye, és a legtöbbször felesleges is. Különben is itt a „filozófia” az, hogy vigyázzon a programozó, a programnyelv (interpreter) dolga a progi minél gyorsabb lefuttatása és nem az okoskodás.
Igenám, de aztán eszembe jutott valami. Néha az index ellenőrzése mégiscsak szükséges, és bár ez eddig is megoldható volt a nyelvemben, de ha az eddig rendelkezésre álló eszközökkel végzem, az lassú. Mármint a natív kódhoz képest lassú...
Szóval belevettem a safe kulcsszót. Minden utasítást ami indexeléssel kapcsolatos (vagy legalábbis majdnem mindet) ki lehet bővíteni ezzel. Ekkor ellenőrzi az indexhatárt... De, és itt jön a nagy poén, ekkor nem az történik hogy túllépésnél abortál, hanem inkább olyasmi történik ami a „kivételdobás”-nak felel meg leginkább, ha hasonlatot keresek rá!
Tehát:
mystring[@myindex]
a string megfelelő elemét a stack tetejére helyezi. Nem vizsgálja, a myindex értéke túllépi-e a string aktuális hosszát.
safe mystring[@myindex] §safelabel
Ez ugyanúgy a stack tetejére helyezi a string megfelelő elemét, DE előtte megvizsgálja az indexet. Ha úgy találja az index értéke invalid, akkor mégse helyez a stack tetejére semmit, hanem elugrik a §safelabel címkére.
Azaz erre a helyre ami így van megjelölve:
safelabel:
Természetesen a címke neve nem muszáj hogy safelabel legyen, lehet akármi. A paragrafusjel szerepe csak annyi hogy a Peri nyelvben minden címke amikor nem megjelöl egy helyet hanem hivatkozunk rá, e prefixummal kell bevezettessék.
Rengeteg helyen használható a safe kulcsszó a nyelvemben, de nem untatlak benneteket a többi lehetőség ismertetésével. Csak azt akartam leírni, hogy szóval VAN lehetőség a biztonságos programozásra (is) a nyelvemben immár! És ez a safe megoldás messze gyorsabb mint ha a Peri alapeszközeivel vizsgálgatnánk az ilyesmit, hiszen natív sebességgel fut az indexellenőrzés, a kód is áttekinthetőbb... Szóval mélységesen és szupermagasan elégedett vagyok most magammal!
Komolyan, lehet hogy 2020 a Covid miatt sokaknak egy szörnyű év volt, de számomra a legpompásabb sikerévek egyike, rengeteg szempontból!