Spatiu alb

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Whitespace este un limbaj de programare ezoteric și minimalist creat în 2003 de Edwin Brady și Chris Morris . Numele derivă din faptul că limbajul folosește doar spații albe, file și retururi ca elemente sintactice. Orice personaj în afară de aceste trei este ignorat și tratat ca un comentariu.

Spațiul alb a devenit faimos atunci când inventatorul său l-a descris în Slashdot la 1 aprilie 2003; în acest fel, utilizatorii s-au gândit la un April Fool, evident greșit.

Instrucțiuni

Spațiul alb include 29 de instrucțiuni, împărțite în 5 categorii; înaintea fiecărei instrucțiuni este necesar să introduceți un identificator care să indice cărei categorii aparține instrucțiunea, numit Instruction Modification Parameter sau IMP. Unele instrucțiuni necesită un parametru, care poate fi un număr sau o etichetă. Numerele pot fi de orice lungime și sunt reprezentate în format binar printr-o succesiune de [Spațiu] și [Tab], care se termină cu [Carriage Return]. Caracterul [Space] indică 0, [Tab] indică 1. Primul bit al numărului indică semnul acestuia din urmă, 0 pentru pozitiv și 1 pentru negativ. O etichetă este indicată în schimb cu o secvență de [Spațiu] și [Tab] după cum se dorește, care se termină cu [Retur de transport]; fiecare nume de etichetă trebuie să fie diferit de toate celelalte. IMP-urile și categoriile asociate acestora sunt:

IMP Sens
[Spazio] Manipularea stivei
[Tab][Spazio] Operatii aritmetice
[Tab][Tab] Acces aleator la memorie
[Ritorno a capo] Controlul debitului
[Tab][Ritorno a capo] I / O ale perifericelor

Manipularea stivei

Spațiul alb se bazează pe un teanc de date, accesibil prin intermediul a patru instrucțiuni separate din IMP [Spațiu]:

Instrucțiuni Sens
[Spazio] Pune numărul trecut ca parametru în partea de sus a stivei
[Ritorno a capo][Spazio] Duplicați primul element al stivei
[Tab][Spazio] Copiați al n-lea element al stivei (n este trecut ca parametru) în partea de sus a stivei
[Ritorno a capo][Tab] Schimbați primele două elemente ale stivei
[Ritorno a capo][Ritorno a capo] Ștergeți primul element al stivei
[Tab][Ritorno a capo] Împingeți n elemente de pe stivă (n este trecut ca parametru), păstrând intact primul element

Operatii aritmetice

Instrucțiunile aritmetice, distincte de IMP [Tab] [Spațiu], operează pe primele două elemente ale stivei (primul este considerat a fi la stânga operatorului, al doilea la dreapta), considerându-le numere întregi și înlocuiți aceste două valori cu rezultatul operației:

Instrucțiuni Sens
[Spazio][Spazio] Plus
[Spazio][Tab] Scădere
[Spazio][Ritorno a capo] Multiplicare
[Tab][Spazio] Întreaga divizie
[Tab][Tab] Modulul diviziei întregi

Acces aleator la memorie

Instrucțiunile pentru accesul aleator la memorie, identificate de IMP [Tab] [Tab], se referă la găsirea adreselor de date care trebuie stocate sau recuperate. Pentru a stoca o referință, mai întâi adresa trebuie pusă în stivă, apoi valoarea de referință; pentru a-l recupera, trebuie să puneți în stivă adresa unde a fost stocată:

Instrucțiuni Sens
[Spazio] Stochează date
[Tab] Preluarea unei date

Controlul debitului

Controlul fluxului de programe (IMP [Carriage Return]) este o operație frecventă în spații albe ca în orice limbaj de programare; pozițiile procedurilor și țintelor săriturilor condiționate sunt indicate cu etichete. Programele trebuie să se încheie cu mențiunea [Returnarea transportului] [Returnarea transportului] [Returnarea transportului].

Instrucțiuni Sens
[Spazio][Spazio] Declară o etichetă cu numele trecut ca parametru
[Spazio][Tab] Apelați procedura cu numele dat ca parametru
[Spazio][Ritorno a capo] Salt la eticheta trecută ca parametru
[Tab][Spazio] Salt la eticheta trecută ca parametru dacă valoarea din partea de sus a stivei este zero
[Tab][Tab] Salt la eticheta trecută ca parametru dacă valoarea din partea de sus a stivei este negativă
[Tab][Ritorno a capo] Termină o procedură și returnează controlul la declarația de după apel
[Ritorno a capo][Ritorno a capo] Încheiați programul

Eu

Instrucțiunile de intrare / ieșire (IMP [Tab] [Carriage Return]) sunt utilizate pentru a interacționa cu utilizatorul; cu ele puteți manipula numere întregi sau caractere:

Instrucțiuni Sens
[Spazio][Spazio] Afișează caracterul din partea de sus a stivei
[Spazio][Tab] Afișează numărul din partea de sus a stivei
[Tab][Spazio] Citește un personaj și îl stochează la adresa din partea de sus a stivei
[Tab][Tab] Citește un număr și îl stochează la adresa din partea de sus a stivei

Exemplu de cod

Mai jos este un program care tipărește cuvântul „Hello World!”. Rețineți că caracterele spațiale au fost colorate diferit, deoarece altfel ar fi invizibile. ( Spațiu , filă )

   
   	  	   
		    	
   		  	 	
		    	 
   		 		  
		    		
   		 		  
		    
	  
   		 				
		    	 	
   	 		  
		    		 
   	     
		    			
   			 			
		  
  	   
   		 				
		    	  	
   			  	 
		    	 	 
   		 		  
		    	 		
   		  
	  
		    		  
   	    	
		    		 	
   		 	
		    			 
   	 	 
		    				
    
	
	     
linie goală
    	
linie goală
 			 
linie goală
	  	 
	
     	
	   
linie goală
  	
linie goală
   	 
linie goală
gol-linie / EOF

linkuri externe