Software Development

Most difficult programming languages

What are the most difficult programming languages to learn? Most people would have written some code in programming languages such as Java, C, C++ etc. Going back a bit further into the past, many would have programmed in Pascal, Fortran, COBOL etc. While starting out on the learning curve, most of these languages might have posed enough challenges and caused you to pull the hair off your head. But eventually, you put in enough time and effort and things started to happen magically.

But there are programming languages that take difficulty to the God level. These languages are known as esoteric programming languages.  Their reasons behind creating them are generally to test the boundaries of programming language design or as a joke. The good news is that they will never be mainstream, so you can get away not learning them!

Without further ado, the most difficult programming (or weirdest?) languages that exist are…

Brainfuck

Brainfuck was invented by Urban Müller in 1993, in an attempt to make a language for which he could write the smallest possible compiler for the Amiga OS, version 2.0.

Brainfuck operates on an array of memory cells, also referred to as the tape, each initially set to zero. There are only 8 commands in the language

The 8 Commands are ><+-.,[]

Hello world code looks like this

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

Reference

COW

Yes. Cow as in Cow.

The COW programming language was designed with the bovine in mind. Given that cows have somewhat limited vocabulary skills, it seemed natural to incorporate only the words they know into the language. As a result, all instructions are some variation on “moo” which just so happens to be the only word they really understand.

Any other word or symbol that isn’t an instruction is ignored entirely. So, spaces can be used or not. Newlines can be used or not. You get the idea. It makes commenting COW programs rather easy as long as you don’t use any words that have an instruction embedded in it.

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 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 OOO 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 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 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 MOo Moo
 OOO 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

Reference

INTERCAL

The Compiler Language With No Pronounceable Acronym, abbreviated INTERCAL. Expressions that look like line noise. Control constructs that will make you gasp, make you laugh, and possibly make you hurl.

INTERCAL has many other features designed to make it even more aesthetically unpleasing to the programmer: it uses statements such as “READ OUT”, “IGNORE”, “FORGET”, and modifiers such as “PLEASE”. This last keyword provides two reasons for the program’s rejection by the compiler: if “PLEASE” does not appear often enough, the program is considered insufficiently polite, and the error message says this; if too often, the program could be rejected as excessively polite.

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 READ OUT ,1
PLEASE GIVE UP

Reference

Whitespace

It was released on 1 April 2003, most people thought it was an April Fool’s joke, but it wasn’t. As you can guess, in the Whitespace language, only spaces, tabs and linefeeds have meaning. The Whitespace interpreter ignores any non-whitespace characters. An interesting consequence of this property is that a Whitespace program can easily be contained within the whitespace characters of a program written in another language.

Reference

Chef

Chef is a stack-based language where programs look like cooking recipes.

According to the Chef Home Page, the design principles for Chef are:

  • Program recipes should not only generate valid output, but be easy to prepare and delicious.
  • Recipes may appeal to cooks with different budgets.
  • Recipes will be metric, but may use traditional cooking measures such as cups and tablespoons.

Hello world looks like this!

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish.

Serves 1.

Reference1 and Reference2

Other languages..

There are many more difficult programming languages such as above. Here is a wiki with good information on them!

Reference: Most difficult programming languages from our JCG partner Deepak Karanth at the Software Yoga blog.

Deepak Karanth

Deepak is a tech consultant working on Software development, Agile and DevOps. He drives the overall technical strategy for organizations and relentlessly improves various aspects of the organization to deliver more value to customer. He helps companies build great software by bringing together three critical aspects to ensure successful software delivery – Technology, People and Process.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button