Esoteric Programming language
Esoteric programming languages(also called ESOLANG) are designed to experiment with weird ideas. Remember those days when you wrote programs which your friends couldnt understand, that actually gave you a sense of greatness and achievement? Apparently some people took this feeling, to a whole new level. Esoteric programming languages are believed to be the toughest programming languages on earth. They arent tough as a by product of something, but were created to be that way.The basic underlying principle was, to hack or take advantage of bugs in a program, you must know that particular language inside out, in which it is coded in. So the idea was to create a new generation of programming languages that could be used in applications securely without worrying about attacks. But the languages turned out to be so tough and mind numbing, that developers themselves couldnt understand and code in that language.
Some esoteric programming language are created as a joke by programmers(yeah! we can make jokes too ). Some are created as proof of concept while some are designed to test the limits of our mind's realm. But they arent used by many people, as only a few understand it. And out of that few who understand it, only a fraction of people have the patience to code in it.
Some examples
1. Whitespace
Uses only tabs,spaces and lines
Best part is, the code is invisible ;)
Unless you select the the whole code

2. ArnoldC
Uses quotes from Arnold Schwarzenegger Movies!
3. Befunge
Here the programs are arranged on a two dimensional grid.Arrow instructions direct the flow of control to left right top bottom. So essentially programs can be written in any direction
4. Piet
Uses bitmap images. Syntax makes use of 20 colors of varying brightness.Instructions are determined by steps of change in brightness in the contiguous color blocks.

5. Shakespear Language(in short called SPL)
Programs look like Shakespearean plays.
Acts and Scenes break the program(or plays) in Subroutines
play characters represent variables
instructions are given by dialogue
*(A simple Hello world program is very long, like how plays are meant to be)
6. Malbolge ***(My personal Favorite)***
Named after the eighth circle of hell from Dante's Inferno
This programming language was not created by any Human, but by a beam search algorithm
It took 2 years after its release, for programmers to understand it
(Those of you, who watch Elementary serial, will be familiar with this.)
Hello World
7. BrainFuck
Highly minimalistic language that makes use of only 8 characters.
Lets get into the details of a programming language , whose name sounds the coolest.
You guessed it right! "BRAINFUCK"
(A word that all programmers can relate to )
As mentioned earlier, Brainfuck only uses 8 characters
+ for incrementing value in the current field by one
- for decrementing value in the current field by one
> < to move data pointer right or left
. to print ascii character of the value in the current field
, to read single character into current cell
[] for looping
Tutorial to print character 'A' whose ascii value is 65(Provided my 12th std teacher was right ;D)
//currently at field 0, where by default value is 0
++++++ //incrementing 6 times, therefore present value is 6
[
> //move pointer to cell 1
++++++++++ //increment the value by 10 times
< // move pointer back to cell 0
- // cell zero decremented by 1, therefore this loop runs 6 times
] // at the end of the loop, value in field 1 is 60
> //move to cell 1
+++++ // increment its value by 4, therefore value in field 1 is 65
. // print character in field 1
code for C-based Brainfuck interpreter
//-------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// initialize the tape with 30,000 zeroes
unsigned char tape[30000] = {0};
// set the pointer to point at the left-most cell of the tape
unsigned char* ptr = tape;
void interpret(char* input) {
char current_char;
size_t i;
size_t loop;
for (i = 0; input[i] != 0; i++) {
current_char = input[i];
if (current_char == '>') {
++ptr;
} else if (current_char == '<') {
--ptr;
} else if (current_char == '+') {
++*ptr;
} else if (current_char == '-') {
--*ptr;
} else if (current_char == '.' ) {
putchar(*ptr);
} else if (current_char == ',') {
*ptr = getchar();
} else if (current_char == '[') {
continue;
} else if (current_char == ']' && *ptr) {
loop = 1;
while (loop > 0) {
current_char = input[--i];
if (current_char == '[') {
loop--;
} else if (current_char == ']') {
loop++;
}
}
}
}
}
int main()
{
char a[1000];
scanf("%s",&a);
interpret(a); // outputs input
printf("\n");
return 0;
}
//------------------------------------------------------------------------------------------
The inputs must be given without gaps
ScreenShot Example
A heads up before you tryout the interpreter, if you want to print a very large message, remember to increase character array a's size, or else you will get a StackSmashing error.
To get a full list of Esoteric programming language, click here
Hope you liked the topic. If anyone wants to have further discussion on this topic, get in touch with me at prathikshirolkar@gmail.com .










