Terug

Programmeren en robots in de oudheid

Mijn studenten kijken altijd wat ongelovig, maar vooral ook nieuwsgierig als ze te weten komen dat ik zowel met geschiedenis als met informatica bezig ben. Voor mezelf is dat niet zo vreemd. Informatica bedrijven is informatie structureren, catalogiseren, vergelijken, indelen, opzoeken, doorzoeken, filteren ... kortom, dingen waarover ook de heuristische methodes van een historicus handelen. Het ultieme streefdoel als leraar is jongeren leren omgaan met informatie, ze leren filteren. Maar dat is natuurlijk makkelijker gezegd dan gedaan. 

Leren betekent ook informatie bestendigen in het geheugen. Ruwweg kunnen we als mens op twee manieren informatie leren en opslaan. Declaratieve herinneringen gaan via de kortetermijnbuffer naar onze hersenen. Het betreft in dit geval semantische herinneringen, zoals begrippen en feiten, en episodische herinneringen, die gekoppeld zijn aan een bepaalde tijd en ruimte. Dit soort informatie raakt het snelst vergeten. Niet-declaratieve herinneringen gaan niet via de kortetermijnbuffer en lijken door onze hersenen meer te worden bestendigd. Hierin onderscheiden we drie vormen van leren: motorisch leren verloopt via de kleine hersenen, perceptueel leren via de neocortex en gewoontevorming via de basale ganglia. 

De langetermijnopslag, kortom de ‘harde schijf’ of het geheugen van onze hersenen, ligt in de neocortex en voor een stuk in de hippocampus, in het zogenaamde "zoogdierenbrein" . Mensen met geheugenproblemen zoals dementie ‘vergeten’ de namen van hun kinderen, maar kunnen meestal wel nog fietsen of koken. Het lijkt erop dat aangeleerde stappenplannen beter geconsolideerd worden dan pure feitenkennis. Ook al hebben computers niet meteen last van dementie, toch onderscheiden we ook hier die dualiteit tussen pure feitenkennis (de opslag van informatie) en het uitvoeren van programma’s.

Machines programmeren

De grootste genoegdoening krijg je als programmeur als je de machine precies kan laten doen wat jij wilt. Dat is natuurlijk wat anders dan bijvoorbeeld het licht ontsteken bij het drukken op de schakelaar. Een programma bestaat uit een stappenplan of meerdere instructies, die de machine achtereenvolgens moet uitvoeren. Een programma heeft ook enkel nut als de machine de instructies zelfstandig en automatisch uitvoert. De stuurfunctie is voor een stuk vastgelegd in een programma, waardoor de mens op dat punt overbodig wordt. De muziekdozen en pianola’s (automatisch spelende piano’s met geponste platen) uit de 19e eeuw, de machines van de Banū Mūsā uit de 9e eeuw of de automaten van Jacques Droz werkten met kamsystemen en cilinders met pinnen. Deze cilinders roteerden, waarbij de pinnen tegen hefbomen drukten en een bepaald mechanisme in gang zetten. Als je de cilinder verving, veranderde ook het programma. 

In onze tijd installeren we met het grootste gemak nieuwe programma’s op een computer. Elk programma voert onder impuls van de invoer van de gebruiker bepaalde instructies uit. Een machine zorgt niet alleen meer voor de energieomzetting, ze neemt niet alleen werk uit handen, maar ze verzorgt ook voor een stuk de stuurfunctie. De logische instructies die we als mens zouden uitvoeren, zijn als een programma in de computer vastgelegd. Het programmeren van een machine en het vastleggen of opslaan van het programma is zeker geen beginpunt in de technische evolutie. Een hamer of bijl maakt werk eenvoudiger, een hefboom verlicht letterlijk het werk, een watermolen kan energie omzetten, maar een programmeerbare machine gaat nog een stap verder. Die neemt een stuk van de stuurfunctie voor zijn rekening. Het vormt een stap op weg naar kunstmatige intelligentie.

Afbeelding: 19e eeuwse muziekdoos.

Heron, de eerste programmeur?

Noel Sharkey, hoogleraar artificiële intelligentie en robotica aan de universiteit van Sheffield, bestudeerde het werk Peri automatopoietikes van Heron van Alexandrië, waarin hij beschrijft hoe hij automatische theaters bouwt:
‘(...) Nadat ik Herons tekst grondig had gelezen, had ik niet de minste twijfel over zijn intentie. Het is duidelijk dat hij zijn robot had ontworpen om hem te kunnen programmeren en om hem in het theater voor verschillende effecten te gebruiken. Op een bepaald punt beschrijft hij zelfs hoe je ingewikkeld gedrag moet programmeren.’
Heron programmeerde zijn theaters met gewichten, touwen, assen en pinnen. Aan het ene uiteinde van het touw bevestigde hij een gewicht, dat hij boven op een met tarwekorrels gevulde cilinder plaatste. Door een sleufje onder in de cilinder open te trekken vloeiden de korrels weg. Daardoor begon het gewicht met enige vertraging te zakken. Aan de andere kant hingen twee touwen. Elk touw was rond een afzonderlijke as (de linker en de rechter vooras) gewikkeld. In beide assen waren op gelijkmatige afstanden gaten geboord. Het zakkende gewicht trok niet alleen aan de touwen, maar liet de beide assen ook draaien. De machine kon eenvoudig geprogrammeerd worden door in de gaten pinnen te plaatsen. Als je een touw rond een bepaalde pin liet teruglopen, kon je een van beide assen op elk gewenst moment in de andere richting laten roteren. 

Net zoals in moderne programmeertalen slaagde Heron er ook in om een ‘timer’-functie in te bouwen. Daarvoor plakte hij met was een stuk van het touw vast aan de as. Het zakkende gewicht trok het was stilaan los. Als het touw eenmaal was losgekomen, begon de as weer te roteren. Je zou de instructies voor Herons robot kunnen uitschrijven met een eenvoudige programmeertaal, zoals de programmeertaal die (als een gratis alternatief) voor Lego® Mindstorms- robots werd ontwikkeld.

task main(){ 
         OnFwd(OUT_A,75);
        OnFwd(OUT_B,100);
        Wait(3000);
}

De OnFwd-functie laat de motor naar keuze (A of B) vooruitbewegen. De Wait-instructie laat het toestel voor een bepaalde duur (milliseconden) halt houden. Uiteraard schreef Heron geen programmeerinstructies. Ze waren vastgelegd in zijn machine, maar op zo’n manier dat je het toestel kon herprogrammeren door de pinnen te verplaatsen. Het programma werd ‘opgeslagen’ in de assen met wat we binaire instructies zouden kunnen noemen. Een pin staat voor een 1, een gat zonder pin voor een 0 (of omgekeerd). 

Het automatische theater van Heron reed volkomen zelfstandig het podium van het theater op. Daar stopte het en toonde een toneelstuk van mechanische poppen, die eveneens door een mechanisme van pinnen, gewichten, touwen, assen, tandwielen en hefbomen werden aangedreven. Het theater was voorzien van decorwissels en geluidseffecten. Door op een bepaald moment een sleuf open te trekken vielen loden ballen op een trom, wat het geluid van donder simuleerde. 

Oeroude wortels?

De ongeziene genialiteit die hij aan de dag legde bij het programmeren van zijn automatische theaters doet vermoeden dat ze slechts een stap waren in een lange traditie van programmeerbare machines. Dat blijkt ook uit zijn teksten. Heron klaagt er uitdrukkelijk over dat schrijvers die voor hem leefden niet duidelijk genoeg waren in hun boeken over automaten. Hij verwijst ook expliciet naar het thans verdwenen boek van Philo van Byzantium over automatische theaters. Ook de werken van Aristoteles bevatten referenties aan automaten, en zelfs in de Ilias van Homeros lijken sommige passages automaten ter sprake te brengen.

Moderne software heeft met andere woorden oeroude wortels.

Het heeft er dus alle schijn van dat automaten een onafgebroken traditie van overerving kennen, startend bij Philo van Byzantium over Heron, via de Arabische ingenieur Al-Jazari en Leonardo da Vinci naar de programmeerbare weefgetouwen van Jacquard. Moderne software heeft met andere woorden oeroude wortels.


Kris Merckx - Uit het boek: "Niet van gisteren".  http://www.nietvangisteren.be


home