Vijf tips die je helpen je computer echt te doorgronden
We gebruiken de hele dag door computers, maar hoe werken ze op een fundamenteel niveau? Vijf fascinerende tips om je computer te doorgronden.
Dit jaar wil ik leren programmeren. In het verleden ben ik een aantal keer begonnen om Python onder de knie te krijgen, maar telkens strandde dat voornemen na een aantal weken al.
Wat niet hielp, was dat ik geen antwoorden had op een aantal fundamentele vragen. Want wat doet een programma nu precies? Hoe verwerkt een computer dit? Waarom wordt Python een high level language genoemd en wat is dan een low level language?
Onder dit soort vragen ligt een grote - en ik denk voor velen onbeantwoorde - vraag: hoe werkt een computer eigenlijk? Ik weet dat een computer eigenlijk niet veel meer doet dan nullen en enen verwerken, maar hoe dan? Hoe is het mogelijk dat een stuk plastic geheugen heeft? Een input kan nemen, die kan verwerken en een output kan geven die voor jou, als gebruiker, nuttig is?
Voor mijn hernieuwde poging om te leren programmeren, wilde ik beter beslagen ten ijs komen. Ik heb de kerstvakantie daarom gebruikt om mij te verdiepen in de logica die ten grondslag ligt aan computers. Ik wil hier vijf boeken en/of filmpjes delen die volgens mij laten zien hoe waanzinnig interessant computers eigenlijk zijn.
1. The Information: A History, a Theory, a Flood
Dit boek, van de Amerikaanse wetenschapsauteur James Gleick, prijkt sinds verschijning in 2011 bovenaan mijn lijstje favorieten. Bijna ieder jaar herlees ik het, zoals de afgelopen weken. The Information is namelijk een ontzettend rijk boek. In drie delen beschrijft Gleick niets minder dan de rol van informatie in onze geschiedenis en eigenlijk ook in ons universum. Tegelijkertijd ondergraaft hij het idee dat computers bijzonder zijn: computers zijn de zoveelste technologie in onze geschiedenis die informatie manipuleert.
Computers zijn de zoveelste technologie in onze geschiedenis die informatie manipuleert
Behendig verweeft Gleick theorie over informatie en communicatie met levensverhalen en uitvindingen. Hij vertelt bijvoorbeeld over de pogingen van Charles Babbage en Ada Lovelace halverwege de negentiende eeuw om een rudimentaire mechanische computer te maken, inclusief software. Een poging die niet is geslaagd.
Maar echt interessant wordt Gleicks boek als hij een tamelijk onbekende grootheid in de computergeschiedenis opvoert: Claude Shannon, ook wel de vader van de informatietheorie genoemd. Shannon introduceerde de bit, en daarmee een meeteenheid van informatie. Belangrijker: hij leverde een grote bijdrage in het leggen van een wiskundige basis van het begrip informatie en gaf daarmee de ontwikkeling van de digitale computer een enorme impuls.
Met het gevaar dat ik Gleick tekortdoe, laat ik hem liever zelf even aan het woord in dit filmpje van The Guardian.
2. Code, The Hidden Language of Computer Hardware and Software
Dit boek, van Charles Petzold, beschrijft stap voor stap hoe een computer in elkaar zit. Het doel van de schrijver is om de lezer te laten zien wat ervoor nodig is om een computer te maken en hoe het apparaat dan werkt. Daar waar The Information zwaar leunt op theorie, is Code juist heel praktisch.
Het boek is geschreven in jip-en-janneketaal en dat is in dit geval een compliment. Petzold laat zien wat er nu zo handig is aan het binaire systeem (de bekende nullen en enen) en hoe je daarmee kunt rekenen. Hij toont, met veel tekeningen, hoe je die nullen en enen kunt verwerken en van daaruit geheugen kunt opbouwen en steeds complexere berekeningen kunt maken. Vervolgens bouwt Petzold een computer met een central processing unit (CPU, de regisseur van je computer), intern geheugen, een besturingssysteem, verschillende programmeertalen en grafische capaciteiten. De computer zoals we die kennen dus.
Ik vond dit boek erg inzichtelijk en zeer goed leesbaar. Zeker een aanrader als je kennisniveau gering is. En een goede manier om je middelbareschoolwiskunde een beetje op te poetsen.
3. How a CPU Works
Als je geen zin hebt om de voorgaande tip helemaal te lezen, dan is dit filmpje wellicht een goede vervanging. Hierin wordt namelijk stap voor stap uitgelegd wat er in het hart van je computer gebeurt als er een instructie wordt gegeven (bijvoorbeeld het intypen van een letter op je toetsenbord, waarna er een letter op je beeldscherm verschijnt).
De maker laat zien hoe de central processing unit (CPU) samenwerkt met bijvoorbeeld de arithmetic-logic unit (ALU, verantwoordelijk voor berekeningen) en de random-access memory (RAM, het kortetermijngeheugen van je computer). Dit filmpje toont de indrukwekkende complexiteit die bij zelfs de simpelste handelingen op je apparaat in gang wordt gezet.
4. Alan Turings Wonderful Machine
Een mijlpaal in de ontwikkeling van computers was de publicatie van een 36 pagina’s tellend artikel van de Britse wiskundige Alan Turing: On computable numbers, with an application to the Entscheidungsproblem. Hoewel het artikel zich richtte op het oplossen van een taai wiskundig probleem, is het vooral bekend geworden voor een vondst die Turing gebruikte in de bewijsvoering: een universal computing machine, die later bekend zou worden onder de naam Turing Machine.
De Turing Machine was een computer die alleen op papier bestond
De Turing Machine was een computer die alleen op papier bestond. De computer bestond uit:
- Een mogelijk oneindig lint met vakjes waarin symbolen konden worden geschreven (zoals x, É™, 1, 0 of juist niks).
- Een printer die op dit lint de betreffende symbolen kon lezen en schrijven.
- Een tabel met instructies.
- Een register dat bijhoudt wat de ‘staat’ is van de computer.
Turing toonde aan dat je met deze tamelijk simpele ingrediënten een machine kon maken die willekeurige berekeningen kon uitvoeren. Een computer dus.
Op de cursussite Pluralsight vond ik een heel heldere uitleg over dit artikel en de Turing Machine. Maker Dan Sullivan legt uit wat de gedachtegang achter deze machine is, welk probleem de machine moest oplossen en hoe Turing te werk is gegaan. Daarmee komen we veel te weten over de logica van computers. De volledige kijktijd is ongeveer tweeënhalf uur, maar als je alleen de eerste module bekijkt, heb je een duidelijke samenvatting. De overige modules duiken flink de diepte in.
5. Machine Code and High Level Languages
En tot slot een tip om meer inzicht te krijgen in programmeertalen, in het bijzonder low en high level languages. Dit korte filmpje geeft goed weer wat de verschillende lagen zijn in je computer om instructies om te zetten in taal die de computer begrijpt.