The Peculiar Esoteric Programming Languages; BrainFuck and ReverseFuck
What is a programming language? The basic definition of a programming language states that it is a set of instructions used in computer programming to execute algorithms. Hundreds of new languages are being added every year to a sea of myriad different programming languages. Many languages are written with a focus on describing "how a program operates" — these are the imperative programming languages. Whereas, languages that describe "what the program must accomplish" rather than "how it must accomplish it" are the declarative programming languages.
A few days back I was going through my LinkedIn feed when I stumbled upon an article on Morse Code. The article covered the basics of Morse code and how it is used in telecommunication to encode text characters into a standard sequence of two characters, "." and "-". This made me wonder if there was a programming language similar to Morse Code — one with only a few characters in its dictionary that could reduce compilation time and increase processing speed. That's when I got to know about Esoteric Programming Languages.
Esoteric Programming Languages, or so-called Esolangs, are typically programming languages designed to test the boundaries of computer programming language design. As the word "esoteric" suggests, they are only intended to be understood by a small number of people. These differ from traditional programming languages (Java, C++, Python) used by developers to write software. They are usually designed as a proof of concept, as an artwork, as a hacking interface to another language, or simply as a joke. Many people classify esolangs as being useless — but that is not the case. They can be used to write real programs, though any mildly complex task requires a long sequence of commands and can take minutes to execute. In general, usability is rarely the goal of esolang developers.
Source: Wikipedia
After researching more on esolangs, the most interesting language I came across was BrainFuck and its antipode ReverseFuck. BrainFuck was created in 1993 by Urban Müller, inspired by the popular FALSE Programming language which consisted of only a 1024-byte compiler. The original BrainFuck compiler had a binary size of 296 bytes; a subsequent version used only 240 bytes. BrainFuck consists of eight commands: <, >, +, -, [, ], ., and ,. Even though there are only eight characters in the BrainFuck lexicon, it is one of the most complex and perplexing languages due to the massive amount of code needed even for simple programs.
ReverseFuck is a derivative of BrainFuck, created by Juraj Borza in 2006 as a direct modification. Even though it's just a negation of BrainFuck, it is even more difficult to decipher due to its anomalous nature. In ReverseFuck, + decrements the cell and - increments it. Similarly, > decrements the pointer and < increments it.