Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Esoteric programming language
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Examples == <!-- Please do ''not'' add the language you just created to this list. Add it to the Esoteric Wiki, https://esolangs.org, instead. Wikipedia is not a place to put whatever language you just invented, and Esolangs is. --> {{See also|List of programming languages by type#Esoteric languages}} === Befunge === [[Befunge]] allows the instruction pointer to roam in multiple dimensions through the code. For example, the following program displays [["Hello, World!" program|"Hello World"]] by pushing the characters in reverse order onto the stack, then printing the characters in a loop which circulates clockwise through the instructions {{code|>|befunge}}, {{code|:|befunge}}, {{code|v|befunge}}, {{code|_|befunge}}, {{code|,|befunge}}, and {{code|^|befunge}}. {{Syntax highlight| "dlroW olleH">:v ^,_@ |befunge}} There are many versions of Befunge, the most common being Befunge-93, named as such because of its release year.<ref>{{Cite web|url=https://catseye.tc/article/Languages.md|title=Languages|website=Cat's Eye Technologies}}</ref> === Binary lambda calculus === [[Binary lambda calculus]] is designed from an [[algorithmic information theory]] perspective to allow for the densest possible code with the most minimal means, featuring a 29-byte self interpreter, a 21-byte prime number sieve, and a 112-byte Brainfuck interpreter.<ref>{{cite web |author=John Tromp |title=Most functional |url=https://www.ioccc.org/2012/tromp/index.html |publisher=The International Obfuscated C Code Contest |archive-url=https://web.archive.org/web/20250117050155/https://www.ioccc.org/2012/tromp/index.html |archive-date=2025-01-17 |url-status=live}}</ref> === Brainfuck=== [[Brainfuck]] is designed for extreme minimalism and leads to obfuscated code, with programs containing only eight distinct characters. The following program outputs "Hello, world!":<ref>{{Cite web |title=El Brainfuck|url=https://copy.sh/brainfuck/?c=KysrKysrKysrK1s-KysrKysrKz4rKysrKysrKysrPisrKzw8PC1dPisrLj4rLisrKysrKysKIC4uKysrLj4rKy48PCsrKysrKysrKysrKysrKy4-LisrKy4tLS0tLS0uLS0tLS0tLS0uPisu |access-date=2022-11-30 |website=copy.sh}}</ref> <syntaxhighlight lang="bf"> ++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++ ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+. </syntaxhighlight> All characters other than {{code|lang=bf|+-<>,.[]}} are ignored. === Chicken === Chicken has just three tokens, the word "chicken", " " (the space character), and the newline character. The compiler interprets the number of "chickens" on a line as an opcode instruction which it uses to manipulate data on a stack. A simple chicken program can contain dozens of lines with nothing but the word "chicken" repeated countless times.<ref>{{Cite web|title="Hello world" in Esoteric Programming Languages? (Esolangs)|url=https://dev.to/jbc7ag/hello-world-in-esoteric-programming-languages-esolangs-5122|access-date=2022-12-04|website=DEV Community 👩💻👨💻|date=25 July 2020 |language=en}}</ref> Chicken was invented by Torbjörn Söderstedt who drew his inspiration for the language from a parody of a scientific dissertation.<ref>{{Cite web|date=2018-08-08|title=Weirdest Programming Languages {{!}} Programming|url=https://www.omnesgroup.com/weirdest-programming/|access-date=2022-12-04|website=www.omnesgroup.com|language=en-US}}</ref><ref>{{Cite web|date=27 April 2022|title=8 Goofy Programming Languages|url=https://www.thecodingspace.com/blog/2022-04-27-8-goofy-programming-languages/}}</ref><ref>{{Cite web |last=Hongkiat.com |date=2021-09-08 |title=10 Most Bizarre Programming Languages, Vol. 2 |url=https://www.hongkiat.com/blog/bizarre-insane-programming-languages/ |access-date=2022-12-04 |website=Hongkiat |language=en-US}}</ref> === Chef === Chef is a [[stack-oriented programming language]] created by [[David Morgan-Mar]], designed to make programs look like [[Recipe|cooking recipes]].<ref>{{cite book|last=Cozens|first=Simon|title=Advanced Perl programming|year=2005|publisher=O'Reilly Media|isbn=978-0-596-00456-9|page=269|quote=A final Acme curiosity, and one of my favourites, is Acme::Chef, an implementation of David Morgan-Mar's Chef programming language. In Chef, programs are expressed in the form of recipes: ...}}</ref> Programs consist of a title, a list of variables and their data values, and a list of stack manipulation instructions.<ref name="chef">{{cite web|url=https://dangermouse.net/esoteric/chef.html|title=Chef|work=DM's Esoteric Programming Languages|first=David|last=Morgan-Mar|publisher=Self-published|date=2011-03-24|access-date=2023-05-01}}</ref> A joking design principle states that "program recipes should not only generate valid output, but be easy to prepare and delicious", and Morgan-Mar notes that an example [["Hello, World!" program]] with 101 eggs and {{cups|111|US}} oil would produce "a lot of food for one person."<ref name="chef"/><ref>{{cite web|url=https://dangermouse.net/esoteric/chef_hello.html|title=Chef - Hello World|work=DM's Esoteric Programming Languages|first=David|last=Morgan-Mar|publisher=Self-published|date=2014-06-28|access-date=2023-05-01}}</ref> === FRACTRAN === A [[FRACTRAN]] program is an ordered list of positive fractions together with an initial positive integer input <math>n</math>. The program is run by multiplying the integer <math>n</math> by the first fraction <math>f</math> in the list for which <math>nf</math> is an integer. The integer <math>n</math> is then replaced by <math>nf</math> and the rule is repeated. If no fraction in the list produces an integer when multiplied by <math>n</math>, the program halts. FRACTRAN was invented by mathematician [[John Horton Conway|John Conway]].<ref>{{cite book |last1=Kneusel |first1=Ronald |title=Strange Code: Esoteric Languages That Make Programming Fun Again |date=2022 |publisher=No Starch Press |isbn=978-1718502406 |page=217 |ref=kneusel-strange-code-fractran}}</ref> === GolfScript === Programs in GolfScript, a language created for [[code golf]], consist of lists of items, each of which is pushed onto the [[Stack (abstract data type)|stack]] as it is encountered, with the exception of variables which have code blocks as their value, in which case the code is executed.<ref>{{cite web|url=http://www.golfscript.com/golfscript/tutorial.html|title=GolfScript Tutorial|first=Darren|last=Smith|year=2007}}</ref> === INTERCAL === [[INTERCAL]], short for "Compiler Language With No Pronounceable Acronym", was created in 1972 as a parody to satirize aspects of the various programming languages at the time.<ref name="woods-lyon-intercal"/> === JSFuck === [[JSFuck]] is an esoteric programming style of [[JavaScript]], where code is written using only six characters: <code>[</code>, <code>]</code>, <code>(</code>, <code>)</code>, <code>!</code>, and <code>+</code>. Unlike Brainfuck, which requires its own compiler or interpreter, JSFuck is valid JavaScript code, meaning JSFuck programs can be run in any [[web browser]] or engine that interprets JavaScript.<ref>{{Cite web|url=https://thedailywtf.com/articles/bidding-on-security|title=Bidding on Security|last=Bailey|first=Jane|date=2016-02-29|website=The Daily WTF|language=en|access-date=2020-03-02}}</ref><ref>{{Cite web|url=https://alligator.io/js/exploring-jsfck/|title=Exploring JSF*ck|website=alligator.io|language=en|access-date=2020-03-02|archive-url=https://web.archive.org/web/20200302154212/https://alligator.io/js/exploring-jsfck/|archive-date=2020-03-02|url-status=dead}}</ref> It has been used in a number of [[cross-site scripting]] (XSS) attacks on websites such as [[eBay]] due to its ability to evade cross-site scripting detection filters.<ref name="ArsTechnica 2016 eBay">{{cite web|url=https://arstechnica.com/security/2016/02/ebay-has-no-plans-to-fix-severe-bug-that-allows-malware-distribution/|title=eBay has no plans to fix "severe" bug that allows malware distribution [Updated]|work=Ars Technica|author=Dan Goodin|date=3 February 2016}}</ref> === LOLCODE === [[LOLCODE]] is designed to resemble the speech of [[lolcat]]s. The following is the "Hello World" example: <pre> HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE </pre> While the [[Semantics (computer science)|semantics]] of LOLCODE is not unusual, its syntax has been described as a [[linguistic]] phenomenon, representing an unusual example of [[informal speech]] and [[internet slang]] in programming.<ref>{{Cite journal |last1=Zabenkov |first1=A.A. |last2=Morel Morel |first2=D.A. |date=2014 |title=Esoteric programming languages as a state-of-the-art semiotic trend |journal=Experientia Est Optima Magistra: Collected Arts |volume=3 |publisher=Belgorod State University |url=http://dspace.bsu.edu.ru/handle/123456789/9169 |page=170}}</ref> === Malbolge === [[Malbolge]] (named after the [[Malebolge|8th circle of Hell]]) was designed to be the most difficult and esoteric programming language. Among other features, code is self-modifying by design and the effect of an instruction depends on its address in memory.<ref>{{Cite web|title = Interview with Ben Olmstead|url = https://esoteric.codes/blog/interview-with-ben-olmstead|last = Temkin|first = Daniel|date = 2014-11-03|website = esoteric.codes|accessdate = 2021-01-07}}</ref> === Piet === [[File:Piet Program.gif|thumb|Piet program that prints 'Piet']] [[File:Piet Program Hello World.gif|thumb|A "Hello World" program in Piet]] '''Piet''' is a language designed by [[David Morgan-Mar]], whose programs are [[bitmap]]s that look like [[abstract art]].<ref name=":0"> {{cite web | title = Piet | url = https://dangermouse.net/esoteric/piet.html | last = Morgan-Mar | first = David | date = 25 January 2008 | access-date = 1 May 2023}} </ref> The execution is guided by a "pointer" that moves around the image, from one continuous coloured region to the next. Procedures are carried out when the pointer exits a region. There are 20 colours for which behaviour is specified: 18 "colourful" colours, which are ordered by a 6-step hue cycle and a 3-step brightness cycle; and black and white, which are not ordered. When exiting a "colourful" colour and entering another one, the performed procedure is determined by the number of steps of change in hue and brightness. Black cannot be entered; when the pointer tries to enter a black region, the rules of choosing the next block are changed instead. If all possible rules are tried, the program terminates. Regions outside the borders of the image are also treated as black. White does not perform operations, but allows the pointer to "pass through". The behaviour of colours other than the 20 specified is left to the compiler or interpreter.<ref name=":0" />{{Primary source inline|date=April 2022}} Variables are stored in memory as signed integers in a single [[Stack (abstract data type)|stack]]. Most specified procedures deal with operations on that stack, while others deal with input/output and with the rules by which the compilation pointer moves.<ref>{{cite book |last1=Kneusel |first1=Ronald |title=Strange Code: Esoteric Languages That Make Programming Fun Again |date=2022 |publisher=No Starch Press |isbn=978-1718502406 |pages=246–247 |ref=kneusel-strange-code-piet}}</ref> Piet was named after the Dutch painter [[Piet Mondrian]].<ref name="Cox2013">{{harvnb|Cox|2013|p=6}}</ref> The original intended name, ''Mondrian'', was already taken by [[Mondrian (software)|an open-source statistical data-visualization system]].<ref name=":0" /> === Shakespeare === [[Shakespeare Programming Language]] (SPL) is designed to make programs look like [[Shakespearean]] plays. For example, the following statement declares a point in the program which can be reached via a GOTO-type statement:{{citation needed|date=April 2022}} [[Hamlet#Act I|Act I: Hamlet's insults and flattery.]] === Unlambda === [[Unlambda]] is a minimalist functional programming language based on [[SKI calculus]], but combined with first-class [[continuation]]s and imperative I/O (with input usually requiring the use of continuations).<ref>{{Cite web|work=Good Math, Bad Math (blog)|first=Mark C.|last=Chu-Carroll|date=2006-08-11|title=Friday Pathological Programming: Unlambda, or Programming Without Variables|url=http://scienceblogs.com/goodmath/2006/08/11/friday-pathological-programmin-3/|publisher=ScienceBlogs}}</ref> === Whitespace === [[File:Whitespace in vim2.png|right|206px|thumb|Whitespace [[hello world program]] with syntax highlighting {{legend|#0000ab|tabs}} {{legend|#ab0000|spaces}}]] [[Whitespace (programming language)|Whitespace]] uses only whitespace characters (space, tab, and return), ignoring all other characters, which can therefore be used for comments. This is the reverse of many traditional languages, which do not distinguish between different whitespace characters, treating tab and space the same. It also allows Whitespace programs to be hidden in the source code of programs in languages like C.{{citation needed|date=April 2022}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)