Whitespace (programming language)
![]() | The topic of this article may not meet Wikipedia's general notability guideline. (February 2011) |

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 whitespace characters. 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.[1] 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, except in Python, 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.
History
Whitespace was created by Edwin Brady and Chris Morris in 2002. Slashdot gave a review of this programming language on 1 April 2003.[2] The same year an interpreter for it was implemented in Whitespace.[citation needed]
The idea of using whitespace characters as operators for the C++ language was facetiously suggested five years earlier by Bjarne Stroustrup.[3]
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 colored 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.
- LOLCODE, a programming language patterned after a series of Internet memes.
- INTERCAL, the "Compiler Language With No Pronounceable Acronym"
- Polyglot, a program valid in more than one language.
- Steganography
References
External links
- Whitespace homepage
- Release announcement on Slashdot
- Collection of Whitespace interpreters in various script languages
- Acme::Bleach A Perl module that rewrites the body of your module to a whitespace-only encoding ("for really clean programs").