Esoteerinen ohjelmointikieli

Esoteerinen ohjelmointikieli tai esolang
on ohjelmointikieli, jotka on suunniteltu testaamaan ohjelmointikielen rakenteen rajoja. Yleensä tavoitteena on osoittaa erikoisia tapoja joilla systeemi voi olla Turing-täydellinen, eli kykenevä simuloimaan minkä tahansa muun tietokoneen tai ohjelman toimintaa. Esoteerisen ohjelmointikielen tarkoitus voi olla myös hauskuuttaa. Esimerkiksi AAAAAAAAAAAAAA!!!!  on huumoritarkoituksella ohjelmoitu esoteerinen ohjelmointikieli, joka koostuu pelkästään A:sta, välilyönneistä ja huutomerkeistä.

Esoteeriset ohjelmat eivät yleensä ole helposti ohjelmoitavissa, joten ne ovat lähinnä hakkereiden ja ohjelmoinnin harrastajien suosiossa. Käytettävyys muutenkin on esoteerisissa ohjelmissa merkityksetön, tai jopa huono asia. Esimerkiksi Malbolge -ohjelmointikieli on tehty tarkoituksella mahdollisimman vaikeakäyttöiseksi. Toisaalta esoteerisissä kielissä voidaan myös käyttää huumoria; Arnold-C käyttää komentosyntaksinaan Schwarzeneggerin toimintaelokuvien vuorosanoja, Chef ruokareseptejä ja lolcode Internet-meemejä.

Historia
Varhaisin esimerkki esoteerisistä kielistä oli INTERCAL, jonka James Lyons ja Don Woods suunnittelivat vuonna 1972. Heidän tavoitteensa oli tehdä ohjelmointikieli joka oli mahdollisimman erilainen kuin kaikki muut heidän tuntemansa ohjelmointikielet.
Yli 20 vuotta myöhemmin Urban Müller loi kenties kuuluisimman esoteerisen ohjelmointikielen, brainfuckin, joka koostuu pelkästään kahdeksasta merkistä. Sen tarkoituksena oli olla mahdollisimman pelkistetty ohjelmointikieli.

Muita paremmin tunnettuja esoteerisia ohjelmointikieliä ovat Befunge, joka mahdollistaa kielen kirjoittamisen sekä lukemiseen oikean ja vasemman lisäksi myös ylös- ja alaspäin, sekä Malbolge, maailman vihamielisimpänä ja käytettävyydeltään vaikeimpana pidetty ohjelmointikieli, jonka normaali käyttö vaatii oikeastaan enemmän työtä kuin jotkin vanhanaikaiset sotilassalausalgoritmit . Malboglen ensimmäinen ei-esimerkkikoodi jouduttiin luomaan laskennallisesti koodigeneraattorin avulla.

Esoteerisia ohjelmointikieliä 
Befunge
RUBE
NULL
Whitespace
Brainfuck

Lähteet 
http://esolangs.org/wiki/Main_Page

Viitteet 

Ohjelmointikielet