Developer Culture

Five esoteric programming languages and what makes them unusual

“Hardest programming language” is not an objective ranking.

Five tiny distinct abstract code cards around a restrained puzzle-like center, no symbols needing readable text

“Hardest programming language” is not an objective ranking. Some languages are deliberately awkward because their authors are exploring a constraint, a joke or an unusual model of computation. They are better described as esoteric languages.

Five different kinds of difficulty#

  • COW uses a small set of instructions built from variations of the word “moo.” The difficulty is following state through a deliberately repetitive notation.

  • Malbolge is designed to be difficult to program, with an unusual execution model rather than a familiar statement structure.

  • Whitespace gives meaning to spaces, tabs and line breaks. An editor that normalizes whitespace can change the program.

  • Brainfuck uses a tiny command set and a memory-tape model. The syntax is small; reasoning about the pointer and cell values is the work.

  • INTERCAL intentionally challenges expectations about readable and convenient language design.

Learn from the constraint#

Try tracing a tiny program before pasting a long Hello World example into an interpreter. Check the interpreter's dialect, input assumptions and termination behavior. A program copied through a web editor may not preserve significant whitespace or unusual characters.

The COW author's site and the INTERCAL project provide primary project material. These language designs reward curiosity, but their constraints are not a sensible default for most ordinary applications. For that decision, use the project-language guide.