DEV Community

Cover image for EsoSlang
dotbehrens
dotbehrens

Posted on

EsoSlang

Esoteric Programming Languages or esoSlang is created by programmers that want to test the bounds of what can be done with programming languages. Often they are not designed for any practical reasons and are downright impractical or difficult to use. Sometimes though esoSlang influences more practical languages with their popular features. Below I am going to talk about an esoteric programming language I have been pretty excited about lately.

Perhaps my favorite is Whitespace. This language was released on April Fools day in 2003. It was developed by Edwin Brady and Chris Morris, who thought that programming languages should no longer ignore white space. White space only takes in spaces, tabs and line feed. The rest of the characters input are completely ignored. Whitespace is an imperative programming language. Imperative programming languages are languages that use statements to change the program's state.

Below is how to write "hello world" in Whitespace. You may notice it is a little bit impractical.

<tab> <tab> <space> <space> <tab> <tab> 
 <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <space> <space> <tab> <space> <tab> 
 <tab> <tab> <tab> <tab> <space> 
 <tab> <tab> <tab> <space> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <space> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> 
 <tab> <tab> <space> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> <tab> <tab> <space> 
 <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> <space> 
 <tab> <tab> <tab> <tab> <space> <tab> <space> 
 <tab> <tab> <tab> <space> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> <tab> <space> <tab> <tab> 
 <tab> <tab> <tab> <space> <space> <tab> <space> <space> 
 <tab> <tab> <tab> <tab> <tab> <space> <space> 
 <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> <space> <tab> 
 <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> <tab> <space> 
 <tab> <tab> <tab> <space> <space> <tab> <tab> <space> 
 <tab> <tab> <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> <space> 
 <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> <tab> 
 <tab> <tab> <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> <space> <space> 
 <tab> <tab> <tab> <space> <space> <tab> <space> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> <space> <tab> 
 <tab> <tab> <tab> <tab> <space> <space> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> 
 <tab> <tab> <tab> <tab> 
 <tab> <tab> <tab> <tab> <space> <tab> <tab> <tab> 
 <tab> 
 <tab> <tab> <tab> 

 <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <tab> 

 <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> 

 <tab> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <space> 
 <tab> <tab> 
 <tab> 

 <tab> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <tab> 
 <space> 
 <space> <tab> <tab> <tab> <space> 
 <space> 
 <tab> <space> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <space> 
 <tab> 
 <tab> <tab> 
 <tab> <tab> 
 <space> 
 <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <tab> 

 <tab> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <space> 
 <space> 

 <space> 

 <tab> 

 <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <space> 
 <space> 
 <space> <space> 
 <space> <tab> 
 <tab> <space> <tab> <tab> <tab> <space> 
 <tab> <tab> <space> <tab> <space> 
 <tab> <space> <space> <tab> 
 <tab> <space> <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <space> 
 <space> 

 <tab> <tab> 
 <tab> <tab> 
 <space> 
 <space> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <space> 

 <tab> <tab> <tab> <tab> <space> <space> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <space> 
 <space> 

 <tab> <tab> 
 <tab> <tab> 
 <tab> <tab> <space> 
 <tab> 

 <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <tab> <tab> <space> <tab> <space> <space> <tab> <space> <tab> <tab> <space> <tab> <tab> <tab> <space> <space> <tab> <tab> <space> <space> <tab> <space> <tab> 
 <tab> <tab> <space> <tab> <space> 
 <tab> <tab> <tab> <space> <tab> 
 <tab> 
 <space> <space> <tab> 
 <space> <space>

Whitespace does have a pretty interesting theoretical concept with it. It could be possible to write code in a more practical language and in between the characters have the white-space characters run an entirely different bit of code. No one would even have to know.

In conclusion esoteric programming languages are a fun way for programmers to test themselves and the bounds of computer programming. They can result in improvements to more main stream coding languages, but ultimately they are not meant to be used for more than their novelty.

Discussion (0)