top of page
  • Writer's pictureLokajit Tikayatray

5 Most Difficult Programming Languages in the World

Updated: Jun 4, 2022



When we all are talking about c, c++, Java, Python, etc., there are some languages that are not only difficult but are almost incomprehensible for most software developers.

These languages are called esoteric programming languages (or esolang).

An esolang is not designed for commonplace software development purposes. They are intended as a proof of concept or as a joke.

Here is a list of the five most difficult esoteric languages. I tried executing the ‘Hello World!’ program in each of these languages, and it was fun.


Malbolge


Malbolge was invented in 1998 by Ben Olmstead. This esolang is considered to be the most complicated programming language.


It is said that the author of the Malbolge programming language never wrote any program using the language. The hello world code in Malbolge appeared almost two years after Olmstead invented the language.


Here is the code snippet for printing ‘Hello World!’ in Malbolge.

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

Here is the output:


INTERCAL


Jim Lyon and Don Woods developed INTERCAL in 1972 as a parody of the various programming languages.


The initial name given to it was— ‘Compiler Language With No Pronounceable Acronym.’.

INTERCAL has many features designed to make it frustrating for the programmer.

Ex: It uses modifiers such as “PLEASE”. The compiler can reject a code if “PLEASE” is not used frequently in the code. It considers the program as ‘insufficiently polite’. If the modifier ‘PLEASE’ is used too many times then the compiler rejects the code stating that it is ‘excessively polite’.

Here is the code snippet for printing ‘Hello, World!’ in INTERCAL.

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READOUT ,1
PLEASE GIVE UP

Here is the output:


Brainfuck


Brainfuck was developed by Urban Muller in 1993. The language was invented as an amusement for the programmers.


The name itself suggests that the language is supposed to be extremely difficult for any programmer to comprehend.


The whole language consists of only eight distinct characters for the implementation of any code. The original compiler developed by Muller used only 296 bytes.


Here is the code snippet for printing ‘Hello World!’ in Brainfuck.

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
 ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Here is the output:



COW


COW was developed in 2003 by Sean Heber. Once you see the hello world code, you will realize why the language was named ‘COW’.


COW is similar to Brainfuck in the difficulty level. It has four more commands in comparison to Brainfuck, i.e., 12 commands in the entire language.


Here is the code snippet for printing ‘Hello, World!’ in COW.

MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO
 MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO 
 MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO 
 MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo

Here is the output:


Whitespace


Whitespace was developed at the University of Durham by Chris Morris and Edwin Brady. The language was released on April fools day of 2003.


The entire language depends on space, tab, and linefeed for writing any program. The Whitespace interpreter ignores Non-Whitespace characters and considers them as code comments.


Here is the code snippet for printing ‘Hello, World!’ in Whitespace.


In the below code, each Space, Tab, or Linefeed character is preceded by a comment ‘S’, ‘T’, or ‘L’, respectively.

S S S T	S S T	S S S L
T	L
S S S S S T	T	S S T	S T	L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	S T	T	S S L
T	L
S S S S S T	S S S S S L
T	L
S S S S S T	S T	S T	T	T	L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	T	T	S S T	S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S S T	S S L
T	L
S S S S S T	S S S S T	L
T	L
S S L
L
L

Here is the output:


Go Wild

There are many more similar esoteric languages. You can visit the references section of this article and explore them.


Use the following site, which provides compilers and interpreters for almost all the languages. Please copy the code from reference pages and have fun playing around with them.



Subscribe to my free newsletter to get stories delivered directly to your mailbox.




11,026 views1 comment

Recent Posts

See All
Post: Blog2 Post
bottom of page