Share on Facebook Share on Twitter Email
Answers.com

Whitespace

 
Wikipedia: Whitespace (programming language)
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 (also developers of the Kaya programming language). 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.[citation needed]

Contents

History

Whitespace was created by Edwin Brady and Chris Morris in 2002. Slashdot gave a review of this programming language on 1 April 2003.[1] The same year an interpreter for it was implemented in Whitespace. The idea of using whitespace characters as operators for the C++ language was mentioned five years earlier by Bjarne Stroustrup.[2]

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.

Sample code

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

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

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

External links

References

  1. ^ http://developers.slashdot.org/story/03/04/01/0332202/New-Whitespace-Only-Programming-Language
  2. ^ http://www.research.att.com/~bs/whitespace98.pdf

Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
 
 

 

Copyrights:

Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "Whitespace (programming language)" Read more