├── logo_piet.png
├── .travis.yml
├── .github
└── FUNDING.yml
├── CONTRIBUTING.md
├── LICENSE
└── README.md
/logo_piet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angrykoala/awesome-esolangs/HEAD/logo_piet.png
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 |
2 | language: node_js
3 | os:
4 | - linux
5 | node_js:
6 | - "lts/*"
7 | sudo: false
8 | git:
9 | depth: false
10 | script:
11 | - npx awesome-lint
12 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: angrykoala # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14 | thanks_dev: # Replace with a single thanks.dev username
15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
16 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contribution Guidelines
2 |
3 | Please ensure your pull request adheres to the following guidelines:
4 |
5 | * Use the following format: `[language|resource](link) - Description.`
6 | * Search previous suggestions before making a new one, as yours may be a duplicate.
7 | * Make an individual pull request for each suggestion.
8 | * Additions should be added in alphabetical order of the relevant category.
9 | * New categories, or improvements to the existing categorization are welcome.
10 | * Keep descriptions short and simple, but descriptive.
11 | * Start the description with a capital and end with a full stop/period.
12 | * Check your spelling and grammar.
13 | * The pull request should have a useful title and include a description on why the language or resource is awesome.
14 | * Any addition MUST have a link. The link should not have trailing slash or unnecessary characters.
15 | * The link must be a direct link, and not shortened, proxy or redirection.
16 | * The link MUST be available (dead links will be removed or changed).
17 | * Check the markdown syntax is correct and properly displayed in GitHub.
18 | * Check format with awesome-lint (run `npx awesome-lint`)
19 | * Check the name format to match the correct spelling of a language when possible (e.g. `reMorse` :heavy_check_mark: instead of `Remorse` :x:)
20 |
21 | ## Languages, Algorithms and Others
22 | * Suggestions should be at least partially documented, even if no implementation exists.
23 | * Only languages widely considered esoteric are accepted.
24 | * Additions of your own esoteric languages are welcome.
25 | * All links should refer to the original or most relevant web/implementation.
26 | * The link must refer to the original author, documentation or resource of the language if possible.
27 | * The suggestion should be an issue with the reasons why this language or algorithm is esoteric.
28 |
29 | ## Resources and articles
30 | * Resources must be related to esoteric languages.
31 |
32 | ## Community
33 | * Communities must be active and specific to the topic of this list
34 |
35 |
36 | Thank you for your suggestions!
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 |
3 | Statement of Purpose
4 |
5 | The laws of most jurisdictions throughout the world automatically confer
6 | exclusive Copyright and Related Rights (defined below) upon the creator and
7 | subsequent owner(s) (each and all, an "owner") of an original work of
8 | authorship and/or a database (each, a "Work").
9 |
10 | Certain owners wish to permanently relinquish those rights to a Work for the
11 | purpose of contributing to a commons of creative, cultural and scientific
12 | works ("Commons") that the public can reliably and without fear of later
13 | claims of infringement build upon, modify, incorporate in other works, reuse
14 | and redistribute as freely as possible in any form whatsoever and for any
15 | purposes, including without limitation commercial purposes. These owners may
16 | contribute to the Commons to promote the ideal of a free culture and the
17 | further production of creative, cultural and scientific works, or to gain
18 | reputation or greater distribution for their Work in part through the use and
19 | efforts of others.
20 |
21 | For these and/or other purposes and motivations, and without any expectation
22 | of additional consideration or compensation, the person associating CC0 with a
23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25 | and publicly distribute the Work under its terms, with knowledge of his or her
26 | Copyright and Related Rights in the Work and the meaning and intended legal
27 | effect of CC0 on those rights.
28 |
29 | 1. Copyright and Related Rights. A Work made available under CC0 may be
30 | protected by copyright and related or neighboring rights ("Copyright and
31 | Related Rights"). Copyright and Related Rights include, but are not limited
32 | to, the following:
33 |
34 | i. the right to reproduce, adapt, distribute, perform, display, communicate,
35 | and translate a Work;
36 |
37 | ii. moral rights retained by the original author(s) and/or performer(s);
38 |
39 | iii. publicity and privacy rights pertaining to a person's image or likeness
40 | depicted in a Work;
41 |
42 | iv. rights protecting against unfair competition in regards to a Work,
43 | subject to the limitations in paragraph 4(a), below;
44 |
45 | v. rights protecting the extraction, dissemination, use and reuse of data in
46 | a Work;
47 |
48 | vi. database rights (such as those arising under Directive 96/9/EC of the
49 | European Parliament and of the Council of 11 March 1996 on the legal
50 | protection of databases, and under any national implementation thereof,
51 | including any amended or successor version of such directive); and
52 |
53 | vii. other similar, equivalent or corresponding rights throughout the world
54 | based on applicable law or treaty, and any national implementations thereof.
55 |
56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59 | and Related Rights and associated claims and causes of action, whether now
60 | known or unknown (including existing as well as future claims and causes of
61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum
62 | duration provided by applicable law or treaty (including future time
63 | extensions), (iii) in any current or future medium and for any number of
64 | copies, and (iv) for any purpose whatsoever, including without limitation
65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66 | the Waiver for the benefit of each member of the public at large and to the
67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver
68 | shall not be subject to revocation, rescission, cancellation, termination, or
69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work
70 | by the public as contemplated by Affirmer's express Statement of Purpose.
71 |
72 | 3. Public License Fallback. Should any part of the Waiver for any reason be
73 | judged legally invalid or ineffective under applicable law, then the Waiver
74 | shall be preserved to the maximum extent permitted taking into account
75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76 | is so judged Affirmer hereby grants to each affected person a royalty-free,
77 | non transferable, non sublicensable, non exclusive, irrevocable and
78 | unconditional license to exercise Affirmer's Copyright and Related Rights in
79 | the Work (i) in all territories worldwide, (ii) for the maximum duration
80 | provided by applicable law or treaty (including future time extensions), (iii)
81 | in any current or future medium and for any number of copies, and (iv) for any
82 | purpose whatsoever, including without limitation commercial, advertising or
83 | promotional purposes (the "License"). The License shall be deemed effective as
84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the
85 | License for any reason be judged legally invalid or ineffective under
86 | applicable law, such partial invalidity or ineffectiveness shall not
87 | invalidate the remainder of the License, and in such case Affirmer hereby
88 | affirms that he or she will not (i) exercise any of his or her remaining
89 | Copyright and Related Rights in the Work or (ii) assert any associated claims
90 | and causes of action with respect to the Work, in either case contrary to
91 | Affirmer's express Statement of Purpose.
92 |
93 | 4. Limitations and Disclaimers.
94 |
95 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
96 | surrendered, licensed or otherwise affected by this document.
97 |
98 | b. Affirmer offers the Work as-is and makes no representations or warranties
99 | of any kind concerning the Work, express, implied, statutory or otherwise,
100 | including without limitation warranties of title, merchantability, fitness
101 | for a particular purpose, non infringement, or the absence of latent or
102 | other defects, accuracy, or the present or absence of errors, whether or not
103 | discoverable, all to the greatest extent permissible under applicable law.
104 |
105 | c. Affirmer disclaims responsibility for clearing rights of other persons
106 | that may apply to the Work or any use thereof, including without limitation
107 | any person's Copyright and Related Rights in the Work. Further, Affirmer
108 | disclaims responsibility for obtaining any necessary consents, permissions
109 | or other rights required for any use of the Work.
110 |
111 | d. Affirmer understands and acknowledges that Creative Commons is not a
112 | party to this document and has no duty or obligation with respect to this
113 | CC0 or use of the Work.
114 |
115 | For more information, please see
116 |
117 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Awesome Esolangs [](https://awesome.re)
2 |
3 |
4 |
5 | Curated list of awesome esoteric programming languages, resources and related projects.
6 |
7 |
8 | > "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."
9 | > ***esolang.org***
10 |
11 |
12 | ## Contents
13 | * [Languages](#languages)
14 | * [Algorithms](#algorithms)
15 | * [Others](#others)
16 | * [Resources](#resources)
17 | * [Articles](#articles)
18 | * [Community](#community)
19 |
20 |
21 | ## Languages
22 |
23 | * [><>](https://esolangs.org/wiki/fish) - A stack-based 2d language with support for reflection.
24 | * [1+](https://esolangs.org/wiki/1%2B) - A surprisingly user-friendly language with a highly-limited instruction set.
25 | * [78](https://github.com/oatmealine/78) - A single-character command language focused around the numbers 7 and 8.
26 | * [ajsone](https://www.quaxio.com/ajsone) - Language defined completely in JSON.
27 | * [AlmostBinary](https://github.com/wsdt/AlmostBinary) - Code in binary and run on any platform.
28 | * [ArnoldC](http://lhartikk.github.io/ArnoldC) - Based on the best one-liners of Arnold Schwarzenegger.
29 | * [Befunge](https://esolangs.org/wiki/Befunge) - Two-dimensional language.
30 | * [Brackets](https://github.com/kvbc/brackets) - Language made of brackets, a lot of brackets.
31 | * [Brainfuck](https://esolangs.org/wiki/Brainfuck) - Minimalist language using only 8 single-character commands.
32 | * [C Flat](https://github.com/NicksterSand/Cflat) - Musical language focused on sound rather than notation with creative freedom in mind.
33 | * [CellTail](https://github.com/mousetail/celltail) - A 1d celular automata based language, supports a complex pattern matching syntax.
34 | * [Charcoal](https://github.com/somebody1234/Charcoal) - Concise language for sketching ASCII art.
35 | * [Chef](http://www.dangermouse.net/esoteric/chef.html) - Programs that look like cooking recipes.
36 | * [Chicken](https://esolangs.org/wiki/Chicken) - Only 1 valid symbol: 'chicken'.
37 | * [ChuckScript](https://github.com/angrykoala/chuckscript) - Unary-based language, where the code is a single number.
38 | * [COW](https://esolangs.org/wiki/COW) - Brainfuck variant using twelve variations of *moos* as instructions.
39 | * [DNA#](https://esolangs.org/wiki/DNA-Sharp) - Language based on the structure of the DNA.
40 | * [Dots](https://github.com/josconno/dots) - A turing-complete language using "." symbol only.
41 | * [Electra](https://github.com/DolphyWind/Electra-Lang) - Code like an electrician.
42 | * [Emojicode](http://www.emojicode.org) - Full-blown programming language consisting of emojis.
43 | * [Enterprise™](https://github.com/joaomilho/Enterprise) - Non deterministic unnecessarily statically typed language.
44 | * [False](http://strlen.com/false-language) - Heavily obfuscated language with a minimal implementation.
45 | * [Fetlang](https://github.com/Property404/fetlang) - Designed such that source code looks like poorly written fetish erotica.
46 | * [FlipJump](https://github.com/tomhea/flip-jump) - 1 instruction: Flip a bit, then Jump. The simplest OISC.
47 | * [Folders](https://github.com/rottytooth/Folders) - Code written with folders.
48 | * [FreakC](https://github.com/FreakC-Foundation/FreakC) - Full-blown programming language with NSFW contents and memes.
49 | * [Fugue](https://esolangs.org/wiki/Fugue) - Music as source code.
50 | * [Golfscript](http://www.golfscript.com/golfscript) - Stack oriented, aimed at solving problems in as few keystrokes as possible.
51 | * [Haifu](http://www.dangermouse.net/esoteric/haifu.html) - Designed with the core values of Eastern philosophy in mind.
52 | * [INTERCAL](http://www.catb.org/~esr/intercal) - Parody language intended to be completely different from other languages.
53 | * [Japt](https://github.com/ETHproductions/japt) - Reduced JavaScript for golfing.
54 | * [Jelly](https://github.com/DennisMitchell/jellylanguage) - Golfing language based on J.
55 | * [JellyScript](https://github.com/nguyenphuminh/Jellyscript) - Brainfuck-based with delicious jelly.
56 | * [JSFuck](https://github.com/aemkei/jsfuck) - Esoteric programming style based on the atomic parts of JavaScript.
57 | * [Lazy K](https://tromp.github.io/cl/lazy-k.html) - Minimal, turing-complete pure functional language without extra features.
58 | * [legit](https://morr.cc/legit) - Programs defined entirely by the graph of the git repository instead of its contents.
59 | * [LolCode](http://lolcode.org) - Language with keywords based on the lolcat meme expressions.
60 | * [Malbolge](https://esolangs.org/wiki/Malbolge) - Named after the 8th level of hell, is designed to be as difficult as possible to program.
61 | * [Mindfck](https://github.com/angrykoala/mindfck) - High level language that transpiles to Brainfuck.
62 | * [Monicelli](https://github.com/esseks/monicelli) - Programming using Italian-like gibberish.
63 | * [Ni](https://github.com/DeybisMelendez/ni) - Brainfuck-based with more helpful instructions.
64 | * [Omgrofl](https://esolangs.org/wiki/Omgrofl) - Syntax resembling Internet slang.
65 | * [Ook!](http://www.dangermouse.net/esoteric/ook.html) - Brainfuck-based language, where the commands are orangutan words.
66 | * [Orca](https://hundredrabbits.itch.io/orca) - Livecoding environment to quickly create procedural audio sequencers.
67 | * [Piet](http://www.dangermouse.net/esoteric/piet.html) - Language in which programs look like abstract paintings using colors as code. Named after Piet Mondrian.
68 | * [RASEL](https://github.com/Nakilon/rasel) - Fungeoid with no limits on program space, float precision, and with a bit of random access to stack.
69 | * [reMorse](http://esolangs.org/wiki/reMorse) - Morse-styled language.
70 | * [Rockstar](https://github.com/dylanbeattie/rockstar) - Designed for creating computer programs that are also song lyrics.
71 | * [Shakespeare](http://shakespearelang.sourceforge.net) - Language where the code appear to be Shakespearean plays.
72 | * [Schoenberg](https://tomeraberba.ch/schoenberg) - The MIDI Esoteric Programming Language.
73 | * [Spooky](https://spookylang.com) - The scariest programming language :jack_o_lantern: :skull:.
74 | * [Suzy](https://github.com/gvx/suzy) - 3D language inspired in Befunge.
75 | * [Technologic](https://esolangs.org/wiki/Technologic) - Language in which programs look like the lyrics to the Daft Punk song Technologic.
76 | * [Thue](https://github.com/jcolag/Thue) - *Matrioshka* language based on nondeterministic string rewriting of a semi-Thue grammar.
77 | * [Tru](https://github.com/sungwoncho/tru) - A stack-based language with prefix-free brackets.
78 | * [Turtle](https://github.com/TypeMonkey/Turtle) - Uses long-term storage for memory use.
79 | * [Unary](https://esolangs.org/wiki/Unary) - Brainfuck-based language where all the commands are 0.
80 | * [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.
81 | * [Unlambda](http://www.madore.org/~david/programs/unlambda) - Obfuscated functional programming.
82 | * [Velato](http://velato.net) - Language that uses MIDI files as source, programs are defined by the pitch and order of notes.
83 | * [Vigil](https://github.com/munificent/vigil) - Only Vigil is truly vigilant about not allowing code that fails to pass programmatic specifications.
84 | * [Watson](https://github.com/genkami/watson) - Stack-based Turing-incomplete configuration files.
85 | * [文言 (Wenyan)](http://wenyan-lang.lingdong.works) - Closely follows the grammar and tone of classical Chinese literature.
86 | * [Whenever](http://www.dangermouse.net/esoteric/whenever.html) - Language that does things whenever it wants.
87 | * [Whitespace](http://web.archive.org/web/20150623025348/http://compsoc.dur.ac.uk/whitespace) - Use only white-characters (space, tabs and newlines).
88 | * [WordLang](https://github.com/WilliamRagstad/WordLang) - A language based on meaning-like grammar that produces output.
89 | * [Z](https://esolangs.org/wiki/Z) - Use only the letter z.
90 | * [ZOMBIE](https://www.dangermouse.net/esoteric/zombie.html) - Inherently evil multithreaded language designed for Necromancers.
91 |
92 | ## Algorithms
93 |
94 | * [πfs](https://github.com/philipl/pifs) - Pi-based storage system, store your data by searching a matching sequence in pi.
95 | * [Stacksort](https://gkoberger.github.io/stacksort) - Sorts a list by searching answers in Stack Overflow and executing code snippets until is sorted.
96 |
97 | ## Others
98 |
99 | * [asmbf](https://github.com/kspalaiologos/asmbf) - The only true brainfuck assembler toolkit.
100 | * [CSS-only-chat](https://github.com/kkuchta/css-only-chat) - A truly monstrous async web chat using no JS whatsoever on the frontend.
101 | * [FizzBuzzEnterpriseEdition](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition) - Simple FizzBuzz game implemented under the most strict enterprise standards.
102 | * [MalbolgeLisp](https://github.com/kspalaiologos/malbolge-lisp) - A Lisp interpreter in Malbolge Unshackled.
103 | * [NoCode](https://github.com/kelseyhightower/nocode) - Secure and reliable applications. Write nothing; deploy nowhere.
104 | * [Petrovich](http://www.dangermouse.net/esoteric/petrovich.html) - Operating System concept based on random actions and rewards/punishments.
105 | * [vapor.js](https://github.com/madrobby/vapor.js) - The World's Smallest & Fastest JavaScript Library.
106 |
107 | ## Resources
108 |
109 | * [DM's Esoteric Programming Languages](http://www.dangermouse.net/esoteric) - List of esoteric languages and algorithms written by dangermouse.
110 | * [Esofiles](https://github.com/graue/esofiles) - The Esoteric Files Archive, an archive of implementations of esoteric programming languages and examples.
111 | * [Esolang](https://esolangs.org) - Wiki of esoteric programming languages and related Resources.
112 | * [Esoteric Codes](https://esoteric.codes) - Articles and documents collection.
113 | * [Rosettacode](http://rosettacode.org/wiki/Rosetta_Code) - Provides examples in different languages, including esoteric languages.
114 | * [Wikipedia/Esoteric programming languages](https://en.wikipedia.org/wiki/Esoteric_programming_language) - Wikipedia list of esoteric languages.
115 | * [Esolang List of ideas](https://esolangs.org/wiki/List_of_ideas) - Compilation of ideas for esoteric languages and related.
116 |
117 | ## Articles
118 |
119 | * [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.
120 | * [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.
121 | * [The Fun (and Madness) of Esoteric Programming Languages](https://tomassetti.me/discovering-arcane-world-esoteric-programming-languages) - Straightforward introduction to esoteric languages with examples.
122 | * [On the Turing Completeness Of MS PowerPoint](http://www.andrew.cmu.edu/user/twildenh/PowerPointTM/Paper.pdf) - Turing Machine on PowerPoint.
123 |
124 | ## Community
125 |
126 | * [Anarchy Golf](http://golf.shinh.org) - Informal [golfing](https://en.wikipedia.org/wiki/Code_golf) problems server.
127 | * [Code Golf Stack Exchange](https://codegolf.stackexchange.com) - Golfing problems and answers.
128 | * [Freenode IRC Channel](http://webchat.freenode.net/?channels=esoteric&uio=d4) - The #esoteric IRC channel on freenode.
129 | * [Reddit Esolangs](https://www.reddit.com/r/esolangs) - Reddit community on esolangs.
130 | * [Esolangs Discord Server](https://discord.gg/SdFJQmd4QJ) - A Discord community about esoteric languages.
131 |
132 |
133 | > Logo used with permission of [David Morgan-Mar](http://www.dangermouse.net/esoteric/piet/samples.html)
134 |
--------------------------------------------------------------------------------