Een datastructuur is een bepaalde manier om data in het geheugen te ordenen zodat een programma er efficiënt mee kan werken. Dezelfde informatie kun je opslaan als een lijst, een set, een map of een boom, en die keuze bepaalt hoe snel de software items kan vinden, toevoegen of verwijderen.

Een simpele vergelijking is hoe je een keuken inricht. Kruiden in een gelabeld rek pak je zo bij naam, terwijl dezelfde kruiden los in een la betekenen dat je elke keer alles moet doorwoelen. Een set is als een gastenlijst waarop elke naam één keer voorkomt, en een graph is als een kaart van wie wie kent. De juiste structuur houdt software snel naarmate de data groeit.

De verschillen zijn niet abstract. Een waarde opzoeken in een map gaat vrijwel direct, hoeveel items er ook in staan, terwijl een gewone lijst doorzoeken op dezelfde waarde trager wordt met elk item dat je toevoegt. Doorzoek een miljoen rijen op de verkeerde manier en een functie die bij de lancering vlot aanvoelde, kruipt een jaar later. Dezelfde code, dezelfde data, andere structuur.

Het gaat ook om passen, niet alleen om snelheid. Een queue is de juiste vorm voor taken die op hun beurt wachten, een stack voor undo-historie waar de laatste actie er als eerste af komt, een boom voor een mappenstructuur. Past de structuur bij de vorm van het probleem, dan blijft de code simpel; forceer je de verkeerde, dan schrijf je rare omwegen waar bugs zich graag in verstoppen. Het hangt ook samen met databasenormalisatie, waar hoe je data over tabellen verdeelt dezelfde keuze is op grotere schaal.

Datastructuren en algoritmes gaan hand in hand: een algoritme is het recept en de datastructuur is hoe de ingrediënten klaarliggen zodat het recept soepel loopt. Kies de verkeerde structuur en zelfs een slim algoritme kruipt.

Bij TopDevs kiezen we datastructuren bewust voor elke functie, zodat de app van een klant vlot blijft of die nu duizend records bevat of tien miljoen.