dinsdag, 26 maart, 2019, 9:27 pm - Persoonlijk
Er zijn maar weinig mensen die weten dat ik als kinds al bezig was met programmeren. Dit eerst op de Commodore 64 en later op de Commodore Amiga. Ik kon mij echt uitleven in assembler taal en maakte fantastische leuke dingen. Ik vond het leuk om na te denken over complexe dingen en scripts van maar paar regels uren lang te heroverwegen zodat het beter en beter werd. Helaas ging Commodore in 1994 failliet. Ik denk de Commodore nu nog zou bestaan, mijn leven totaal anders uit had gezien.Zo moest ik afgelopen week denken aan data-compressie. Iets dat ik als kind van 12 jaar al mee bezig was. In die tijd moest een zelfgeschreven intro of demo zo compact mogelijk zijn. Hoe kleiner het bestand, hoe beter. Maar hoe krijg je een bestand kleiner? Basis principe was heel simpel: het is korter om te verwijzen waar iets van hetzelfde staat dan hetzelfde herhalen.
Maar naast zelfde reeksen is er nog iets waarmee je data kunt verkleinen. Namelijk als je naar een byte kijkt (8 bits), dan komen bepaalde bytes veel vaker voor dan andere bytes. Verklein de notering van de meest voorkomende bytes. Dat zorgt wel ervoor dat de notering van minder vaak voorkomende bytes groter wordt. Per saldo zorgde dit voor data compressie.
Wat ik geschreven had was eigenlijk heel simpel. We beginnen eerst de grote reeksen te elimineren en maken daarvoor een tabel met verwijzingen. Overgebleven data daarvan werd bekeken welke zeven bytes het meest voorkwam. En dat sloeg ik op in een tabelletje. Eerste bit gaf aan of het uit dit tabel gehaald moest worden of niet. %1000 was dan eerste uit het tabel. En %1001 de tweede uit het tabel. En %01000001 was dan byte %10000001. Statistisch zorgde om de meest voorkomende zeven bytes naar 4 bits te comprimeren voor minder data.
Later is een vergelijkbaar compressie gebruikt voor muziek, wat we als MP3 kennen. Als je Wafeforms in data bekijkt, dan zie je allemaal getallen. Het zijn veel verschillende getallen. Iedereen die een waveform fysiek getekend gezien heeft, weet dat een fluit een golf beweging is. Tussen elk opvolgende byte zit weinig verschil. Het is veel logischer om de verhoging of verlaging te noteren, dan de fysieke byte. En daarna de herhalingen te verwijzen. Data wordt dan mega klein. Ruis en kleine foutjes zorgen voor grote afwijkingen maar als het om kleine foutjes in een waveform gaat, hoor je dit niet. Dan kan je beter die plaatsen fysiek de data aanpassen. Zodat compressie nog beter gaat.
Ook was ik bezig om van onlogisch data logische reeks te maken waardoor compressie nog beter zou kunnen gaan. Dit kan bijvoorbeeld door data te visualiseren en op een ander manier naar de data te kijken. In de visualisering zou je patronen kunnen ontdekken die je met formules kunt terug kunt zetten. En deze patronen in tabellen op te nemen. Daarna data aan te passen waardoor meer logische data reeksen ontstaan. Dit concept idee heb ik nooit in praktijk uitgewerkt.