Top 10 Echt bizarre programmeertalen
Dit is een lijst met enkele van de meest bizarre programmeertalen die je ooit zult zien. Deze soorten talen worden gewoonlijk "Esoterische programmeertalen" genoemd. Een esoterische programmeertaal (soms afgekort tot esolang) is een programmeertaal die is ontworpen als een test van de grenzen van het ontwerpen van programmeertaal, om te experimenteren met rare ideeën of gewoon als een grap, in plaats van om praktische redenen. Het is meestal niet de bedoeling dat de taal wordt gebruikt voor het programmeren in de echte wereld. Dergelijke talen zijn vaak populair bij hackers en hobbyisten.
Bruikbaarheid heeft zelden een hoge prioriteit voor dergelijke talen; vaak precies het tegenovergestelde. Het gebruikelijke doel is om conventionele taalfuncties te verwijderen of te vervangen, terwijl nog steeds een taal wordt onderhouden die Turing-voltooid is, of zelfs een taal waarvoor de computerklasse onbekend is.
Er zijn veel fascinerende en onwaarschijnlijke talen ontwikkeld en er is een kleine maar actieve internetgemeenschap van mensen die ze samenstellen, programmeren en bespreken.
Een "Hello World" -programma is van oudsher het eerste programma dat de meeste mensen leren in een taal die nieuw voor hen is. Het is een (meestal) eenvoudig stuk code dat de woorden "Hallo, Wereld!" Uitvoert op een uitvoerapparaat, meestal het computerscherm.
Kijk alsjeblieft naar alle voorbeeldcodes - ze zijn in de meeste gevallen behoorlijk hilarisch.
10INTERCAL
INTERCAL is in 1972 gemaakt en is daarmee waarschijnlijk de eerste ooit esoterische programmeertaal. Donald R. Woods en James M. Lyon (foto hierboven) vonden het uit, met het doel een taal te creëren zonder enige overeenkomst met bestaande programmeertalen.
Volgens de originele handleiding van de auteurs: "De volledige naam van de compiler is 'Compiler Language With No Pronounceable Acronym', wat, om voor de hand liggende redenen, wordt afgekort als 'INTERCAL'."
Gemeenschappelijke bewerkingen in andere talen hebben cryptische en overbodige syntaxis in INTERCAL. De INTERCAL Reference Manual bevat vele paradoxale, onzinnige of anderszins humoristische instructies, zoals:
"Voorzichtigheid! Verwar in geen geval de mesh met de interleave operator, behalve onder verwarrende omstandigheden! "
INTERCAL heeft nog vele andere functies die ontworpen zijn om het nog meer esthetisch onaangenaam te maken voor de programmeur: het gebruikt uitspraken zoals "IGNORE" en "VERGETEN", evenals modifiers zoals "PLEASE". Dit laatste sleutelwoord biedt twee redenen voor de afwijzing door de compiler: als "PLEASE" niet vaak genoeg verschijnt, wordt het programma als onvoldoende beleefd beschouwd, en de foutmelding zegt het; al te vaak kan het programma als overdreven beleefd worden afgewezen.
Hallo wereld in INTERCAL, met gelijkwaardige code in C voor vergelijking
9 Witte ruimteZoals de naam al doet vermoeden, is Whitespace, ontworpen in 2002, door Edwin Brady en Chris Morris, een esoterische programmeertaal die alleen witruimtetekens gebruikt als syntaxis. Alleen spaties, tabs en lijnfeeds hebben dus betekenis. Toen het op 1 april 2003 werd vrijgegeven, beschouwden de meeste mensen het als een grap van April Fools, wat het niet was.
In tegenstelling tot de meeste programmeertalen, die de meeste witruimtetekens negeren of weinig betekenis toekennen, negeert de Whitespace-interpreter alle niet-spaties. Een interessante consequentie van deze eigenschap is dat een Whitespace-programma eenvoudig kan worden ingesloten in de witruimtetekens van een programma dat in een andere taal is geschreven, waardoor de tekst een veelvoud is.
Hierboven is "Hallo wereld" in Whitespace weergegeven.
Chef
Chef, ontworpen door David Morgan-Mar in 2002, is een esoterische programmeertaal waarin programma's op kookrecepten lijken. De variabelen worden meestal genoemd naar basisvoedingsmiddelen, de stapels worden "mengkommen" of "bakgerechten" genoemd en de instructies voor het manipuleren ervan "mixen", "roeren", enz. De ingrediënten in een mengkom of ovenschaal zijn besteld "Als een stapel pannenkoeken".
Volgens de startpagina van de chef-kok zijn de ontwerpprincipes voor Chef:
- Programma-recepten zouden niet alleen geldige uitvoer moeten genereren, maar ook gemakkelijk te bereiden en heerlijk zijn.
- Recepten kunnen een beroep doen op koks met verschillende budgetten.
- Recepten zullen metrisch zijn, maar kunnen traditionele kookmaatregelen gebruiken zoals kopjes en eetlepels.
Hallo wereld in chef-kok
7 VelatoVelato is een taal die MIDI-bestanden als broncode gebruikt. Programma's in Velato worden bepaald door de toonhoogte en de volgorde van de noten. Het is bedoeld om flexibiliteit in compositie mogelijk te maken, dus functionele programma's zullen niet noodzakelijk als willekeurige noten klinken. Er is een tendens dat Velato-programma's jazzachtige harmonieën hebben.
Alle uitspraken in Velato beginnen met een "command root" -noot; intervallen van deze notitie worden vertaald in commando's en uitdrukkingen. De opdrachtwortel kan tussen instructies worden gewijzigd om meer muzikale (of ten minste minder repetitieve) progressies toe te staan.
Natuurlijk, zoals alle MIDI-bestanden, kunnen Velato-programma's ook worden weergegeven als bladmuziek. Hierboven ziet u bladmuziek, die u hier kunt beluisteren.
6Shakespeare
De Shakespeare programmeertaal (SPL) is ontworpen door Jon Åslund en Karl Hasselström. Net als Chef (item # 8), is het ontworpen om programma's iets anders te laten lijken dan programma's; in dit geval speelt Shakespeare.
De eerste regel in een Shakespeare-programma wordt de 'titel' genoemd en fungeert als een opmerking. De "Dramatis Personae" is de sectie waar variabelen worden verklaard. Elke variabelenaam moet de naam zijn van een personage uit een toneelstuk van Shakespeare.
Een stuk code in Shakespeare is onderverdeeld in "Handelingen", die "Scènes" bevatten, waarin karakters (variabelen) een wisselwerking hebben. Elke handeling en scène is genummerd met een Romeins cijfer en dient als een GOTO-label. Ze zijn geschreven in de vorm:
Act I: Hamlet's beledigingen en vleierij.
Scene I: De belediging van Romeo.
Voordat "karakters" (variabelen) kunnen "handelen" (er moet actie worden ondernomen) moeten ze eerst "op scène" zijn. Om een variabele naar de stage te roepen, wordt de "Enter" -opdracht gebruikt. Om de personages het toneel te laten verlaten, gebruikt u de opdracht "Afsluiten". "Exeunt" roept meer dan één karakter om te vertrekken, of in het geval dat er geen karakters worden vermeld, zullen alle karakters het toneel verlaten.
Hallo wereld in Shakespeare
Omgrofl is een taal die in 2006 werd gecreëerd door Juraj Borza. In schril contrast met de vorige inzending lijken de sleutelwoorden op internettaal. De naam komt van het combineren van de slang "woorden" OMG en rofl. Rofl is eigenlijk een van de opdrachten van Omgrofl. Omgrofl is dus niet hoofdlettergevoelig lol is hetzelfde als Lol. U kunt dit gebruiken om "leukere" code te produceren.
Variabelen in Omgrofl moeten een vorm van het slangwoord zijn lol, zoals lol, lool, loool, looool, etc. Een variabele kan worden gedefinieerd als:
lol iz 4
wtf staat is een voorwaardelijke verklaring (zoals als in C). De instructies tot de overeenkomende brb worden alleen uitgevoerd als de voorwaarde waar is.
Gebruik:
lol iz 1
wtf lol iz liek 1
rofl lol
lmao lol
brb
Mogelijke voorwaarden zijn:
iz uber - controleert of de ene uitdrukking groter is dan de andere.
iz liek - controleert of twee uitdrukkingen gelijk zijn.
Deze kunnen worden gewijzigd door:
nee - ontkenning (zoals ! in C) - moet voor liek of uber worden geplaatst.
gebruik:
x iz nope uber y
lol iz nope liek 7
Andere sleutelwoorden in Omgrofl zijn: rtfm, tldr, w00t, stfw, n00b, l33t, haxor, stfu (sluit de toepassing onmiddellijk af).
Hallo wereld in Omgrofl
4Piet
Piet is een taal waarvan de programma's bitmapafbeeldingen zijn die eruit zien als abstracte kunst. Het werd ontworpen door David Morgan-Mar, die ook chef-kok heeft gecreëerd. Het is vernoemd naar pionier in geometrische abstracte kunst, Piet Mondriaan; de oorspronkelijk bedoelde naam, Mondriaan, was al in gebruik.
Er zijn 20 kleuren waarvoor gedrag is gespecificeerd: 18 "kleurrijke" kleuren, die worden gerangschikt door een 6-stappen tintcyclus en een driestaps-helderheidscyclus; en zwart en wit, die niet zijn besteld. Bij het verlaten van een "kleurrijke" kleur en het invoeren van een andere, wordt de uitgevoerde procedure bepaald door het aantal stappen van verandering in tint en helderheid. Zwart kan niet worden ingevoerd; wanneer de aanwijzer probeert een zwart gebied binnen te gaan, worden de regels voor het kiezen van het volgende blok in plaats daarvan gewijzigd. Als alle mogelijke regels zijn geprobeerd, wordt het programma beëindigd. Wit voert geen bewerkingen uit, maar laat de aanwijzer "passeren".
Hierboven afgebeeld is een Piet-programma dat "piet" uitvoert.
3 befungeBefunge verschilt van conventionele talen doordat programma's zijn gerangschikt op een tweedimensionaal raster, de speelveld. "Pijl" -instructies -, ^ en v - richten de besturingsstroom naar links, rechts, omhoog of omlaag en er worden lussen geconstrueerd door de besturingsstroom in een cyclus te verzenden.
Befunge is in 1993 uitgevonden door Chris Pressey, met als doel zo moeilijk mogelijk te compileren. Dit is geprobeerd met de implementatie van zelfmodificerende code (de 'p'-instructie kan nieuwe instructies in het speelveld schrijven) en een multidimensionaal speelveld (dezelfde instructie kan in vier verschillende richtingen worden uitgevoerd). Desalniettemin zijn er een aantal compilers geschreven.
Net als hersenkraken (zie punt 1), heeft Befunge veel afstammelingen en afgelegen neefjes voortgebracht. Befunge-uitbreidingen en varianten worden genoemd Fungeoids of gewoon Funges.
De meeste eendimensionale programmeertalen vereisen een syntactisch onderscheid tussen de commentaartekst en de broncode. In Befunge is er geen syntaxis voor reacties: om documentatie in de code in te bedden, routeert de programmeur eenvoudigweg de besturingsstroom rond het "commentaar" -gebied, zodat de tekst in dat gebied nooit wordt uitgevoerd.
Hallo wereld in Befunge
2malbolge
Overwegende dat Befunge is ontworpen moeilijk te compileren (vertalen in machine-code), Malbolge, gemaakt door Ben Olmstead in 1998, en vernoemd naar de achtste cirkel van de hel in Dante's hel, is bedoeld om zo moeilijk mogelijk te zijn om daadwerkelijk programma's te schrijven. Het was zo moeilijk om te begrijpen wanneer het kwam dat het twee jaar duurde voordat het eerste Malbolge-programma verscheen en zelfs dit werd niet geschreven door een mens, maar door een Lisp-programma met een straalzoekactie in de ruimte van alle mogelijke programma's.
Er is enige discussie over of men zinvolle lussen in Malbolge kan implementeren - het duurde vele jaren voordat de eerste niet-beëindigende werd geïntroduceerd. Een correct "99 Bottles of Beer" -programma (met de volledige tekst van het nummer als uitvoer), dat zich bezighoudt met niet-triviale loops en voorwaarden, werd niet aangekondigd voor acht jaar; de eerste juiste was van Hisashi Iizawa, in 2007. Het is hierboven afgebeeld.
Hallo wereld in Malbolge
1 BrainfuckBrainfuck is de meest bekende esoterische programmeertaal en heeft de aanmaak van een groot aantal andere talen geïnspireerd. Bekend om zijn extreme minimalisme, het is ontworpen om programmeurs uit te dagen en te amuseren, en is niet geschikt voor praktisch gebruik. Om aanstoot te voorkomen, wordt de naam soms als b **** fuck gegeven. De naam van de taal is meestal niet geactiveerd, behalve aan het begin van een zin.
Urban Müller creëerde brainfuck in 1993, met de bedoeling om een taal te ontwerpen die met de kleinst mogelijke compiler kon worden geïmplementeerd. Verschillende brainfuck-compilers zijn kleiner dan 200 bytes gemaakt.
De taal bestaat uit slechts acht opdrachten:> <+ -. , []. Een brainfuck-programma is een reeks van deze opdrachten, eventueel afgewisseld met andere tekens (die worden genegeerd).
Zoals de naam al doet vermoeden, zijn brainfuck-programma's meestal moeilijk te begrijpen. Dit komt omdat elke milde complexe taak een lange reeks opdrachten vereist, wat een van de redenen is waarom deze niet voor serieuze programmering wordt gebruikt. Niettemin is brainfuck, zoals elke Turing-complete taal, theoretisch in staat om elke berekenbare functie te berekenen, indien toegang wordt verleend tot een onbeperkte hoeveelheid geheugen.
Hallo wereld in brainfuck
Deze lijst is samengesteld met behulp van de Esolang Wiki en Wikipedia.