Wat alle accountants zouden moeten weten over computers
Arnout van Kempen over rommelen in een digitale wereld.
Ik ben nu al een kleine zeventig weken bezig met deze serie en we hebben allerlei zaken behandeld. Maar één van de belangrijkste zaken nog niet: wat is een computer eigenlijk? Het lijkt een nogal onnozele vraag, maar dat is het toch niet helemaal. Ooit gaf ik een gastcollege bij de accountantsopleiding van de HEAO in ’s Hertogenbosch, waarin wat mij betreft alle kennis over computers zat die iedere accountant zou moeten begrijpen:
- 1.Wat is het verschil tussen een computer en een mens?
- 2.Wat is het verschil tussen een computer en een wasmachine?
- 3.Wat is het verschil tussen een computer en pen en papier?
Een paar weken dus geen nerd-stuff, geen programmeerlessen en ook zeker niets dat te ingewikkeld is voor accountants. In tegendeel, als accountant zou je deze drie vragen moeten kunnen beantwoorden en ik ga het dus absoluut niet technisch maken.
Wel even wat geschiedenis en begrippen. Ik hou me aan de omschrijving die Wikipedia geeft van een computer. Essentieel in deze beschrijving is het feit dat een computer werkt met programma’s die verwisseld kunnen worden. Hoe maakt niet zoveel uit, zolang het maar kan. Vrijwel alle computers, zeker de computers waar accountants mee te maken hebben, volgen daarbij de Von Neumann-architectuur. Von Neumann was een wiskundige die zo rond WO II baanbrekend werk deed, gebaseerd op het werk van de zo mogelijk nog genialere Turing, vooral bekend van de Turingtest en van het verschijnsel 'Turing compleet', maar toch vooral interessant vanwege de Turing machine. De Turing machine is een gedachte-experiment, dat in feite een theoretisch werkbare computer beschrijft die op basis van een beperkt aantal commando’s iedere programmeerbare berekening kan uitvoeren die denkbaar is.
Von Neumann bedacht hoe een dergelijke machine daadwerkelijk gebouwd zou kunnen worden. De door hem bedachte architectuur is nog steeds volstrekt dominant in de wereld van computers. De details zijn terug te vinden op Wikipedia, maar ik licht er twee uit die essentieel zijn.
Om te beginnen het gegeven dat in een Von Neumann-architectuur de Central Processing Unit (CPU) centraal staat. De CPU is tegenwoordig veelal een chip en niet zelden van Intel. Maar lang voor er chips waren, bouwde IBM al CPU's voor mainframes, gebaseerd op relais, buizen en ten slotte transistors.
De CPU voert opdrachten uit een programma uit, die zijn opgeslagen in direct adresseerbaar geheugen. Deze opdrachten verwerken data die opgeslagen is in datzelfde direct adresseerbare geheugen. Daarnaast kan een CPU gegevens van en naar randgeheugens zoals een harde schijf transporteren.
Laten we eens uitgaan van een van de populairste CPU's waarmee de 'persoonlijke computer'-revolutie begon, de Zilog Z80. En voor de eenvoud nemen we een computer uit die tijd, de TRS-80. Waarom deze keuze? Omdat het om een erg simpel systeem gaat naar de huidige maatstaven, en daarmee makkelijk kan illustreren waar we het over hebben.
De Z80 kent een 16-bits adresbus en kan dus 2^16, 65536 adressen gebruiken. Dat is in totaal dus 64K aan adresseerbaar geheugen. Op ieder adres kan een data-element worden opgeslagen. De data-bus van de Z80 is 8-bits, dus kan ieder data-element 2^8, 256 waarden hebben. 8-bits heet ook wel een byte.
Het interne geheugen zoals de CPU het 'ziet', is een aaneengesloten rij van 65536 bytes met waarden van 0 tot 255. Het decimale stelsel is voor computergebruik wat onhandig, meestal gebruiken we het hexadecimale stelsel, dat cijfers kent van 0 tot F. In dat stelsel kan de Z80 dus adressen van 0 tot en met FFFF adresseren en data van 0 tot en met FF opslaan of ophalen.
(Oh, wie nu denkt: het zou toch niet technisch worden? Klopt, volgende week wordt echt niet technisch, beloofd!)
Op de TRS-80 kan je de inhoud van het geheugen zichtbaar maken, op drie manieren. Je kan de getalswaarden van de individuele bytes laten zien, je kan de menselijke interpretatie van die waarden laten zien, als data dus. En je kan diezelfde waarden laten zien als menselijk leesbare versies van programma-instructies voor de Z80. Bijgaande foto's laten de inhoud van hetzelfde geheugen zien in alle drie deze representaties.
In de linkerkolom staan de adressen, in de volgende acht kolommen staan steeds twee bytes naast elkaar en in de laatste kolom staat of een punt, als geen menselijk leesbare vorm beschikbaar is, of de voor mensen leesbare vorm van de data. Vanaf adres 0000 staan dus de volgende bytes: F3, AF, C3, 74, 06.
Maar nu datzelfde geheugen, geïnterpreteerd als programmacode voor de Z80:
In de linkerkolom opnieuw de adressen. Daarna de byte-waarde, maar daarna instructies. F3 blijkt de Z80-code te zijn die mensen lezen als DI, wat Disable Interrupt betekent. AF lezen wij als XOR A, ofwel eXclusive OR A, en C3, 74, 06 tenslotte lezen wij als een JP, een JumP, naar adres 0674.
Misschien lijkt dit niet zo spectaculair, maar dit is essentieel aan de Von Neumann-architectuur: data en instructies zijn identiek. Het is volstrekt onmogelijk te weten of een byte in het adresseerbare geheugen een programma-instructie is, of een data-element.
"Ja, boeiuh", zegt u, als accountant? Dat mag ik hopen ja, dat dat u boeit. Dit is minstens zo belangrijk voor u als dubbel boekhouden, denken in journaalposten en snappen wat een controlerende tussenrekening doet. Dit, beste lezer, is fenomenaal revolutionair. Onze hele wereld draait inmiddels op dit idee. En de wereld van fraudeurs en criminelen overigens ook.
Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.
Gerelateerd
![](/siteassets/accountant.nl/afbeeldingen-440x300/ict-technologie-cybersecurity-toekomst/moederbord-440x300.jpg)
Wat is het verschil tussen een computer en pen en papier?
Arnout van Kempen over rommelen in een digitale wereld.
![](/siteassets/accountant.nl/afbeeldingen-440x300/ict-technologie-cybersecurity-toekomst/moederbord-440x300.jpg)
Wat is het verschil tussen een computer en een wasmachine?
Arnout van Kempen over rommelen in een digitale wereld.
![](/siteassets/accountant.nl/afbeeldingen-440x300/ict-technologie-cybersecurity-toekomst/moederbord-440x300.jpg)
Wat is het verschil tussen een computer en een mens?
Arnout van Kempen over rommelen in een digitale wereld.
![](/siteassets/accountant.nl/afbeeldingen-440x300/ict-technologie-cybersecurity-toekomst/moederbord-440x300.jpg)
Toen computers nog deden wat je dacht
Arnout van Kempen over rommelen in een digitale wereld.