Here we have a compilation of some very weird types of programming languages that have ever existed. These programming languages are also known as Esoteric Programming Languages or Esolangs in its short form. Esolangs are designed not really for use in practical situations, but for testing the limits of a programming language structure, or just as tools for experimenting with queer ideas. Despite the fact that there are no plans for integrating these languages into a practical programming environment, they are very popular among programming enthusiasts.
The majority of people usually write the ‘Hello Program” first whenever they encounter a new programming language. This is because of the simplistic manner with which the program code displays the words “Hello, World” on any suitable output device, usually a PC monitor.
This compilation was done with the help of Esolang Wiki and Apico Blog.
In 1972, the first esoteric programming languages – INTERCAL, was created by the combined efforts of M. Lyon and Donald R. Woods. INTERCAL was born out of the ambition to create a language that has no similar features with any other programming language.
From the creators’ original manual, the complete name given to the language is ‘ Compiler Language With No Pronounceable Acronym’, then abbreviated to ‘INTERCAL’ for no rational reason.
INTERCAL bears several characteristics intended to make it less appealing to a programmer. Some of these include using the statements “FORGET” and “IGNORE.” It also makes use of “PLEASE” as a modifier. Because of this modifier, the compiler can reject the program for two reasons.
- If the number of times “PLEASE” appears is not sufficient, the program considered lacking politeness and this is indicated in an error message.
- If “PLEASE” appears too many times, the program is regarded as overly polite and may also be rejected.
The Velato language was designed as a music-like Esolang that has its source code in the form of MIDI files. Velato programs are characterized by the sequence and pitch of the musical notes. The music-like design is to ensure there is enough flexibility in terms of composition. This will produce realistic programs instead of meaningless random notes. Velato programs usually have harmonies that sound like jazz.
In Velato programming language, a “command root” note is used at the beginning of every statement, and the gaps succeeding the note are converted into expressions and commands. Additional musical progressions can be included with an alteration of the root of the command between statements.
The same way that MIDI files resemble sheet music, it is also possible to represent Velato programs in a similar manner.
Shakespeare is an esoteric programming language designed to make programs look like Shakespearean plays. In any Shakespeare program, the very first line acts as a comment and is known as the “title.” Another section known as the “Dramatis Personae” presents a platform for the identification of all the variables. The name of each variable is expected to be the same as a character’s name in any of the plays by Shakespeare.
All the code segments in a Shakespeare program is split into “Acts,” and each “Act” contains several “Scenes” where the characters or variables engage themselves. For every Act and each Scene, the numbering is done with the use of Roman numerals, and this becomes the GOTO tag.
Variables or characters must be “on stage” first before they can act or taken into consideration. The “Enter” command is always used to bring up a variable onto the stage. When there is a need for a variable to move away from the stage, an “Exit” command is applied. However, if the intention is for two or more variables (characters) on the stage to leave, the “Exeunt” command is used. The “Exeunt” command is also used where no variable is listed; in this case, all the variables or characters will move away from the stage.
Another weird Esolang is Piet. It was designed to resemble an abstract paintwork. Piet was named after Piet Mondrian, a pioneer of the geometric abstract art. Originally, the name was intended to be Mondrian, but someone else had already used it for another language.
Piet makes use of 20 well-defined colors. 18 of these colors are sequenced using a combination of the Hue Cycle (red – yellow – green – cyan – blue – magenta), and the Lightness Cycle (light – normal – dark). The other two colors are white and black; however, they do not have any sequence. When moving from one of the 18 colors into another, the executed action is dependent on the total number of stages required to transform from hue to lightness, and vice versa. It is not possible to move from any color into black. If an attempt is made on black, there will be an alteration in the rules for selecting the subsequent block. The program will exit if every available rule has been attempted. White is redundant; it does not execute any operation. It rather permits commands to go through it.
Brainfuck happens to be the most popular esolang available today. It is remarkable for its high level of minimalism. This esolang consists of only an instruction pointer and eight easy commands + – > < . , [ ]. A sequence of these commands makes up a brainfuck program. Although brainfuck is totally Turing-complete, the aim is to entertain and challenge programmers rather than for any practical purposes.
In order not to offend people, b****fuck is sometimes used to represent brainfuck. Also, the name is not written in capital letters within a sentence, except it is opening the sentence. Brainfuck was designed in order to have a programming language that could be executed using the smallest of compilers. Some of brainfuck compilers are as small as 200 bytes.
Brainfuck programs are very hard to understand. It requires a lengthy command sequence even for the slightest complicated task. This is probably the reason it cannot be considered appropriate for important programming. However, brainfuck is a language with Turing-complete compatibility, which can, in theory, calculate any calculable function as long as it has an accessible limitless memory size.