0%

Waar Python niet de eerste keuze is

Systemen, apparaten en harde realtime-eisen

Snelheid gaat over hoe lang iets duurt. Deze les gaat over software die veel dichter bij de machine werkt dan alles wat we tot nu toe hebben bekeken. Daar zijn geheugen, hardwaretoegang en betrouwbare timing de grenzen.

Binnen het besturingssysteem

Een kernel is het centrale deel van een besturingssysteem. Hij beheert het geheugen en communiceert met de hardware. Een driver is software waarmee het besturingssysteem een apparaat aanstuurt, zoals een toetsenbord, camera of netwerkkaart.

Deze code zit zo dicht bij de machine dat een fout de hele computer kan laten uitvallen. Ze moet de precieze regels van het besturingssysteem volgen met de ontwikkelhulpmiddelen die voor dat platform zijn gemaakt. Linux noemt C in de documentatie als belangrijkste taal voor de kernel, met daarnaast ondersteuning voor Rust. Windows-drivers gebruiken C of C++.

Gewone Python is hier meestal niet de eerste keuze, en de reden is niet snelheid. Dit werk vraagt om directe controle over het platform en de eigen hulpmiddelen van dat platform.

Python komt er wel omheen voor: om builds voor te bereiden, testgegevens te maken en logbestanden te analyseren. Nuttig werk, maar geen van die taken is de driver zelf.

Heel kleine computers

Een microcontroller is een kleine computer die in een apparaat is ingebouwd en bijvoorbeeld een sensor uitleest of een lampje aanstuurt. Geheugen en energie kunnen heel beperkt zijn. Wat naast een laptop minuscuul lijkt, is volkomen normaal in een sensor op batterijen die een jaar moet werken.

Gewone Python heeft meestal meer van beide nodig dan zo’n apparaat beschikbaar heeft. Daarmee is Python niet uit beeld. Er bestaat namelijk iets wat ik een van de mooiste onderdelen van dit ecosysteem vind.

MicroPython is een Python-implementatie voor zulke kleine machines. Op een ondersteund printplaatje kun je er een temperatuursensor mee uitlezen of een lampje mee laten knipperen. Als het apparaat wordt ondersteund en het programma binnen de grenzen blijft, is het echt goed geschikt. Het is bovendien een mooie manier om te leren.

Er zijn duidelijke grenzen. Sommige code die direct op een hardwaresignaal reageert, mag tijdens de uitvoering geen extra geheugen aanvragen. En niet elk apparaat wordt ondersteund. Daarom is het bruikbaar met afwegingen als een cruciaal onderdeel directere hardwarecontrole nodig heeft, en meestal niet de eerste keuze als het apparaat niet kan bieden wat de opzet nodig heeft.

Het woord Python in de naam beslist niets. Het apparaat en de eis bepalen de keuze.

Wanneer een deadline niet mag verschuiven

Sommige besturingssoftware moet elke keer vóór een vast tijdstip een resultaat leveren. Een goed gemiddelde is geen bewijs. Voor dat werk moet een team de timing van het hele systeem aantonen, met hardware en software samen, onder de omstandigheden die het werkelijk zal tegenkomen.

Gewone Python is in dat kritieke uitvoeringspad meestal niet de eerste keuze. Niet omdat de naam Python het verbiedt, maar omdat een strikte deadline bewijs vraagt en gemak geen bewijs is.

Python kan er wel naast werken: een simulatie uitvoeren, gedrag volgen of achteraf analyseren wat er is gebeurd.

Een eerlijk overzicht

Python legt de nadruk op snel ontwikkelen, leesbare programma’s en een enorme hoeveelheid herbruikbare hulpmiddelen. Kernels, kleine apparaten en besturing met harde deadlines leggen de nadruk op precies geheugenbeheer, directe hardwaretoegang en voorspelbare timing. Die doelen trekken in verschillende richtingen. Het hulpmiddel kiezen dat voor de strengere eis is gebouwd, is gewoon goed ontwikkelwerk.

Dat maakt Python leren geen vergissing. De automatisering, het webwerk, de gegevensverwerking, wetenschap en AI uit de eerdere lessen zitten niet in die kritieke uitvoeringspaden. En de producten die dat wel doen, hebben nog steeds tests, analyse, bewaking en rapporten eromheen nodig.

De volgende les brengt dit samen in één product en laat elk onderdeel gebruiken wat daarbij past.