Dit jaar wil ik leren programmeren. In het verleden ben ik een aantal keer begonnen om 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 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 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.

YouTube
Een korte uitleg van Gleick over zijn boek.
YouTube
En hier een langer praatje.

2. Code, The Hidden Language of Computer Hardware and Software

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.

YouTube
How a CPU Works van In One Lesson.

4. Alan Turings Wonderful Machine

Een mijlpaal in de ontwikkeling van computers was de 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:

  1. Een mogelijk oneindig lint met vakjes waarin symbolen konden worden geschreven (zoals x, ə, 1, 0 of juist niks).
  2. Een printer die op dit lint de betreffende symbolen kon lezen en schrijven.
  3. Een tabel met instructies.
  4. 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.

Alan Turing’s Wonderful Machine Hier kun je Alan Turing’s Wonderful Machine bekijken. Pluralsight is een betaalde dienst. Je kunt echter een proefabonnement nemen. Je moet dan niet vergeten je weer af te melden, anders wordt er abonnementsgeld afgeschreven van je creditcard. Bekijk de cursus hier

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.

YouTube
Machine Code and High Level Languages Using Interpreters and Compilers.
Wil je mijn verhalen per mail ontvangen? Als je mijn verhalen en andere tips over computers, ethiek en andere technologie in je mailbox wilt ontvangen, schrijf je dan in voor mijn persoonlijke nieuwsbrief. Schrijf je in Dit gaat er mis als een computer bepaalt of je een lening krijgt. Belastingdiensten, veiligheidsdiensten en bedrijven als Google en Facebook zeggen op basis van data eerlijkere beslissingen te kunnen nemen. Princetononderzoeker Solon Barocas is het daar niet mee eens. Met hem loop ik vijf problemen van die benadering door (en twee oplossingen). Lees verder In dit geweldige boek leer je alles over een vernuftig cyberwapen Legers overal ter wereld bekwamen zich in oorlogvoering in het digitale domein. Een belangrijke aanjager van de onlinewapenwedloop was de inzet van Stuxnet, een vernuftig cyberwapen, tegen Iran. Journaliste Kim Zetter heeft over dit wapen een fantastisch boek geschreven. Lees verder