Skip to main content
Café praatNieuwsbriefWat is...

“Programma’s zijn zoals ajuinen”

Door 10 november 2023november 21st, 2023Geen reacties

Ofwel,een aantal feiten op een rei over computerprogramma’s.

Programma’s groeien niet aan de bomen. Ze worden ook niet geleverd door Aliens in UFO’s, en ze zijn niet magisch. Mensen schrijven programma’s, zo simpel is het. Mensen die voor grote bedrijven werken. Bedrijven hebben legers aan programmeurs, die allemaal met teveel koffie in de kelder met gebrek aan zonlicht hard werken aan nieuwe versies van programma’s. (Ok, ik heb misschien wat teveel stereotypen gebruikt in de vorige zin. Maar de koffie is zeker en vast echt! )

Want zonder software gebeurt er niks op een computer. Zolang je jouw computer niet vertelt wat die moet doen, is er geen verschil met jouw keukentafel. Het is een dood object. Met genoeg software erop, komt dat ding tot leven. Of daar lijkt het in elk geval toch op. Want met software kan jouw computer plots rekenen, jou gemakkelijk een tekst laten typen, een email versture of jou youtube videos voorschotelen… inclusief de reclame.

Trouwens, computerprogramma’s, programma’s, of software, Applicaties, Apps… allemaal verschillende namen die hetzelfde betekenen.

Het maakt niet uit welke “computer” je hebt: een laptop, een stevige ietswat verouderde desktop, een smartphone, ja en zelfs een rekenmachine valt onder deze categorie.

Eerste feit: computerprogramma’s zorgen dat jouw computer iets kan

Software dus… bij de jeugd beter gekend als apps op jouw smartphone. Software moet best wel wat uit te kast halen als je denkt wat er moet gebeuren. Als jij jouw smartphone aanzet, dan moet dat ding “opstarten”. Alle apps worden erop geladen, jouw mobiele internetconnectie wordt gestart… het zorgt ervoor dat jij er enkel in kan als je de pincode kent, of misschien scant het wel jouw vingerafdruk, of herkent het jouw mooi of lelijk gezicht. Het zorgt ook dat je kunt bellen en berichten ontvangen en versturen. Het blijft een telefoon, maar af en toe vergeten we dat wel eens.

Kortom, een hele resem aan zaken en activiteiten die moeten gebeuren in enkele seconden. Het zou moeilijk zijn om het effectief uit te rekenen, vooral omdat ik geen goesting heb. Maar alles bij elkaar geteld zou ik toch snel op een paar miljoen operaties rekenen alvorens jouw smartphone aanstaat, alle apps zijn geladen, je bent bereikbaar op het netwerk, je email is binnengehaald en je bent klaar om te facebooken, of wat je ook van plan was. Grappig dat mensen dan nog altijd “klagen” dat het traaaaag gaat als ze een aantal seconden moeten wachten.

Tweede feit: er zijn VEEL programma’s en ze doen allemaal iets anders…

Hoe dan ook, van bovenstaande tekst heb je wel al door dat programma’s op verschillende niveaus werken. Programma’s werken met elkaar samen. Ze leunen op elkaar, net zoals jouw zatte vriend vroeger op café rond 4 uur in de ochtend. Terug naar die smartphone van jou: er is geen één groot gigantisch programma die alles doet. Nee, er staan er tientallen op jouw smartphone, misschien wel honderden, die allemaal iets specifieks doen en samenwerken.

Er is bijvoorbeeld één programma die ervoor zorgt dat jouw smartphone kan starten en dat je kunt aanloggen. Een ander programma zal pas daarna starten, die zal controleren of je bijvoorbeeld nieuwe emails hebt.

Derde feit: computerprogramma’s zijn zoals ajuinen!

Het schrijven van programma’s kan complex zijn. Een klein programma dat een kleine rekenmachine simuleert is niet zo moeilijk. Met een paar tientallen regels aan code, zal een beginnende programmeur de job wel hebben geklaard.

Laten we even kijken hoe dit programma er zou kunnen uitzien. Het gaat uiteraard om een zeer simpel programma. Het is niet ons doel om jou te leren programmeren. Wel om een inzicht te krijgen hoe zo’n programma er zou uitzien.

Volgend programma telt 2 getallen op en stuurt het resultaat naar het beeldscherm. Het is een zeer simpel programma, geschreven in de programmeertaal Python.  Een taal die heel populair is en heel eenvoudig om te leren programmeren.

eerste_getal = 5
tweede_getal = 3
de_som = eerste_getal + tweede_getal
print(de_som)

Wanneer je dit programma uitvoert, zal de computer volledig voorspelbaar het getal “8” op het scherm toveren.

Let op dat de bovenstaande code de computer niet vertelt hoe je 2 getallen bij elkaar telt. De computer weet dit gewoon. Hoezo? Vanwaar? Omdat ergens ooit een ander programma geschreven is en op de computer gezet (=geïnstalleerd). De computer heeft dus “geleerd” om 2 getallen bij elkaar te tellen. Uiteraard is “geleerd” hier absolute nonsense. Een computer “leert” niks, maar wanneer je in een ander programma de instructie geeft om op te tellen, dan wordt in de achtergrond, het ander programma aangeroepen, waarin dan weer staat hoe je getallen optelt.

Met andere woorden, het ene programma steunt op het ander. Het is dus een aaneenschakeling van programma’s die elkaar aanroepen Ook moet hij niet uitleggen hoe de computer het resultaat van een optelsom naar het scherm kan sturen. Dit wordt allemaal gedaan door software die anderen geschreven hebben, en waar we dus op kunnen steunen.

OPGELET! In feite zijn computers oerdom. Alles wat je niet expliciet de computer “vertelt” in een programma, heeft dat ding geen idee wat te doen. Hoewel dat dit verhaaltje eigenlijk niet volledig meer opgaat… Tot een paar jaar geleden was dit waar.  Het voorbeeld dat we geven noemen we traditioneel programmeren.  Iets wat min of meer onstaan is, of toch dorgebroken eind jaren 1970.  Maar sinds we de jaren van de Artificïele intellegentie (AI) en Machine Learning zijn binnengetreden is er best wel wat veranderd. Ik schrijf dit artikel in november 2023. Afhankelijk van hoe ver in de toekomst je dit artikel leest, zou je me wel eens flink kunnen uitlachen. Want via AI en Machine Learning “leert” een computer wel degelijk en is de tijd voorbij dat je alles expliciet moet omschrijven in traditionele programma’s. Maar goed, dat is een onderwerp op zichzelf en verdient een aantal artikels op zichzelf. Binnenkort lees je er meer over op GeekDonkey.

Als je het geheel vanop afstand ziet, dan lijkt alsof het misschien wel één groot programma is, met kleine radertjes die allemaal samenwerken.  Of één programma met verschillende lagen,  zoals een rijpe ui of ajuin.

Vierde feit: computerprogramma’s zijn groot!

Je hebt zonet kennis gemaakt met een programma die 2 getallen optelt en je het resultaat op het scherm geeft. Het programma is 4 regels lang. Het kan bijna niet eenvoudiger.  Maar vergis je niet. Sommige programma’s zijn zeer uitgebreid.  Teams van misschien wel honderden programmeurs werken er soms jaren aan.  Want ook programma’s zoals Photoshop zijn gemaakt. De code is uiteraard geheim en eigendom van Adobe, het bedrijf dat Photoshop heeft gemaakt (en nog altijd nieuwe versies maakt).  Het juiste getal gaan we dus niet kennen, maar ik ben er gerust in dat, mocht je alle regels code van Photoshop optellen, dat je letterlijk in de miljoenen regels programmacode uitkomt.

Andere kolossale programma’s?  Ooit over nagedacht hoe groot het programma Facebook zou zijn? Inderdaad, Facebook is ook een programma.  Het draait wel ergens op het internet als een website, en dus niet letterlijk op jouw computer, maar uiteindelijk is het ook een programma. Of meerdere programma’s bij elkaar. Maar dat het reusachtig is, daar kunnen we het eens over zijn.  De meeste interactieve websites zijn dan ook programma’s. En de meeste zullen eveneens reuzachtig zijn waar jaren aan gewerkt is en miljoenen euro’s of dollars heeft gekost.

We kunnen voorbeelden blijven geven, dus we gaan na deze 2 stoppen. Maar ook iOS op jouw iPhone, of Android op jouw Samsung of LG zijn ook het gevolg van jaren werk en bestaan uit een enorm aantal regels code.

Dit is wat programmeren moeilijk maakt.  Niet de initele logica schrijven, dat kan je na een halve dag introductie in programmeren. De moeilijkheid is om vooral code te schrijven die begrijpbaar is als je er volgend jaar iets moet aan veranderen. Een een stuk programmacode schrijven waar je met een heel team aan moet werken.

Dit brengt ons tot het laatste feit:

Vijfde feit: NIEMAND op deze planeet weet nog hoe een computer van begin tot einde werkt!

Omdat alles wat je aanraakt heel complex kan worden en voor alles een apart programma nodig is, is er niemand die nog weet of begrijpt hoe een computer van A tot Z werkt. Alles is opgesplits, en hele teams zijn gespecialiseerd op een klein stuk van de puzzel.  Iemand die dus in een team werkt om ervoor te zorgen dat de juiste dingen op het scherm verschijnen, die hebben geen idee hoe een printer werkt.  Of hoe Photoshop of Facebook in elkaar zit. Mensen die bezig zijn met programma’s schrijven om jouw mp3 muziek af te spelen op jouw smartphone, hebben geen idee hoe jouw smartphone met het internet communiceert. Dat is een ander team in een ander bedrijf, waarschijnlijk in een ander land dat dit gemaakt heeft.

Het is iets om bij stil te staan…  er is letterlijk niemand op deze aardbol die weet of begrijpt hoe een computer volledig van begin tot einde werkt.  Het is zelfs nog veel straffer.  Bij het team bij Adobe dat Photoshop maakt, is er ooit niemand meer die volledig de programmacode kent van Photoshop. Want zelfs daar wordt het te groot. Omdat Photoshop uit miljoenen regels code bestaat zal daar ook verschillende teams aan verschillende aparte stukken werken en onderhouden.

programmeercode vanop afstand, cryptisch in het groen.

 

 

 

 

 

 

 

 

Vergeet niet…

programma’s = applicaties = software = apps ! Het is letterlijk allemaal hetzelfde.

Programma’s zijn niet buitenaards of magisch.  Ze worden door mensen geschreven, voorlopig toch nog…

Computers moeten letterlijk verteld worden wat ze moeten doen, via programma’s.  Ook hier… voorlopig toch nog Het ene programma steunt op het andere.   Niemand schrijft of kent hoe een computer werkt van begin tot einde!

 

Laat een reactie