Free Esoteric & Obfuscated Programming Languages
Compilers & interpreters for crazy and just-for-fun languages
Free Esoteric, Obfuscated, Unusual and Downright Crazy Programming Languages
This page contains compilers and interpreters for programming languages that may be said to be esoteric, obfuscated, weird, unusual, zany, crazy or just for fun. Depending on your sense of humour ("humor" in US English), and what you're required to do with them, you may have other (less charitable) names for them. You may need to throw out everything you've learned in school about programming, and if you're in an evil mood, you can even set an assignment for your students using them. Be warned: this page is for only those with a sense of humour.
Note: due to unprintable nature of the names of some of these languages, their names have been somewhat modified (read "censored") for the purpose of this family-friendly website. To get the real name, just click the link to go to the website for that language.
If you are looking for the compilers and interpreters for the more traditional programming languages, please see the Free Compilers and Interpreters for Programming Languages index instead.
Languages For the Truly Idle
If you believe that programming languages (like COBOL) are too wordy, you will like this language. It has no words at all — its entire command set consists of only eight non-alphanumeric symbols, namely, the full-stop (period), the comma, the plus and minus signs, the angle brackets and the square brackets. However, before you write it off as a totally useless endeavour, you should be aware that the DeCSS algorithm (which decrypts the system used to protect DVDs) has been ported to this language. If you feel the urge to torture yourself, you can find the source for that algorithm in Brainf*ck here.
The people that designed this language believe that whitespace has been discriminated against in the programming world (after all, most programming languages ignore them) and set about creating a language that consists entirely of whitespace characters. In this language, all non-whitespace characters are ignored.
The aim of INTERCAL was to have a language that shares no feature in common with existing major programming language. The effect of this is that it makes operations that are simple in other languages difficult to do in INTERCAL. The name stands for "Compiler Language With No Pronounceable Acronym" (don't ask). There are C, Java and Perl versions of the INTERCAL compiler, so it should be fairly easy to get at least one of the implementations running on your system. Note: Intercal is the archetype of all the languages listed on this page.
Unlambda is an obfuscated programming language that does not have any variables, data structures, loops, conditions, arrays, stacks, or many of the features found in the usual programming languages. Instead, functions in the language take functions as arguments and return functions.
If you thought it was devilishly difficult to write a program in a traditional programming language, wait till you try Java2K. Unlike the certainty afforded by languages like C++, Java, etc, when you call a function in Java2K, you cannot be certain that it will perform the task you intend. Worse, function names are numeric, and the language uses a 11-based number system (no, that is not a typo) with the space character having the value 10 in that system. Function names must be divisible by 7, and since numbers are function names, it is non-trivial to use a number as itself in a Java2K program. Java2K also has a garbage collector — "memory is freed when the program exits, or, at random intervals, whichever comes first." The language is implemented in Java and packages for Windows, Linux and Amiga are available.
- Malbolge and Dis
If you ever meet a smart-aleck programmer you don't like, introduce him/her to Malbolge and Dis. Malbolge and Dis are probably the languages that take top place in the Programming Language Hall of Infamy for their sheer impossibility to use. Dis is supposed to be the easier of this evil pair of languages; it was created by the author (in a fit of compassion?) after finding that Malbolge "defied current attempts to use it". (Update: Dis does not appear to be available any more.)
How to Link to This Page
It will appear on your page as: