Whitespace (programming language)

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Whitespace hello world program with syntax highlighting      tabs      spaces

Whitespace is an esoteric programming language developed by Edwin Brady and Chris Morris at the University of Durham. It was released on 1 April 2003 (April Fool's Day). Its name is a reference to so-called whitespace character codes in text files. When a text file is printed, whitespace codes move the cursor ahead without making any mark on the page thus leaving a white space. They include the codes for space, tab, and line feed (newlines). Unlike most programming languages, which ignore or assign little meaning to most whitespace characters, the Whitespace interpreter ignores any non-whitespace characters. Only spaces, tabs and linefeeds have meaning. An interesting consequence of this property is that a Whitespace program can easily be contained within the whitespace characters of a program written in another language, making the text a polyglot.

The language itself is an imperative stack-based language. The virtual machine on which the programs run has a stack and a heap. The programmer is free to push arbitrary width integers onto the stack (currently there is no implementation of floating point numbers) and can also access the heap as a permanent store for variables and data structures.

Whitespace is Turing complete, the proof being an exercise at various Universities for Computer Science majors[citation needed].

Contents

[edit] History

Whitespace was created by Edwin Brady and Chris Morris in 2002. Slashdot gave a review of this programming language on April 1st, 2003. The same year an interpreter for it was implemented in whitespace. The idea for this language was already mentioned five years earlier by Bjarne Stroustrup.

[edit] Syntax

Commands are composed of sequences of spaces, tab stops and linefeeds, for example, tab-space-space-space adds the top two elements on the stack. Data is represented in binary using spaces (0) and tabs (1), followed by a linefeed, for example, space-space-space-tab-space-tab-tab-linefeed is the number 11. All other characters are ignored and thus can be used for comments.

[edit] Sample code

This prints "Hello World!". Note that whitespace characters have been given differently coloured backgrounds since, in practice, they are invisible. (Space, Tab)

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

[edit] See also

  • Brainfuck, another esoteric computer programming language that, similarly to Whitespace, ignores anything it doesn't recognize.
  • Polyglot, a program valid in more than one language.
  • Steganography

[edit] External links

Personal tools