Esoteric Programming Language

   So called esoteric programming languages (esolangs) are highly
   experimental and [1]fun [2]programming languages that employ bizarre
   and/or unconventional ideas. Popular languages of this kind include
   [3]Brainfuck, [4]Chef or [5]Omgrofl.

   There is a great [6]wiki for esolangs, the Esolang Wiki
   (https://esolangs.org). If you want to behold esolangs in all their
   beauty, see
   https://esolangs.org/wiki/Hello_world_program_in_esoteric_languages_(nonalphabetic_and_A-M).
   The Wiki is published under [7]CC0!

   Many esolangers seem to be [8]code golfers, i.e. people who do various
   programming challenges while aiming for the shortest code which often
   requires a wise choice of language... or perhaps making a completely new
   language just for the job :) Codegolf stack exchange is therefore one
   place to see many esolangs in action.

   Some notable ideas employed by esolangs are:

     * Using images instead of text as [9]source code (e.g. Piet).
     * Doing nothing (e.g. Nothing).
     * Being two or more dimensional (e.g. Befunge or Hexagony).
     * Source code resembling cooking recipes (e.g. Chef).
     * Trying to be as hard to use as possible.
     * Trying to be as hard to compile as possible (e.g. Befunge).
     * Adding [10]randomness to program execution (e.g. Entropy), or working
       with randomness in other ways (e.g. XD has only one command, XD, which
       always translates to random [11]Brainfuck command).
     * Having no [12]input/output (e.g. Compute).
     * Obligation to beg the compiler to do its job (e.g. INTERCAL).
     * Using only white characters in source code (e.g. Whitespace).
     * Using only a single letter in source code (e.g. Unary).
     * Using git repository structure as source code (e.g. legit).
     * Source code resembling dramatic plays (e.g. Shakespeare, actual
       [13]real-life plays were performed).
     * Solely focus on [14]golfing, i.e. writing the shortest possible
       programs (e.g. GoldScript)
     * Using [15]unicode characters (e.g. UniCode).
     * Being infinitely many languages (e.g. MetaGolfScript, each one solves
       a specific program in 0 bytes).
     * ...

   Esolangs are great because:

     * They are [16]fun and have a cool community around them.
     * They are actually useful research in language design and food for
       thought, even if most of the ideas aren't useful directly, esolangs
       really teach us about the borders and definitions of what languages
       are. And sometimes, by mistake, actual discoveries are made.
     * They are great exercise in [17]programming and design. Simple
       languages that are allowed to not be useful are potentially good for
       education as they let the programmer fully focus on a specific idea
       and its implementation.
     * They blend technology with [18]art, train creativity and thinking
       "outside the box".
     * They are a breath of fresh air in the sometimes too serious area of
       technology. Hobbyist and non-commercial programming communities are
       always great to have.
     * ...

   A famous one-man organization related to esolangs is Cat's Eye run by
   Chris Pressey, currently reachable at https://catseye.tc.

History

   INTERCAL, made in 1972 by Donald Woods and James Lyon, is considered the
   first esolang in history: its goal was specifically intended to be
   different from traditional languages and so for example a level of
   politeness was introduced -- if there weren't enough PLEASE labels in the
   source code, the compiler wouldn't compile the program.

   In 1993 [19]Brainfuck, probably the most famous esolang, was created.

   In 2005 esolang wiki was started.

   TODO

Specific Languages

   The following is a list of some notable esoteric languages.

     * !@$%^&*()+: Source code looks like gibberish.
     * [20]Brainfuck: Extremely simple but hard to program in, arguably the
       most famous esolang with many forks.
     * [21]Brainfork: Brainfuck with added [22]multithreading.
     * [23]Befunge: Two dimensional language that's extremely hard to
       compile.
     * [24]Chef: Source codes look like cooking recipes.
     * Entropy: Adds randomness to programs, data in variables decay.
     * [25]FALSE: Aims for as small compiler as possible, inspired creation
       of Brainfuck and other esolangs, very [26]minimalist.
     * Gravity: Executing programs involves solving [27]differential
       equations related to gravity, which is [28]uncomputable.
     * [29]INTERCAL: Maybe the first esolang, includes such statements as
       PLEASE DO which have to be present in order for the compilation to be
       successful.
     * Nothing: Does nothing, guarantees zero bugs.
     * [30]Compute: Can compute any existing problem in arbitrarily short
       time, but has no output so the result cannot be printed.
     * [31]Omgrofl: Source code is composed of internet acronyms such as lol,
       wtf, lmao etc.
     * Pi: Source code looks like the number [32]pi, errors encode the
       program.
     * [33]Piet: Source codes are images.
     * Text: Language that always prints its source code (it is not Turing
       complete). All [34]ASCII files are programs in Text.
     * Polynomial: Programs are [35]polynomials whose zeros determine the
       commands.
     * [36]Unary: Source code uses only 1 character: 0. Each program is just
       a sequence of zeros of different length.
     * [37]Velato: Source codes are [38]MIDI files.
     * [39]Whitespace: Source code uses only white characters (spaces, tabs
       and newlines) so it looks seemingly empty.
     * XENBLN: [40]Golfing language, hello world is just ลก.
     * ...

   { There used to be an esolang webring, now only accessible through
   archive:
   https://web.archive.org/web/20110728084807/http://hub.webring.org/hub/esolang.
   You can find nice links there. ~drummyfish }

See Also

     * [41]WPU (weird processing unit)
     * [42]conlang
     * [43]micronation
     * [44]NaNoGenMo

Links:
1. fun.md
2. programming_language.md
3. brainfuck.md
4. chef.md
5. omgrofl.md
6. wiki.md
7. cc0.md
8. golf.md
9. source_code.md
10. randomness.md
11. brainfuck.md
12. io.md
13. real_life.md
14. golf.md
15. unicode.md
16. fun.md
17. programming.md
18. art.md
19. brainfuck.md
20. brainfuck.md
21. brainfork.md
22. multithreading.md
23. befunge.md
24. chef.md
25. false.md
26. minimalism.md
27. differential_equation.md
28. computability.md
29. intercal.md
30. compute.md
31. omgrofl.md
32. pi.md
33. piet.md
34. ascii.md
35. polynomial.md
36. unary.md
37. velato.md
38. midi.md
39. whitespace.md
40. golf.md
41. wpu.md
42. conlang.md
43. micronation.md
44. nanogenmo.md