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. | Instructie | Omschrijving |
---|---|---|
0 | moo | Dit 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). |
1 | mOo | Verplaatst de huidige geheugenpositie één blok terug. |
2 | moO | Verplaatst de huidige geheugenpositie één blok vooruit. |
3 | mOO | Voert 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. |
4 | Moo | Als 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. |
5 | MOo | Verlaagt de waarde van het huidige geheugenblok met 1. |
6 | MoO | Verhoogt de waarde van het huidige geheugenblok met 1. |
7 | MOO | Als 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 |
8 | OOO | Zet de waarde van het huidige geheugenblok op 0. |
9 | MMM | Als 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. |
10 | OOM | Druk de waarde van het huidige geheugenblok af naar STDOUT als een geheel getal. |
11 | oom | Lees een geheel getal van STDIN en plaats het in het huidige geheugenblok. |
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.

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.
