Een creatieve programmeur heeft een 'USB-stick' gemaakt waarop hij naar eigen zeggen 'alle teksten ooit' kan openen. In de praktijk is dat helemaal geen USB-stick met exabytes aan bestanden, maar een ESP32 die het zogenaamde Library of Babel-algoritme bevat om teksten te genereren. Toch levert dat een leuk project op, waarin onder andere dit artikel staat opgeslagen.
Youtuber PortalRunner heeft een video gemaakt over wat hij 'een flashdrive met letterlijk ieder bestand' noemt. Het zou een simpele USB-stick zijn waarop letterlijk alle bestanden staan: ieder boek dat ooit is geschreven, de Epiek van Gilgamesh, de eerste vertaling van de Bijbel, het Tweakers-redactiestatuut, de volledige reeks 50 Shades-boeken van E.L. James en eigenlijk alles wat je kunt bedenken. Dat lijkt vooral een leuke goocheltruc. In werkelijkheid zit er logica achter de stick die het een stuk minder praktisch maakt.
Die logica heet de Library of Babel. Dat is een onlineproject, maar ook een wiskundige theorie. Die maakt het mogelijk om alle geschreven tekst ooit algoritmisch te berekenen. PortalRunner heeft dat simpelweg vertaald naar een fysieke computer met een soort gesimuleerd bestandssysteem, die op basis van de berekening zo'n tekst kan genereren.
De Library of Babel is een wiskundige formule die het mogelijk maakt om iedere vorm van tekst te genereren en er een cijfer aan te koppelen. Die formule is vernoemd naar een verhaal van Jorge Luis Borges uit 1941 en beschrijft een oneindige bibliotheek, die bestaat uit oneindige rijen hexagonale rekken met daarin schappen met boeken. Die boeken hebben weer pagina's en daarop staan de teksten.
De wiskundige theorie stelt dat ieder verhaal te vinden is via het algoritme.In de wiskundige theorie die achter het verhaal zit, bestaat ieder boek uit een vaste hoeveelheid tekens: 3200 tekens per pagina en 410 pagina's in totaal. Er kunnen 29 verschillende tekens in voorkomen: alle letters van het alfabet, plus een spatie, een komma en een punt. Ieder boek in de theoretische bibliotheek kan worden gerepresenteerd als een reeks getallen in dat base-29-stelsel.
Een algoritme kan die getallenreeks omzetten naar een 'adres'. Zo'n adres is dus een specifieke passage die je zoekt. Andersom werkt dat ook: iedere specifieke tekst is om te zetten naar de base-29-cijferreeks en is daarmee terug te vinden in de zogenaamd oneindige bibliotheek.
In de praktijk is op deze manier ook de tekst van dit volledige artikel dat je nu leest terug te voeren naar een nummer en dus terug te vinden in de bibliotheek.
Met dat algoritme heeft PortalRunner een eigen 'USB-stick' gemaakt, die op deze manier al die 'boeken' of stukken tekst 'bevat'. In werkelijkheid gaat het niet om een USB-stick, maar om een ESP32-module met 16MB aan flashgeheugen. Dat is echter genoeg om alsnog iedere tekst te vinden.
Dat werkt doordat het bestandssysteem het Media Transfer Protocol (MTP) gebruikt. Dat is hetzelfde protocol dat bijvoorbeeld smartphones of mediaspelers inzetten. In plaats van een USB-stick met FAT32 als bestandssysteem simuleert het een bestandssysteem. Dat betekent dat de drive niet vraagt wat een map bevat, maar om een mapstructuur.
Als je de metafoor van de oneindige bibliotheek volgt, kun je de ESP32 vragen om naar een rij te gaan, daar een van de 29 schappen te kiezen, daarbinnen een van de 29 boeken te zoeken, daarin een van de 410 pagina's open te slaan en dáár dan weer de specifieke tekst te vinden die je zoekt.
PortalRunner heeft in dit geval de metaforische rijen, schappen en boeken vertaald naar mappen in een bestandssysteem. Omdat de drive de mappenstructuur bij het openen van een map telkens algoritmisch berekent, kunnen er in theorie oneindig veel boeken op de drive te vinden zijn, zonder dat die boeken daarop daadwerkelijk staan opgeslagen.
In de praktijk is zijn project dan ook voor 99,999999 (en nog oneindig veel 9's) procent onzintekst. Maar in die oneindigheid zitten ook alle teksten verstopt die je maar kunt bedenken. PortalRunners video legt het verder uit, maar wie niet kan wachten, kan in ieder geval vast beginnen dit te lezen.
Source: Tweakers.net