Esoteric programming language: Difference between revisions

Content deleted Content added
f
Tags: references removed Mobile edit Mobile web edit
m Reverted edits by 141.226.123.238 (talk) to last version by 206.183.21.66
Line 1:
{{technical|date=October 2017}}
f
An '''esoteric programming language''' (sometimes shortened to '''esolang''') is a [[programming language]] designed to test the boundaries of computer programming language design, as a proof of concept, as [[software art]], as a hacking interface to another language (particularly [[functional programming]] or [[procedural programming]] languages), or as a joke. The use of ''[[wiktionary:esoteric|esoteric]]'' distinguishes these languages from programming languages that working developers use to write software. Usually, an esolang's creators do not intend the language to be used for mainstream programming, although some esoteric features, such as [[visuospatial]] [[syntax (programming languages)|syntax]],<ref>McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). "Visualisation of Live Code". In ''Electronic Visualisation and the Arts'', London: 2010.</ref> have inspired practical applications in the arts. Such languages are often popular among [[Hacker (hobbyist)|hackers]] and hobbyists.
 
Usability is rarely a goal for esoteric programming language designers—often it is quite the opposite. Their usual aim is to remove or replace conventional language features while still maintaining a language that is [[Turing-complete]], or even one for which the [[Computability theory (computer science)|computational class]] is unknown.
=f
 
==History==
The earliest, and still the canonical example of an esoteric language was [[INTERCAL]],<ref>Matthew Fuller, [https://mitpress.mit.edu/books/software-studies Software Studies], MIT Press, 2008</ref> designed in 1972 by [[Don Woods (programmer)|Don Woods]] and James M. Lyon, with the stated intention of being unlike any other programming language the authors were familiar with.<ref name="Raymond1996">{{cite book|author=Eric S. Raymond|title=The New Hacker's Dictionary|url=https://books.google.com/books?id=g80P_4v4QbIC&pg=PA258|year=1996|publisher=MIT Press|isbn=978-0-262-68092-9|page=258}}</ref><ref name="woods-lyon-intercal">{{citation|url=http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |last1=Woods |first1=Donald R. |last2=Lyon |first2=James M. |year=1973 |title=The INTERCAL Programming Language Reference Manual |accessdate=2009-04-24 |publisher=Muppetlabs.com |archiveurl=https://www.webcitation.org/5gGhTDeaV?url=http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |archivedate=2009-04-24 |deadurl=yes |df= }}</ref> It [[parody|parodied]] elements of established programming languages of the day, such as [[Fortran]], [[COBOL]], and [[assembly language]].
 
For many years INTERCAL was represented only by paper copies of the INTERCAL manual. The language's revival in 1990 as an implementation in C under [[Unix]] stimulated a wave of interest in the intentional design of esoteric computer languages.
 
In 1993, [[Wouter van Oortmerssen]] created FALSE, a small [[stack-oriented programming language]], with syntax designed to make the code inherently obfuscated, confusing, and unreadable. It also has a compiler of only 1024 bytes.<ref name="Wouter">{{cite web | title= Interview with Wouter van Oortmerssen | journal = esoteric.codes | url = http://esoteric.codes/post/122942498363/interview-with-wouter-van-oortmerssen | date = 1 July 2015 | accessdate = 1 December 2015}}</ref> This inspired Urban Müller to create an even smaller language, the now-infamous [[brainfuck]], which consists of only eight recognized characters. Along with Chris Pressey's [[Befunge]] (like FALSE, but with a two-dimensional instruction pointer), brainfuck is now one of the best-supported esoteric programming languages. These are canonical examples of minimal [[Turing tarpit]]s and needlessly obfuscated language features. Brainfuck is related to the [[P′′]] family of [[Turing machine]]s.
 
==Esoteric programming terms==
Line 75 ⟶ 83:
 
=== FALSE ===
FALSE is a [[stack-based language]] with single-character commands and variables.<ref>{{cite web |url=http://strlen.com/false/ |title=The FALSE Programming Language |last1=van Oortmerssen |first1=Wouter |publisher=Self-published |access-date=11 February 2016}}</ref> For example, 3 + 1 can be calculated by evaluating (λ x → x + 1)(3):
3[1+]!
 
=== FiM++ ===