( haroldking | 2020. 03. 25., sze - 02:12 )

És megint egy új verzió! Ez már úgy körülbelül a végleges változat, azt hiszem:

tick sto clock1
#d
zero#d p one#d n one#d s
3000000 {| @s+/- @n++++ / sum p |}
4. prd p
tick @clock1 #g -
."idő = " print ." tick\n"
."Pí közelítés = " @p #d printnl
end
{ „p” /* összegváltozó */ }
{ „n” /* nevező */ }
{ „s” /* számláló */ }
{ „clock1” }

A lényeg abban a sorban van ami a 3000000 számmal kezdődik. A futási idő mindössze 52354 tick, ami azt jelenti hogy mindössze 4.288-szor vagyok lassabb mint a natív C kód... Na ezt múlja felül bármi más szkriptnyelv!

A Python meg eszerint a kanyarban sincs hozzám képest, mert 17.35-ször lassabb mint a Furor...

Jó, ismétlem és elismerem, ez a bődületes sebesség annak köszönhető, hogy e program szinte másból se áll csak egy ciklusból, ami a nyelvem különös erőssége, s a ciklusvég az utasítások jelentős százalékát teszi ki hiszen a cikluson belül is alig van utasítás. Más tesztpéldákban már sokkal kevésbé lesz ilyen versenyló a nyelvem. AZOKBAN IS GYORS LESZ, igen, nem kell szégyenkeznie... de nem lesz ENNYIRE gyors!

Kis magyarázat:

@s+/-

Ez az s változó tartalmát beteszi a veremtárba, majd a változó előjelét megváltoztatja. Mármint azon a tárhelyen változtatja meg ahol a változó van, nem a veremtárba tett tartalmon...

@n++++

Ez hasonló dolgot csinál, csak épp kettővel inkrementál.

Természetesen létezik a ++ és a -- meg a ---- postfix operátor is, melyek értelme gondolom kiderül ezek után a jelölésből...

Tervezem még több más teszt bemutatását is, de pici türelmeteket kérem, mert ezzel nagyon előreszaladtam mintegy közkívánatra. Egy csomó dolog még nincs implementálva ami alapelvárás. Például a compiler semmi hibát nem jelez ha valami olyan mnemonik van a kódban amit nem tud felismerni. Simán bennehagyja. És aztán az interpreter azt az izémizét valami utasítás pointerének értelmezi, aminek segfault a következménye az Álmoskönyv szerint... Ez a működés amúgy nem hiba, nem én vagyok a hülye hogy erre nem gondoltam, csak NEM VOLT MÉG IDŐM ezt az ellenőrzést beletenni a compilerbe, ma akartam megcsinálni de volt tőletek ez az igény hogy mutassak már valami értelmes programot más programnyelvek példáival összevetve... szóval ezt előrevettem. De van egy csomó melóm még a nyelvvel látjátok ami alapvető fontosságú de nem ilyen látványos, mégis meg kell csinálni, s idő kell hozzá... Szóval higgyétek el nagyon szépen kérlek benneteket én is boldogabb lennék ha több ilyen tesztprogramot írhatnék, hiszen EZ AZ IGAZI ÉLVEZET, igen, nekem is, mert ez látványos, meg mert lehet összehasonlítgatni stb... De muszáj egy csomó mindent még megcsinálnom, mert egyelőre a mostani állapotában a nyelvem olyan mint egy féllábú ember aki fenékberúgó versenyen indul...

Amúgy nem szándékozom telezsúfolni ellenőrző részekkel. Engem igazán nem zavar ha gyakran fut majd bele segfaultba. Elvem ugyanaz mint a FORTH esetén: a programozó dolga hogy vigyázzon...

De, azért akármennyre is ez az elvem, egy minimális kis figyelem még szerintem is elvárható a compiler részéről, szóval nálam is van azért egy abszolút minimum, s ezt bele akarom tenni. De van még egy rakás más dolog ezen felül is, szóval most hogy ez a teszt megvolt, egy kis türelmet kérek, ez nem azt jelenti hogy leáll a fejlesztés, nyugi...