# Awesome Esolangs [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

<img src="logo_piet.png" align="right">

Curated list of awesome esoteric programming languages, resources and related projects.


> "An esoteric programming language, or esolang, is a computer programming language designed to experiment with weird ideas, to be hard to program in, or as a joke, rather than for practical use."  
> ***esolang.org***


## Contents
* [Languages](#languages)
* [Algorithms](#algorithms)
* [Others](#others)
* [Resources](#resources)
* [Articles](#articles)
* [Community](#community)


## Languages

* [><>](https://esolangs.org/wiki/fish) - A stack-based 2d language with support for reflection.
* [1+](https://esolangs.org/wiki/1%2B) - A surprisingly user-friendly language with a highly-limited instruction set.
* [78](https://github.com/oatmealine/78) - A single-character command language focused around the numbers 7 and 8.
* [ajsone](https://www.quaxio.com/ajsone) - Language defined completely in JSON.
* [AlmostBinary](https://github.com/wsdt/AlmostBinary) - Code in binary and run on any platform.
* [ArnoldC](http://lhartikk.github.io/ArnoldC) - Based on the best one-liners of Arnold Schwarzenegger.
* [Befunge](https://esolangs.org/wiki/Befunge) - Two-dimensional language.
* [Brackets](https://github.com/kvbc/brackets) - Language made of brackets, a lot of brackets.
* [Brainfuck](https://esolangs.org/wiki/Brainfuck) - Minimalist language using only 8 single-character commands.
* [C Flat](https://github.com/NicksterSand/Cflat) - Musical language focused on sound rather than notation with creative freedom in mind.
* [CellTail](https://github.com/mousetail/celltail) - A 1d celular automata based language, supports a complex pattern matching syntax.
* [Charcoal](https://github.com/somebody1234/Charcoal) - Concise language for sketching ASCII art.
* [Chef](http://www.dangermouse.net/esoteric/chef.html) - Programs that look like cooking recipes.
* [Chicken](https://esolangs.org/wiki/Chicken) - Only 1 valid symbol: 'chicken'.
* [ChuckScript](https://github.com/angrykoala/chuckscript) - Unary-based language, where the code is a single number.
* [COW](https://esolangs.org/wiki/COW) - Brainfuck variant using twelve variations of *moos* as instructions.
* [DNA#](https://esolangs.org/wiki/DNA-Sharp) - Language based on the structure of the DNA.
* [Dots](https://github.com/josconno/dots) - A turing-complete language using "." symbol only.
* [Electra](https://github.com/DolphyWind/Electra-Lang) - Code like an electrician.
* [Emojicode](http://www.emojicode.org) - Full-blown programming language consisting of emojis.
* [Enterprise™](https://github.com/joaomilho/Enterprise) - Non deterministic unnecessarily statically typed language.
* [False](http://strlen.com/false-language) - Heavily obfuscated language with a minimal implementation.
* [Fetlang](https://github.com/Property404/fetlang) - Designed such that source code looks like poorly written fetish erotica.
* [FlipJump](https://github.com/tomhea/flip-jump) - 1 instruction: Flip a bit, then Jump. The simplest OISC.
* [Folders](https://github.com/rottytooth/Folders) - Code written with folders.
* [FreakC](https://github.com/FreakC-Foundation/FreakC) - Full-blown programming language with NSFW contents and memes.
* [Fugue](https://esolangs.org/wiki/Fugue) - Music as source code.
* [Golfscript](http://www.golfscript.com/golfscript) - Stack oriented, aimed at solving problems in as few keystrokes as possible.
* [Haifu](http://www.dangermouse.net/esoteric/haifu.html) - Designed with the core values of Eastern philosophy in mind.
* [INTERCAL](http://www.catb.org/~esr/intercal) - Parody language intended to be completely different from other languages.
* [Japt](https://github.com/ETHproductions/japt) - Reduced JavaScript for golfing.
* [Jelly](https://github.com/DennisMitchell/jellylanguage) - Golfing language based on J.
* [JellyScript](https://github.com/nguyenphuminh/Jellyscript) - Brainfuck-based with delicious jelly.
* [JSFuck](https://github.com/aemkei/jsfuck) - Esoteric programming style based on the atomic parts of JavaScript.
* [Lazy K](https://tromp.github.io/cl/lazy-k.html) - Minimal, turing-complete pure functional language without extra features.
* [legit](https://morr.cc/legit) - Programs defined entirely by the graph of the git repository instead of its contents.
* [LolCode](http://lolcode.org) - Language with keywords based on the lolcat meme expressions.
* [Malbolge](https://esolangs.org/wiki/Malbolge) - Named after the 8th level of hell, is designed to be as difficult as possible to program.
* [Mindfck](https://github.com/angrykoala/mindfck) - High level language that transpiles to Brainfuck.
* [Monicelli](https://github.com/esseks/monicelli) - Programming using Italian-like gibberish.
* [Ni](https://github.com/DeybisMelendez/ni) - Brainfuck-based with more helpful instructions.
* [Omgrofl](https://esolangs.org/wiki/Omgrofl) - Syntax resembling Internet slang.
* [Ook!](http://www.dangermouse.net/esoteric/ook.html) - Brainfuck-based language, where the commands are orangutan words.
* [Orca](https://hundredrabbits.itch.io/orca) - Livecoding environment to quickly create procedural audio sequencers.
* [Piet](http://www.dangermouse.net/esoteric/piet.html) -  Language in which programs look like abstract paintings using colors as code. Named after Piet Mondrian.
* [RASEL](https://github.com/Nakilon/rasel) - Fungeoid with no limits on program space, float precision, and with a bit of random access to stack.
* [reMorse](http://esolangs.org/wiki/reMorse) - Morse-styled language.
* [Rockstar](https://github.com/dylanbeattie/rockstar) - Designed for creating computer programs that are also song lyrics.
* [Shakespeare](http://shakespearelang.sourceforge.net) - Language where the code appear to be Shakespearean plays.
* [Schoenberg](https://tomeraberba.ch/schoenberg) - The MIDI Esoteric Programming Language.
* [Spooky](https://spookylang.com) - The scariest programming language  :jack_o_lantern: :skull:.
* [Suzy](https://github.com/gvx/suzy) - 3D language inspired in Befunge.
* [Technologic](https://esolangs.org/wiki/Technologic) - Language in which programs look like the lyrics to the Daft Punk song Technologic.
* [Thue](https://github.com/jcolag/Thue) - *Matrioshka* language based on nondeterministic string rewriting of a semi-Thue grammar.
* [Tru](https://github.com/sungwoncho/tru) - A stack-based language with prefix-free brackets.
* [TrumpScript](https://github.com/samshadwell/TrumpScript) - Make Python great again.
* [Turtle](https://github.com/TypeMonkey/Turtle) - Uses long-term storage for memory use.
* [Unary](https://esolangs.org/wiki/Unary) - Brainfuck-based language where all the commands are 0.
* [Unary Except Every Zero Is Replaced with the Title of This Programming Language or, Alternately, Is Replaced with the Smallest Counter-Example to the Goldbach Conjecture. Compilers and Interpreters Only Have to Implement the Former Option](https://esolangs.org/wiki/Unary_Except_Every_Zero_Is_Replaced_with_the_Title_of_This_Programming_Language_or,_Alternately,_Is_Replaced_with_the_Smallest_Counter-Example_to_the_Goldbach_Conjecture._Compilers_and_Interpreters_Only_Have_to_Implement_the_Former_Option) - Derivative of Unary in which every zero is replaced with the title of the programming language being discussed.
* [Unlambda](http://www.madore.org/~david/programs/unlambda) - Obfuscated functional programming.
* [Velato](http://velato.net) - Language that uses MIDI files as source, programs are defined by the pitch and order of notes.
* [Vigil](https://github.com/munificent/vigil) - Only Vigil is truly vigilant about not allowing code that fails to pass programmatic specifications.
* [Watson](https://github.com/genkami/watson) - Stack-based Turing-incomplete configuration files.
* [文言 (Wenyan)](http://wenyan-lang.lingdong.works) - Closely follows the grammar and tone of classical Chinese literature.
* [Whenever](http://www.dangermouse.net/esoteric/whenever.html) - Language that does things whenever it wants.
* [Whitespace](http://web.archive.org/web/20150623025348/http://compsoc.dur.ac.uk/whitespace) - Use only white-characters (space, tabs and newlines).
* [WordLang](https://github.com/WilliamRagstad/WordLang) - A language based on meaning-like grammar that produces output.
* [Z](https://esolangs.org/wiki/Z) - Use only the letter z.
* [ZOMBIE](https://www.dangermouse.net/esoteric/zombie.html) - Inherently evil multithreaded language designed for Necromancers.

## Algorithms

* [πfs](https://github.com/philipl/pifs) - Pi-based storage system, store your data by searching a matching sequence in pi.
* [Stacksort](https://gkoberger.github.io/stacksort) - Sorts a list by searching answers in Stack Overflow and executing code snippets until is sorted.

## Others

* [asmbf](https://github.com/kspalaiologos/asmbf) - The only true brainfuck assembler toolkit.
* [CSS-only-chat](https://github.com/kkuchta/css-only-chat) - A truly monstrous async web chat using no JS whatsoever on the frontend.
* [FizzBuzzEnterpriseEdition](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition) - Simple FizzBuzz game implemented under the most strict enterprise standards.
* [MalbolgeLisp](https://github.com/kspalaiologos/malbolge-lisp) - A Lisp interpreter in Malbolge Unshackled.
* [NoCode](https://github.com/kelseyhightower/nocode) - Secure and reliable applications. Write nothing; deploy nowhere.
* [Petrovich](http://www.dangermouse.net/esoteric/petrovich.html) - Operating System concept based on random actions and rewards/punishments.
* [vapor.js](https://github.com/madrobby/vapor.js) - The World's Smallest & Fastest JavaScript Library.

## Resources

* [DM's Esoteric Programming Languages](http://www.dangermouse.net/esoteric) - List of esoteric languages and algorithms written by dangermouse.
* [Esofiles](https://github.com/graue/esofiles) - The Esoteric Files Archive, an archive of implementations of esoteric programming languages and examples.
* [Esolang](https://esolangs.org) - Wiki of esoteric programming languages and related Resources.
* [Esoteric Codes](https://esoteric.codes) - Articles and documents collection.
* [Rosettacode](http://rosettacode.org/wiki/Rosetta_Code) - Provides examples in different languages, including esoteric languages.
* [Wikipedia/Esoteric programming languages](https://en.wikipedia.org/wiki/Esoteric_programming_language) - Wikipedia list of esoteric languages.
* [Esolang List of ideas](https://esolangs.org/wiki/List_of_ideas) - Compilation of ideas for esoteric languages and related.

## Articles

* [Let's Build a Basic Interpreter (Ruslan's Blog)](https://ruslanspivak.com/lsbasi-part1) - Series of articles explaining the basics of compilers and interpreters and how to build one.
* [Six programming paradigms that will change how you think about coding](http://www.ybrikman.com/writing/2014/04/09/six-programming-paradigms-that-will) - Post by Yevgeniy Brikman describing different programming paradigms that are not commonly applied.
* [The Fun (and Madness) of Esoteric Programming Languages](https://tomassetti.me/discovering-arcane-world-esoteric-programming-languages) - Straightforward introduction to esoteric languages with examples.
* [On the Turing Completeness Of MS PowerPoint](http://www.andrew.cmu.edu/user/twildenh/PowerPointTM/Paper.pdf) - Turing Machine on PowerPoint.

## Community

* [Anarchy Golf](http://golf.shinh.org) - Informal [golfing](https://en.wikipedia.org/wiki/Code_golf) problems server.
* [Code Golf Stack Exchange](https://codegolf.stackexchange.com) - Golfing problems and answers.
* [Freenode IRC Channel](http://webchat.freenode.net/?channels=esoteric&uio=d4) - The #esoteric IRC channel on freenode.
* [Reddit Esolangs](https://www.reddit.com/r/esolangs) - Reddit community on esolangs.
* [Esolangs Discord Server](https://discord.gg/SdFJQmd4QJ) - A Discord community about esoteric languages.


> Logo used with permission of [David Morgan-Mar](http://www.dangermouse.net/esoteric/piet/samples.html)

[esolangs.md Github](https://github.com/angrykoala/awesome-esolangs
)
