een esoterische programmeertaal is een programmeertaal die ontworpen is om de normen van taalontwerp aan te vechten. Het is een taal die bedoeld is om een punt te maken. Het punt kan van alles zijn: de uitdaging zelf om iets ongewoons te creëren, een uitgebreide grap te maken, een taal als artistieke expressie te creëren, veelbelovende ideeën voor programmeren te testen, enz.
dit moet duidelijk maken dat er geen eenvoudige manier is om alle verschillende esoterische programmeertalen goed te categoriseren of te organiseren, omdat ze per definitie de regels tarten. Maar we kunnen een aantal concepten en organiserende principes gebruiken om een beter gevoel van de gemeenschap om hen heen te krijgen. Zodat we konden begrijpen waar de mensen ze voor gebruiken, of om deze informatie te gebruiken als inspiratie om je eigen esoterische taal te creëren.
Download de gids met 68 bronnen over het maken van programmeertalen
ontvang De Gids voor uw inbox om het te lezen op al uw apparaten als je tijd hebt
enkele nuttige Concepten
Turing Tarpit
een Turing tarpit is een programmeertaal die Turing-compleet is, maar praktisch onbruikbaar. Een Turing-complete taal kan elke Turing-machine simuleren. In praktische termen, kunt u elk programma mee te schrijven. In theorie zijn al deze talen even krachtig, maar degenen die ook een Turing Tarpit zijn, maken het ongelooflijk moeilijk om een programma te schrijven. Een veel voorkomende manier om dat te doen is om het aantal beschikbare symbolen te verminderen: probeer zelfs een Hello World-programma met slechts 8 tekens te schrijven.
Quine
een quine is een programma dat als uitvoer een kopie van de broncode produceert. Het programma kan niet het lege programma zijn, zelfs als het lege programma Een geldig programma is in de specifieke taal. Het lezen van de broncode van schijf of geheugen wordt ook beschouwd als vals spelen. De naam “quine” werd bedacht door Douglas Hofstadter in zijn boek Gödel, Escher, Bach: An Eternal Golden Braid, ter ere van filosoof Willard Van Orman Quine. Dus het concept van quine is niet uniek voor esoterische programmeertalen, maar is niettemin een typische eerste uitdaging om te overwinnen bij het schrijven van een.
Code Golf
een code golf is een soort competitie waarbij het doel is om het kortst mogelijke programma te schrijven dat een bepaald algoritme implementeert. In deze context, Kortste betekent het hebben van de kortste broncode. Het betekent niet dat het hebben van de kleinere grootte van de binaire uitvoerbare code. Het spelen van code golf heet “golf scripting”. Er zijn ook alle andere soorten wedstrijden met betrekking tot programmeren, die, gezien het publiek, vaak creatief bedriegen aan te moedigen. Over het algemeen is een uitdaging een motiverende factor voor veel esoterische programmeertalen.
verduistering
het begrip verduistering, dat wil zeggen het verbergen van de werkelijke betekenis van een bericht, is uiteraard niet exclusief voor esoterische programmeertalen of zelfs programmering in het algemeen. Maar het heeft een grote relevantie in veel esoterische programmeertalen. Vooral als u van plan bent het in de grotere algemene zin van misleiding of verwarring van de ontvanger. Je verbergt de boodschap niet omdat de boodschap zelf belangrijk is, maar omdat de verborgen vorm op zich het doel is. Een typische manier om dit te bereiken is door het minimaliseren van het aantal symbolen van de taal, maar je kunt ook een programmeertaal camoufleren in wat eruit ziet als normale tekst of een afbeelding.
Non-determinisme
in deze grotere betekenis van misleiding of verwarring van het publiek, kan ook non-determinisme worden gebruikt om hetzelfde doel te bereiken. Een niet-deterministische taal is er een waarvoor, gezien de huidige toestand van een programma, de volgende toestand niet altijd kan worden voorspeld. Het concept heeft enige toepassing in normale programmeertalen, voornamelijk als gevolg van onvoorspelbare omstandigheden tijdens de looptijd. Maar het wordt tot het uiterste genomen door bepaalde esoterische programmeertalen, door variabelen te randomiseren of zelfs de instructies zelf te randomiseren.
groepen van esoterische programmeertalen
zoals we al hebben gezegd, kunnen we geen uitputtende manier bieden om alle esoterische programmeertalen te organiseren. En zelfs als iemand het kon vinden, zou al snel iemand anders een nieuwe esoterische programmeertalen uitvinden om het ongeldig te maken. Dus wat we proberen te doen is gewoon een aantal groepen of categorieën aan te bieden, om de wereld van esoterische programmeertalen beter te begrijpen en te verkennen.
- talen met een objectieve waarde, hoewel deze waarde niet noodzakelijk extrinsiek of typisch is. Een basisvoorbeeld is een taal die is ontworpen om een code golf wedstrijd te winnen: de waarde ervan kan worden gemeten, maar het heeft geen betekenis buiten de gemeenschap van esoterische programmeertalen. Maar de meer bruikbare soort zijn degenen ontworpen om een ongebruikelijke doelstelling te bereiken, zoals het omzeilen van veiligheidsmaatregelen (zie JSFuck) of het definiëren van type-0 talen van de Chomsky hiërarchie (zie Thue).
- onbruikbare talen. Dit zijn talen die zeer uitdagend zijn om te gebruiken. Dit kan een expliciete doelstelling van de ontwerper zijn of gewoon een ongeval van het ontwerp zelf. Een gebruiker kan zelfs vond leuk om ze te gebruiken voor enige tijd. Een typische manier om een onbruikbare taal te bereiken, zowel door ontwerp als per ongeluk, is met minimalisme (zie Brainfuck). Maar als je iets wilt dat bijna onmogelijk te gebruiken is, heb je iets nodig zoals een taal die een ternair systeem gebruikt en doelbewust zichzelf verandert, onder andere (Zie Malbolge).
- talen voor het testen van een idee of het bewijzen van iets. Dit zijn talen die misschien niet direct nuttig zijn, maar ze zijn een goede proeftuin voor een nieuw concept of om iets te bewijzen. Bijvoorbeeld, een taal waarin programma ‘ s zijn gerangschikt in een tweedimensionaal raster (zie Befunge) of een bijna pure functionele taal (Zie Unlambda)
- artistieke talen. Dit zijn talen die zijn ontworpen met het idee dat ze enige artistieke waarde hebben. Je zou kunnen stellen dat ze effectief deel uitmaken van de groep van de testtalen of degenen met een objectieve waarde. We plaatsen ze in een andere categorie, omdat ze er niet uitzien als programmeren, maar ze hebben de neiging om er interessant uit te zien, zelfs als je ze misschien niet wilt gebruiken. Ze zien er bijvoorbeeld uit als abstracte kunst (zie Piet) of als een Schokspel (zie Shakespeare).
- Graptalen. Dit zijn talen die zijn uitgevonden met mensen met een raar gevoel voor humor. Zoals iemand die zegt: “Wil je een grap horen? – dan leest het oorlog en vrede, voordat de conclusie-ons hele leven is een grap!”. Een voorbeeld is een satirische taal, waarbij zelfs de handleiding een grap is (zie INTERCAL)
enkele opmerkelijke esoterische talen
Dit is natuurlijk geen uitputtende lijst van opmerkelijke esoterische programmeertalen, maar meer bescheiden een lijst van een paar opmerkelijke vanwege hun succes of eigenaardigheid.
Befunge
het belangrijkste esoterische kenmerk van Befunge is dat programma ‘ s zijn gerangschikt in een tweedimensionaal raster. Het is ook een stack gebaseerd en een reflecterende taal, dus het staat een programma toe om zichzelf te veranderen. Het belangrijkste doel was om een taal te ontwerpen waarvoor het zo moeilijk mogelijk was om een compiler te maken.
de oorspronkelijke versie, nu Befunge-93 genoemd, is niet Turing compleet, omdat het een limiet van 80×25 aan de rastergrootte stelt. Maar een nieuwe versie, genaamd Befunge-98, verwijdert deze limiet en het zou Turing compleet moeten zijn. Befunge heeft een hele klasse van multidimensionale talen voortgebracht, genaamd Fungeoid.
Befunge heeft commando ’s die de richting omhoog, omlaag, links, rechts regelen en dus ook een cyclus kunnen creëren, samen met meer traditionele commando’ s voor uitvoer, binaire operaties, enz.
een Hello Word programma ziet er zo uit.Brainfuck
waarschijnlijk de beroemdste van alle esoterische programmeertalen, het is opmerkelijk voor zijn extreme minimalisme. Zowel in het aantal beschikbare commando ‘ s als in het hebben van een zeer kleine compiler. In feite is de tweede voorwaarde de reden voor de eerste, omdat de auteur een taal wilde maken met de kleinst mogelijke compiler. De auteur heeft een compiler gemaakt die slechts 240 bytes gebruikte. Soms later maakte iemand anders er een met slechts 100 bytes. Een natuurlijk gevolg van deze doelstelling is dat de taal moeilijk te gebruiken is, hoewel het Turing compleet is. Kortom, het is een Turing tarpit.
het wordt soms aangeduid met een gecensureerde spelling, zoals Brainf*ck of vele andere variaties.
de taal bestaat uit acht verschillende commando ‘ s die een data pointer manipuleren en twee stream van bytes voor invoer en uitvoer. Het ondersteunt ook lussen. Andere karakters, naast degenen die de commando ‘ s vertegenwoordigen, worden beschouwd als opmerkingen en genegeerd door de compiler.
dit is een voorbeeld van hoe de taal werkt (overgenomen uit de esolangs wiki).
Code: Pseudo code:>> Move the pointer to cell2 Set cell2 to 0 << Move the pointer back to cell0 End while
een Hello World programma ziet er zo uit.
++++++++>+>+>->>+<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Als u meer wilt weten, kunt u dit zien op de corresponderende Wikipedia pagina of Esolangs pagina.
INTERCAL
INTERCAL was misschien niet de eerste esoterische programmeertaal, maar het is zeker de eerste bekende. Hoe oud is het? Het werd opgericht in 1972 en de eerste uitvoering werd gemaakt met ponskaarten. De taal was bedoeld als parodie, maar ook om iets compleet nieuws te maken, een vreemdeling in de programmeerwereld. De naam is geen acroniem, volgens de auteurs:
de volledige naam van de compiler is “Compiler Language With No Pronounceable Acronym,” wat, voor de hand liggende redenen, afgekort ” INTERCAL.”
de rest van de INTERCAL Reference Manual (PS-formaat) staat ook vol met onzinnige of humoristische uitspraken. Dit is zowel voor de taal die ze beschrijven als voor hoe ze het doen. Dit is bijvoorbeeld een sectie Over variabelen
INTERCAL laat slechts 2 verschillende types van variabelen toe, het 16-bit integer en het 32-bit integer. Deze
worden weergegeven door een spot (. ) of two-spot (:), respectievelijk, gevolgd door een getal tussen 1 en 65535,
inclusief. Deze variabelen mogen alleen NIET-Negatieve getallen bevatten; ze hebben dus de respectieve bereiken van
waarden: 0 tot 65535 en 0 tot 4294967295. Opmerking: .123 en: 123 zijn twee verschillende variabelen. Anderzijds
.1 en .0001 zijn identiek. Bovendien mag dit laatste niet als 1E-3 worden geschreven .
de taal staat ook het gebruik van een modifier PLEASE
toe. Het vereist echter ook het gebruik van de juiste hoeveelheid van dit trefwoord. Het kan niet te weinig of te veel gebruikt worden, dat wil zeggen dat je de juiste hoeveelheid beleefdheid moet tonen. Het echt unfunny deel is dat het was een ongedocumenteerde functie in de originele handleiding. Een grap handleiding voor een grap handleiding kan Oke zijn, maar een dat het onvolledig is onaanvaardbaar.
Dit is een Hello World in een versie van INTERCAL geà mplementeerd met C: C-INTERCAL.
DO ,1 <- #13PLEASE DO ,1 SUB #1 <- #238DO ,1 SUB #2 <- #108DO ,1 SUB #3 <- #112DO ,1 SUB #4 <- #0DO ,1 SUB #5 <- #64DO ,1 SUB #6 <- #194DO ,1 SUB #7 <- #48PLEASE DO ,1 SUB #8 <- #22DO ,1 SUB #9 <- #248DO ,1 SUB #10 <- #168DO ,1 SUB #11 <- #24DO ,1 SUB #12 <- #16DO ,1 SUB #13 <- #162PLEASE READ OUT ,1PLEASE GIVE UP
kortom, INTERCAL is een zeer uitgebreide grap. Het soort grap dat je kan leiden om zijn schepper te bewonderen voor zijn doorzettingsvermogen of om te twijfelen aan zijn geestelijke gezondheid, of misschien beide.
JSFuck
het succes van Brainfuck heeft geleid tot de creatie van vele afgeleide talen, te veel om ze allemaal te noemen. Maar de meest opvallende is JSFuck.
JSFuck is geen goede taal, maar het is meer een esoterische programmeerstijl van Javascript die het gebruik van slechts 6 karakters vereist. De resulterende programma ’s zijn geldig JavaScript-programma’ s en in feite werd uitgevonden om beveiligingstechnieken zoals malware detectie te omzeilen. Zijn eigenschappen maakten het ook nuttig voor code verduistering.
het werkt omdat u elke expressie in Javascript kunt evalueren als elk type. Dus vertegenwoordigt en lege array, maar door het voor te schrijven met een
+
kunt u het forceren om te evalueren als het getal 0. Om een letter als a
te verkrijgen, kunt u de waarde false
, enz. Het eindresultaat is een zeer uitgebreide taal: het equivalent van alert("Hello World!")
is 22948 karakters lang.
Malbolge
Malbolge is een taal die speciaal is ontworpen om bijna onmogelijk te gebruiken:
via een contra-intuïtieve ‘gekke operatie’, basis-drie rekenkunde, en zelfveranderende code
in de woorden van zijn eigen Maker.
in feite heeft zelfs de auteur er nooit een werkprogramma mee geschreven. Het eerste programma werd gegenereerd door een ander programma dat een heuristisch zoekalgoritme implementeerde. De taal is niet Turing compleet en het is ook gebaseerd op een spelfout van Malebolge, de acht cirkel van de hel in Dante Alighieri ‘ s Inferno. Dus het heeft echt geen verlossende kwaliteit.
Ik zal niet proberen het te beschrijven omdat het hele ding expliciet een oefening in frustratie is. Er is echter een opmerkelijke “gekke operatie” die het vermelden waard is: encryptie. De taal wordt verondersteld te werken op een ternaire virtuele machine en heeft drie registers, waarvan één een verwijzing naar de huidige instructie bevat en wordt genoemd. Nadat de instructie is uitgevoerd, vervangt modulo 94 van de waarde in
wat in
is, dan wordt het resultaat versleuteld volgens een encryptietabel. Welkom in de hel, inderdaad.
Some brave soul heeft een Hello World programma gemaakt.
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
Piet
Piet is een taal waarin programma ‘ s worden weergegeven als abstracte kunstschilderingen, in de stijl van Piet Mondriaan. Het is stack gebaseerd en Turing compleet.
er zijn 18 kleuren geordend volgens tint en helderheid, plus Zwart en Wit. Deze laatste twee hebben een speciale betekenis en worden gebruikt voor de controlestroom. De uitvoering van het programma berust op twee “pointers”: een richtingaanwijzer en een Kleurblok kiezer. De DP mag naar boven, naar beneden, naar links en naar rechts wijzen, terwijl CC alleen naar links en naar rechts kan wijzen. De combinatie van deze twee pointers regelt de uitvoering van het programma: in principe welk Kleurenblok vervolgens wordt uitgevoerd. De grootte van een kleurblok vertegenwoordigt een geheel getal. Wanneer de programma overgang tussen verschillende blokken van kleur, hun verschil in Tint en helderheid bepaalt het soort commando dat wordt uitgevoerd. De commando ‘ s zijn de gebruikelijke, zoals output a value, multiply, etc.
het Hello World programma heeft een bepaalde schoonheid.
Shakespeare
Shakespeare is een taal die ontworpen is om: “beautiful source code that liked Shakespeare plays”te hebben. De taal heeft weinig commando ‘ s en is functioneel vergelijkbaar met assembly language, maar het is niet verwonderlijk dat het nogal uitgebreid is.
de variabelen moeten in een eerste sectie worden gedeclareerd en hun namen moeten geldige Shakespeare-tekens zijn, zoals Romeo of Julia. Deze variabelen zijn stacks waarop later bewerkingen als pop, push en input/output zullen worden uitgevoerd. De naam van handelingen en scènes werkt als goto-labels en de bestemming van bepaalde voorwaardelijke statements. Karakters, dat wil zeggen variabelen, moeten op het podium worden opgeroepen om te worden gemanipuleerd en er kunnen er slechts twee tegelijk op het podium zijn.
de regels vertegenwoordigen gewoonlijk numerieke constanten: sommige zelfstandige naamwoorden en bijvoeglijke naamwoorden worden omgezet in numerieke waarden.
Hamlet: You lying stupid fatherless big smelly half-witted coward!Juliet: You are as villainous as the square root of Romeo!
speciale woorden, zoals “Remember”, of combinaties daarvan, zoals “Speak your mind”, voeren commando ‘ s uit. Dit zijn normale commando ‘ s zoals het pushen van waarden op het stack-karakter, het uitvoeren van de waarde van de huidige variabele of het bijbehorende ASCII-karakter.
een voorwaardelijke verklaring wordt weergegeven door een vraag van het ene teken en een antwoord van het andere teken dat bepaalt waar te gaan, als de conditie van de vraag te evalueren om waar.
Juliet: Am I better than you?Hamlet: If so, let us proceed to scene III.
de Hello World is zo lang en productief als een toneelstuk van Shakespeare.
The Infamous Hello World Program.Romeo, a young man with a remarkable patience.Juliet, a likewise young woman of remarkable grace.Ophelia, a remarkable woman much in dispute with Hamlet.Hamlet, the flatterer of Andersen Insulting A/S. Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo.Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! Scene II: The praising of Juliet.Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! Scene III: The praising of Ophelia.Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation.Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! Scene II: Juliet and Ophelia's conversation.Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind!Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind!
Thue
Thue is een programmeertaal die is gebaseerd op een stringherschrijvingssysteem, genaamd semi-Thue-systeem. Het is niet-deterministisch en volgt het constraint programmeerparadigma. Dit betekent dat de variabelen worden gedefinieerd in termen van beperking (ex. iets is waar of onwaar). Het is een Turing tarpit.
in het geval van Thue worden de kosten weergegeven door een lijst van substitutieregels in de vorm:
<string>::=<replacement>
speciale formaten van dit formulier vertegenwoordigen input, output of het einde van de lijst met regels.
het niet-deterministische karakter van de taal kan worden aangetoond door twee mogelijke vervanging van dezelfde tekenreeks aan te geven. Bijvoorbeeld:
- u schrijft een regel die zegt dat de string
a
vervangen kan worden doorstupid
- u schrijft ook een regel die zegt dat de string
a
vervangen kan worden dooryou are
wanneer een programma wordt uitgevoerd kan de string a
worden vervangen door een van de twee opties.
de lijst met regels wordt gevolgd door een tekenreeks die de initiële status vertegenwoordigt.
hoewel het schrijven van een nuttig programma moeilijk kan zijn, is de typische Hello World vrij eenvoudig en begrijpelijk, althans door de standaard van esoterische programmeertalen.
a::=~Hello World!::=a
Unlambda
Unlambda is een (bijna) pure functionele taal die ontworpen is om een puur functionele taal te tonen (en waarschijnlijk hoe onpraktisch dat zou zijn). Het is gebaseerd op combinatorische logica. Het is Turing compleet en de eerste functionele Turing tarpit. Het vertrouwt op een paar functies, een apply operator `
(het backquote karakter) en het ondersteunt ook input/output. Technisch werkt het alleen op Functies met een enkel argument, maar multi-argument functies kunnen worden vertaald in een opeenvolging van functies.
een Hello World-programma ziet er bijna leesbaar uit.
`r```````````.H.e.l.l.o. .w.o.r.l.di
andere interessante esoterische talen
Fuga is een taal die MIDI-bestanden als broncode gebruikt. De intervallen tussen elke noot worden vertaald naar specifieke traditionele commando ‘ s, zoals input/output of optelling.
Beatnik is een op stack gebaseerde taal die bestaat uit een reeks Engelse woorden; witruimte en interpunctie worden genegeerd. De woorden worden omgezet in traditionele commando ‘ s op basis van hun waarde in het spel Scrabble.
witruimte is een taal waarin alleen witruimtetekens, zoals tabbladen en spaties, geldig zijn en elk ander teken wordt genegeerd. Dit is natuurlijk het omgekeerde van het gebruikelijke gedrag van compilers die witruimte negeren. Gezien deze kenmerken kan het worden gebruikt in een Polyglot programma, dat wil zeggen een programma dat geldig is voor meer dan één taal. Zolang de andere taal geen Python is, of een andere taal waar witruimte van belang is.
GolfScript is een concatenatieve programmeertaal ontworpen om code-golf wedstrijden te winnen, die ook Turing compleet is.
Snowflake is een reversibele zelfmodificerende taal waarin zowel de interpreter als het programma worden gewijzigd bij elke run.
FRACTRAN is een taal waarin programma ‘ s een lijst van breuken en een begingetal zijn. Ik weet niet zeker wat het doet, maar het doet iets, omdat het een Wikipedia-pagina heeft.
jota en Jot zijn twee formele talen, elk ontworpen om het eenvoudigste formele systeem te zijn. Door hun aard kunnen ze ook worden beschouwd als even minimalistisch, Turing tarpit, programmeertalen. Beide gebruiken slechts twee symbolen en voeren twee bewerkingen uit. Een opvolger, Zot genaamd, ondersteunt ook input / output.
entropie is een zeer toepasselijke programmeertaal die ontworpen is om het idee van het opgeven van controle te accepteren. Elke uitvoer van het programma zal worden benaderd en elke keer dat de gegevens wordt benaderd wordt willekeurig gewijzigd. De taal wijzigt het oorspronkelijke programma niet, dus elke keer dat het programma wordt uitgevoerd zal de uitvoer anders zijn, maar de initiële status zal behouden blijven. Een merkwaardig neveneffect van de randomisatie van data is Drunk Eliza, een webversie van het klassieke Eliza programma waarin de therapeut dronken lijkt te zijn.Monicelli is een taal gebaseerd op de komische film My Friends. Een typisch programma ziet eruit als een reeks onzinnige Italiaanse zinnen. Verrassend genoeg is dit logisch omdat de film gebruikt als inspiratie ook onzinnige zinnen bevatten. Het is de cirkel van waanzin.
samenvatting
de wereld van de esoterische programmeertaal is even spannend als gek: er zijn geen regels, maar veel interessante dingen. Ik hoop dat ik je een beetje helder inzicht heb gegeven in wat je kon verwachten.
Als u meer wilt weten of wilt deelnemen aan deze community, stel ik voor om naar Esolangs te kijken. Die website, samen met Wikipedia, is de bron van de meeste voorbeelden in dit artikel. Daar vind je ook inspiratie in een lijst met ideeën voor een esoterische programmeertaal.
u kunt het blog van Marc C. Chu-Carroll ook interessant vinden in zijn vele incarnaties door de jaren heen. Zoals de naam goede wiskunde, slechte wiskunde impliceert, is het voornamelijk gewijd aan de wiskunde. Niettemin heeft het ook vele analyses van esoterische programmeertalen in een reeks genaamd pathologisch programmeren (taal). Je ziet er bijvoorbeeld een gewijd aan de kleinste programmeertaal.