Wat is Koe en hoe werkt deze functie?

Wat is Koe?

Koe of Cow behoort tot de zogenaamde esoterische programmeertalen. Het werd ontwikkeld in 2003 door Sean Heber op basis van Brainf**k.

Een opvallend kenmerk zijn de commando’s die bestaan uit de letters M, m, O en o – Moo, moo, moO, enzovoort.

Koe bestaat uit een voortdurende reeks ‘moo’-instructies, die zijn opgeslagen in een programmamemory en continu worden verwerkt, te beginnen bij de eerste instructie. Gegevens worden opgeslagen in een datamemory en verwerkt met een register.

Lees meer over Koe/Cow op Esolangs (en)

Commando’s

Nr.InstructieOmschrijving
0mooDit commando is verbonden met het MOO-commando. Wanneer het tijdens normale uitvoering wordt aangetroffen, doorzoekt het de programmacode in omgekeerde volgorde op zoek naar een overeenkomend MOO-commando en begint opnieuw met uitvoeren vanaf het gevonden MOO-commando. Bij het zoeken wordt de instructie overgeslagen die er onmiddellijk voor staat (zie MOO).
1mOoVerplaatst de huidige geheugenpositie één blok terug.
2moOVerplaatst de huidige geheugenpositie één blok vooruit.
3mOOVoert de waarde in het huidige geheugenblok uit alsof het een instructie is. Het uitgevoerde commando is gebaseerd op de instructiecode-waarde (bijvoorbeeld, als het huidige geheugenblok een 2 bevat, wordt het moO-commando uitgevoerd). Een ongeldig commando stopt het lopende programma. Waarde 3 is ongeldig omdat dit een oneindige lus zou veroorzaken.
4MooAls het huidige geheugenblok een 0 bevat, lees dan een enkel ASCII-teken van STDIN en sla het op in het huidige geheugenblok. Als het huidige geheugenblok niet 0 is, druk dan het ASCII-teken af dat overeenkomt met de waarde in het huidige geheugenblok naar STDOUT.
5MOoVerlaagt de waarde van het huidige geheugenblok met 1.
6MoOVerhoogt de waarde van het huidige geheugenblok met 1.
7MOOAls de waarde van het huidige geheugenblok 0 is, sla dan het volgende commando over en hervat de uitvoering na het volgende overeenkomende ‘moo’-commando. Als de waarde van het huidige geheugenblok niet 0 is, ga dan verder met het volgende commando. Merk op dat het feit dat het het direct daaropvolgende commando overslaat interessante gevolgen heeft voor waar het overeenkomende ‘moo’-commando werkelijk is. Bijvoorbeeld, het volgende zal het tweede en niet het eerste ‘moo’ matchen: OOO MOO moo moo
8OOOZet de waarde van het huidige geheugenblok op 0.
9MMMAls er geen huidige waarde in het register is, kopieer dan de waarde van het huidige geheugenblok. Als er wel een waarde in het register is, plak dan die waarde in het huidige geheugenblok en wis het register.
10OOMDruk de waarde van het huidige geheugenblok af naar STDOUT als een geheel getal.
11oomLees een geheel getal van STDIN en plaats het in het huidige geheugenblok.
Overzicht van commando’s van de programmeertaal Koe in GC Wizard

De functie Koe

Bovenaan het scherm staat een schuifknop waarmee je kunt kiezen tussen Vertaler en Generator. Met de vertaler kun je een programmacode uitvoeren en met generator kun je een programma maken.

Vertaler

Als je ‘vertaler’ kiest verschijnen er twee tekstvelden.

In het eerste tekstveld plaats je het programma of de broncode.

Als er in het programma gevraagd wordt om invoer, plaats je hier de input voor het programma.

Onder Uitvoer zal GC Wizard het resultaat plaatsen van de uitvoer van het Koe programma.

Schermafdruk koe vertaler in GC Wizard

Generator

Als je ‘generator’ kiest verschijnt er één tekstveld waar je de tekst invoert die je als resultaat van de uitvoer van het programma wilt krijgen.

Onder Uitvoer zal GC Wizard de broncode tonen die na uitvoer de tekst uit het tekstveld als resultaat zal tonen.  

Schermafdruk koe generator in GC Wizard