COW (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

COW è un linguaggio di programmazione esoterico, creato all'inizio del 2003 da Alex van Oostenrijk e Martijn van Beek. Esso utilizza un set di undici istruzioni, composta dalle lettere M e O. Le istruzioni del linguaggio sono case-sensitive.

Struttura del linguaggio[modifica | modifica wikitesto]

Il linguaggio è strutturato come la macchina di Turing (Turing equivalente): esso fornisce un vettore di numeri interi e delle istruzioni per spostarsi e modificare i valori contenuti. Inoltre mette a disposizione un registro temporaneo in grado di contenere un numero intero.

Come condizione iniziale avremo un puntatore che punta alla prima cella: la posizione 0, e un numero potenzialmente infinito di celle. All'interno di ogni cella è contenuto inizialmente il valore 0.

Istruzioni[modifica | modifica wikitesto]

Le istruzioni del linguaggio sono undici, ciascuna consiste in tre caratteri e sono:

Codice Istruzione Significato
0 moo Questo comando è connesso al comando MOO. Quando viene incontrato questa istruzione durante la normale esecuzione, l'interprete ricerca il comando MOO senza eseguire le istruzioni che incontra, ed esegue l'istruzione successiva al MOO trovato. (Vedi MOO)
1 moO Incrementa il puntatore
2 mOo Decrementa il puntatore
3 mOO Esegue l'istruzione con codice dell'istruzione uguale al contenuto della cella corrente. Se la cella contiene il valore 3 è non valido, perché si incorrerebbe in un ciclo infinito.
4 Moo Se il valore della cella corrente è 0, allora legge un singolo carattere ASCII dalla tastiera (più precisamente standard input) e lo salva nella cella corrente. Se invece la cella non contiene 0, allora stampa a video (standard output) il carattere ASCII corrispondente.
5 MoO Incrementa il valore della cella di 1
6 MOo Decrementa il valore della cella di 1

(le istruzioni 5 e 6 prima erano invertite, cfr pagina del creatore di COW)

7 MOO Se il contenuto della cella è 0, allora torna alla chiamata effettuata con il comando moo. Se invece il valore della cella non è 0, allora continua con l'istruzione successiva.
8 OOO Imposta il valore della cella a 0
9 MMM Se non c'è nessun valore nel registro, allora copia al suo interno il valore corrente della cella. Se invece c'è un valore, incolla tale valore nella cella corrente e svuota il registro.
10 OOM Stampa a video (più precisamente nello standard output) il valore della cella come numero intero
11 oom Legge un numero intero da tastiera (più precisamente dallo standard input) e lo salva nella cella corrente

Esempi[modifica | modifica wikitesto]

MoO moO MoO mOo MOO OOM MMM moO moO MMM mOo mOo moO MMM mOo MmM mom moO MOO MOo mOo MoO moO moo mOo mOo moo

Collegamenti esterni[modifica | modifica wikitesto]