Sortering i STOS

Att programmera i STOS-basic är en kluven upplevelse för mig. Kommen från GfA-basic är man bortskämd med att slippa radnummer vilket gör STOS, renumreringsfunktion till trots, en krångligare upplevelse än nödvändigt. Likväl tycker jag om att snoka runt i STOS för trots att det är en slö Basic har den smarta och användbara kommandon. Det gör den kul att experimentera i.

Jag har även fått fatt på STOS Compiler som jag nu testat ett par kvällar. Vad kan det prestera egentligen? Blir det någon skillnad värd namnet? Kompilerns uppgift är att ta basic-koden och göra den mer maskinnära med målet att den kommer att exekvera snabbare. För att testa grävde jag fram en gammal artikel om sortering ur en gammal Commodore User. Den bestod av ett par olika sorteringsalgoritmer gjorda för Commodore 64-basic, som jag utan egentligen någon som helst modifikation matade in i STOS. Efter provkörning av fyra olika algoritmer kompilerade jag de programsnuttarna och körde dem igen.

De fyra algoritmer jag provat hittills har varit Bubble Sort (mååånga jämförelser), Shell-Metzner (som delar upp talmängden och jämför lite större sjok, Heapsort (sammalunda) samt Quicksort (som använder ett par variabler och jonglerar med). Talmängden jag sorterat har varit 100 heltal.

I Bubble Sort jämförs varje tal med det intill och flyttas vid behov. Det är två nästlade for-next-loopar som medför många tester och därvidlag blir det en långsam lösning. De andra var betydligt smartare. Sistnämnda är än så länge t o m för smart för mig. Jag har inte riktigt lyckats utröna hur den hanterar talen. Än.

Tabellen ser ut som följer. Tidsåtgången i vanlig basic-kod respektive kompilerad kod visar på en imponerande skillnad. I Bubble Sort exekveras den kompilerade koden sex gånger snabbare än i Basic och när det kommer till Quicksort så exekveras koden på bara en åttondel av tiden.

ALGORITM       | Basic     | compiled  |
----------------------------------------
Bubble Sort    |    4.58 s |    0.76 s |
----------------------------------------
Shell-Metzner  |    1.48 s |    0.18 s |
----------------------------------------
Heapsort       |    1.54 s |    0.20 s |
----------------------------------------
Quicksort      |    0.98 s |    0.12 s |
----------------------------------------

I artikeln fanns ytterligare en algoritm som jag inte angriper förrän jag till fullo förstår hur Quicksort hanterar sorteringen. Rapport om det kommer sannolikt i framtiden.

2 svar på ”Sortering i STOS

  1. Jag knappade STOS *intensivt* fram tills någon gång 92, därefter har det fallit i glömska, och man vandrade vidare med assembler, GFA, C.

    De sista åren har jag sneglat på STOS och tänker – what if. Nu 25 år senare inser jag hur bra funktionalitet som finns i grejerna, och hur skruvade grejer man skulle kunna bygga med kalkylerade gotos! Uppenbarligen är det ju lite klös i kompilatorn också 🙂

Lämna ett svar

Din e-postadress kommer inte publiceras.