COW (linguaggio di programmazione)
Da Wikipedia, l'enciclopedia libera.
![]() |
«The COW programming language was designed with the bovine in mind.»
|
(Alex van Oostenrijk e Martijn van Beek)
|
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. Questo linguaggio è case-sensitive, da come si può osservare dal'elenco delle istruzioni.
Indice |
[modifica] Struttura del linguaggio
Il linguaggio strutturato come la macchina di Turing: esso prevede un vettore di numeri interi e delle istruzioni per spostarsi e modificare i valori contenuti. Inoltre si prevedere un registro temporaneo per contenere un 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 contiene il valore 0.
[modifica] Istruzioni
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 (stadard output) il carattere ASCII corrispondente. |
5 | MOo | Incrementa il valore della cella di 1 |
6 | MoO | Decrementa il valore della cella di 1 |
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 | Setta 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 |
[modifica] Esempi
[modifica] Serie di Fibbonacci
MoO moO MoO mOo
[[ ciclo principale ]]
MOO
[[ stampa del primo numero ]]
OOM
[[ copia temporanea del primo numero ]]
MMM moO moO MMM mOo mOo
[[ salvataggio del secondo numero nella prima posizione ]]
moO MMM mOo MMM
[[ spostamento nel numero temporaneo ]]
moO moO
[[ uso del numero temporaneo e salvataggio del numero secondario nel ciclo ]]
MOO MOo mOo MoO moO moo mOo mOo moo