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.