Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

Whitespace

Da Wikipedia, l'enciclopedia libera.

IlWhitespace è unlinguaggio di programmazione esoterico e minimalista, creato nel2003 daEdwin Brady eChris Morris. Il nome deriva dal fatto che il linguaggio utilizza solo spazi bianchi, tabulazioni e ritorni a capo come elementi sintattici. Ogni carattere diverso da questi tre viene ignorato e considerato come un commento.

Whitespace divenne famoso quando il suo inventore lo descrisse suSlashdot il primo di Aprile 2003; in questo modo gli utenti pensarono erroneamente a unPesce d'aprile.

Istruzioni

[modifica |modifica wikitesto]

Whitespace comprende 29 istruzioni, divise in 5 categorie; prima di ogni istruzione bisogna inserire un identificatore che indica a quale categoria appartiene l'istruzione, dettoInstruction Modification Parameter o IMP. Alcune istruzioni richiedono un parametro, che può essere un numero o un'etichetta.

I numeri possono essere di qualsiasi lunghezza e sono rappresentati in formato binario tramite una sequenza di [Spazio] e [Tab], terminata con [Ritorno a capo]. Il carattere [Spazio] indica lo 0, il [Tab] indica l'1. Il primo bit del numero indica il segno di quest'ultimo, 0 per positivo e 1 per negativo.

Un'etichetta è invece indicata con una sequenza di [Spazio] e [Tab] a piacere, terminata con [Ritorno a capo]; ogni nome di etichetta deve essere diverso da tutti gli altri.

Gli IMP e le categorie associate ad essi sono:

IMPSignificato
[Spazio]Manipolazione dello Stack
[Tab][Spazio]Operazioni aritmetiche
[Tab][Tab]Accesso casuale alla memoria
[Ritorno a capo]Controllo di flusso
[Tab][Ritorno a capo]I/O di periferiche

Manipolazione dello stack

[modifica |modifica wikitesto]

Whitespace è basato su unostack di dati, accessibile tramite quattro istruzioni distinte dall'IMP [Spazio]:

IstruzioneSignificato
[Spazio]Mette il numero passato come parametro in cima allo stack
[Ritorno a capo][Spazio]Duplica il primo elemento dello stack
[Tab][Spazio]Copia l'n-esimo elemento dello stack (n è passato come parametro) in cima allo stack
[Ritorno a capo][Tab]Scambia i primi due elementi dello stack
[Ritorno a capo][Ritorno a capo]Elimina il primo elemento dello stack
[Tab][Ritorno a capo]Spinge n elementi fuori dallo stack (n è passato come parametro), mantenendo intatto il primo elemento

Operazioni aritmetiche

[modifica |modifica wikitesto]

Le istruzioni aritmetiche, distinte dall'IMP [Tab][Spazio], operano sui primi due elementi dello stack (il primo è considerato essere a sinistra dell'operatore, il secondo a destra), considerandoli numeri interi, e sostituiscono questi due valori con il risultato dell'operazione:

IstruzioneSignificato
[Spazio][Spazio]Addizione
[Spazio][Tab]Sottrazione
[Spazio][Ritorno a capo]Moltiplicazione
[Tab][Spazio]Divisione intera
[Tab][Tab]Modulo della divisione intera

Accesso casuale alla memoria

[modifica |modifica wikitesto]

Le istruzioni di accesso casuale alla memoria, contraddistinte dall'IMP [Tab][Tab], si occupano di trovare gli indirizzi di dati da memorizzare o recuperare. Per memorizzare un dato, occorre mettere sullo stack prima l'indirizzo, poi il valore del dato; per recuperarlo invece occorre mettere sullo stack l'indirizzo dove lo si è memorizzato:

IstruzioneSignificato
[Spazio]Memorizza un dato
[Tab]Recupera un dato

Controllo di flusso

[modifica |modifica wikitesto]

Il controllo del flusso del programma (IMP [Ritorno a capo]) è un'operazione frequente in Whitespace come in ogni linguaggio di programmazione; le posizioni delleprocedure e dei bersagli dei salti condizionati sono indicati con etichette. I programmi devono terminare con l'istruzione [Ritorno a capo][Ritorno a capo][Ritorno a capo].

IstruzioneSignificato
[Spazio][Spazio]Dichiara un'etichetta con il nome passato come parametro
[Spazio][Tab]Chiama la procedura con il nome dato come parametro
[Spazio][Ritorno a capo]Salta all'etichetta passata come parametro
[Tab][Spazio]Salta all'etichetta passata come parametro se il valore in cima allo stack è pari a zero
[Tab][Tab]Salta all'etichetta passata come parametro se il valore in cima allo stack è negativo
[Tab][Ritorno a capo]Termina una procedura e riporta il controllo all'istruzione successiva alla chiamata
[Ritorno a capo][Ritorno a capo]Termina il programma

I/O

[modifica |modifica wikitesto]

Le istruzioni di Input/Output (IMP [Tab][Ritorno a capo]) vengono usate per interagire con l'utente; con esse si possono manipolare numeri interi o caratteri:

IstruzioneSignificato
[Spazio][Spazio]Esegue l'output del carattere in cima allo stack
[Spazio][Tab]Esegue l'output del numero in cima allo stack
[Tab][Spazio]Legge un carattere e lo memorizza all'indirizzo in cima allo stack
[Tab][Tab]Legge un numero e lo memorizza all'indirizzo in cima allo stack

Codice esempio

[modifica |modifica wikitesto]

Di seguito un programma che stampa la scritta "Hello World!". Da notare che i caratteri spazio sono stati colorati in modo differente perché altrimenti sarebbero risultati invisibili. (Spazio,Tab)

      	  	   		    	   		  	 			    	    		 		  		    		   		 		  		    	     		 						    	 	   	 		  		    		    	     		    			   			 					    	      		 						    	  	   			  	 		    	 	    		 		  		    	 		   		  	  		    		     	    			    		 	   		 			    			    	 	 		    				    		     empty-line    	empty-line 			 empty-line	  	 	     		   empty-line  	empty-line   	 empty-lineempty-line/EOF

Altri progetti

[modifica |modifica wikitesto]

Altri progetti

Collegamenti esterni

[modifica |modifica wikitesto]
Estratto da "https://it.wikipedia.org/w/index.php?title=Whitespace&oldid=140070322"
Categoria:

[8]ページ先頭

©2009-2025 Movatter.jp