Wat is Whitespace en hoe werkt deze functie?

Wat is Whitespace?

Whitespace is een esoterische programmeertaal die in 2002 is ontwikkeld door Edwin Brady en Chriss Morris. De commando’s bestaan uit de drie tekens “spatie”, “tab” en “linefeed” – de zogenaamde whitespaces – niet-afdrukbare tekens.

Voor betere leesbaarheid worden ook de tekens s, t en l gebruikt.

De structuur van Whitespace

Whitespace is een commando-georiënteerde stapel-gebaseerde programmeertaal die programmeurs een stack (stapel) en heap (geheugenruimte) biedt.

Alle bewerkingen werken intern met gehele getallen van willekeurige bitlengte. Er is een optie om een teken weer te geven dat wordt geïdentificeerd door zijn ASCII-codewaarde.

De commando’s en controle-instructies bestaan uit gedefinieerde reeksen van spaties (s), tab-tekens (t) en linefeeds (l). Er is geen syntaxische element om commentaar te herkennen. In plaats daarvan kunnen opmerkingen, die zelf geen whitespaces mogen bevatten, overal in de broncode worden ingevoerd. GC Wizard negeert alle tekens die voor geen betekenis hebben.

Commando’s

Commando’s bestaan uit reeksen van spaties, tabstops en linefeeds. Bijvoorbeeld, t-s-s-s voert een wiskundige optelling uit van de bovenste twee elementen op de stapel. Gegevens worden in binair formaat weergegeven met spaties (0) en tabs (1), gevolgd door een linefeed; dus, s-s-s-t-s-t-t-l is het binaire getal 0001011, wat 11 is in decimale vorm. Alle andere tekens worden genegeerd en kunnen dus voor opmerkingen worden gebruikt. Code wordt geschreven als een Instruction Modification Parameter (IMP) gevolgd door de bewerking en een parameter indien nodig.

IMPOmschrijving
sStack Manipulatie
t sRekenkundig
t tHeap Toegang
lStroomcontrole
t lInvoer/Uitvoer
Overzicht van Instuction Modication Parameters voor de Whitespace functie in GC Wizard

Stack manipulatie

IMPCommandoParameterOmschrijving
ssGetalPlaats het getal op de stapel
sl sDupliceer het bovenste item op de stapel
sl tWissel de bovenste twee items op de stape
sl lVerwijder het bovenste item op de stapel
Overzicht van stack manipulaties voor de Whitespace functie in GC Wizard

Rekenkundig

IMPCommandoParameterOmschrijving
t ss sOptelling
t ss tAftrekking
t ss lVermenigvuldiging
t st sGehele Deling
t st tModulo
Overzicht van rekenkundige manipulaties voor de Whitespace functie in GC Wizard

Heap Toegang

IMPCommandoParameterOmschrijving
t tsOpslaan in heap
t tsOphalen uit heap
Overzicht van Heap Toegang manipulaties voor de Whitespace functie in GC Wizard

Stroomcontrole

IMPCommandoParameterOmschrijving
ls sLabelMarkeer een locatie in het programma
ls tLabelRoep een subroutine aan
ls lLabelSpring naar een label
lt sLabelSpring naar een label als de top van de stapel nul is
lt tLabelSpring naar een label als de top van de stapel negatief is
lt tEindig een subroutine en geef controle terug aan de oproeper
ll lEindig het programma
Overzicht van stroomcontrole manipulaties voor de Whitespace functie in GC Wizard

Invoer/Uitvoer

IMPCommandoParameterOmschrijving
t ls sGeef het teken bovenaan de stapel weer
t ls tGeef het getal bovenaan de stapel weer
t lt sLees een teken en plaats het op de locatie aangegeven door de top van de stapel
t lt tLees een getal en plaats het op de locatie aangegeven door de top van de stapel
Overzicht van nvoer/Uitvoer manipulaties voor de Whitespace functie in GC Wizard

Data

Terwijl de commando’s een drie-waarde plaatsingssysteem gebruiken, worden de gegevens in het binaire systeem weergegeven: Op de eerste plaats van links, staat een “t” voor een negatief getal; een “l” staat voor een positief getal. Verderop staat “t” voor 1 en “l” voor 0. De specificatie stelt dat getallen elke bitlengte kunnen hebben, maar compilers en interpreters kunnen hier een redelijke bovengrens stellen. Een gegeven wordt afgesloten door een linefeed.

Lees meer over Whitespace op Wikipedia (en)

De functie Whitespace

Bijna bovenaan het scherm staat een schuifknop waarmee je kunt kiezen uit Vertaler en Generator.

Vertaler

Als je kiest voor ‘vertaler’ verschijnt er bovenaan het scherm een tekstveld waar je de whitespace tekst plaatst. Dit kan de whitepace tekst zelf zijn of de leesbare variant.

Nadat je op de Startknop hebt gedrukt voert GC Wizard het programma uit en plaatst onder Uitvoer het resultaat als tekst.

Daaronder zie je de Leesbare code.

Schermafdruk whitespace vertaler in GC Wizard

Generator

Als je kiest voor ‘Generator’ verschijnt er een tekstveld bovenaan het scherm waar je de tekst plaatst die je als resultaat wil hebben van het Whitespace programma.

Nadat je op de Startknop hebt gedrukt voert GC Wizard het programma uit en plaatst onder Uitvoer het resultaat als whitespace code en een Leesbare code variant. Beide  varianten zijn uitvoerbaar.

Schermafdruk whitespace generator in GC Wizard