Geschiedenis van techniek, technologie en informatica

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


Reconstructie - Heron I / HerOne

Een 2000 jaar oude programmeerbare robot

De Heron I / HerOne is een reconstructie van een programmeerbare robot van Heron van Alexandrië. Het toestel wordt aangedreven door een zwaartekrachtmotor (gewicht) en is door een pinmechanisme herprogrammeerbaar. We bouwden voor de lezingen bij het boek "Niet van gisteren" een sterk vereenvoudigde versie van het automatisch theater van Heron van Alexandrië. Hoofddoel was de programmeerprincipes en het gebruik van gewichten zoals we in veel latere klokken terugvinden, te demonstreren. Het toont aan dat programmeren en automatisering geen uitvinding van de 20e eeuw is.

Met dank aan Ghislain Kinnart voor het uitwerken van de plannen in een model.

   

Noel Sharkey, professor artificiële intelligentie en robotica aan de universiteit van Sheffield bestudeerde het werk 'Peri automatopoietikes' van Heron van Alexandrië. In dat werk beschrijft Heron (1e eeuw na Chr.) het bouwen van automatische theaters.

"(...) Nadat ik Heron's 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 bovenaan een met tarwekorrels gevulde cilinder plaatste. Door een sleufje onderaan de cilinder open te trekken, vloeiden de korrels weg. Dit zorgde ervoor dat het gewicht met enige vertraging begon te zakken. Aan de andere kant hingen niet één, maar twee touwen. Elke touw was rond een afzonderlijke as (de linker en de rechter vooras) gewikkeld. In beide assen waren op gelijkmatige afstanden gaten geboord. Het zakkend gewicht trok niet alleen aan de touwen, maar liet ook de beide assen draaien. De machine kon eenvoudig geprogrammeerd worden door in de gaten pinnen te plaatsen. Door een touw rond een bepaalde pin te laten teruglopen, kon je één 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. Hiervoor plakte hij een stuk van het touw met was vast aan de as. Het zakkende gewicht trok het was stilaan los. Eens het touw was losgekomen, begon de as weer te roteren.

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. 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. Dit 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 verwijzingen naar automaten en zelfs in de Ilias van Homeros lijken sommige passages naar automaten te verwijzen.

Bron: Niet van gisteren, ISBN: 9789058268594. Lees de volledige tekst in ons boek "Niet van gisteren".

Kris Merckx

Programmeren is oud

Een computer kan met behulp van software een heleboel taken automatiseren om de mens werk uit handen te nemen en vooral de benodigde (werk)tijd te verkorten. Toch beseffen velen nog steeds niet hoe ze dat precies moeten doen. De zoek-en-vervangopdracht in een tekstverwerkingsprogramma is daar een simpel voorbeeld van. In heel wat software kunnen steeds weerkerende taken met behulp van zogenaamde macro’s geautomatiseerd worden. Je voert een aantal taken uit terwijl de computer de uitgevoerde opdrachten stapsgewijs registreert. Nadien kan hij zelfstandig die taak herhalen. De lijst met instructies is vastgelegd in het geheugen van de computer. In automaten zitten de instructies eveneens in de machine.

De organen van de machine

Tijdens mijn lessen steek ik mijn bewondering voor Leonardo da Vinci niet onder stoelen of banken. Elke kans die zich voordoet om het over hem te hebben neem ik te baat. Iedereen kent Leonardo, al was het maar omdat hij de beroemde Mona Lisa heeft geschilderd. 

Leonardo da Vinci was niet alleen schilder, maar ook ingenieur en beeldhouwer. Hij las gretig de vertalingen van Heron en Vitruvius, en bestudeerde de verschillende onderdelen van de machines. Hij noemde ze de ‘elementen’ of ‘organen’ van de machines. Door die onderdelen op allerlei manieren te combineren kon je in zijn ogen een oneindig aantal machines bedenken en bouwen. Wanneer je de werken van Da Vinci bekijkt, doen ze vaak denken aan de handleidingen uit dozen Lego® Technics. In zijn teksten beschreef hij welke soorten schroeven, tandwielen, vliegwielen, kogellagers, kettingen, veren, katrollen enzovoort er bestaan en hoe je ze maakt. Hij voorzag zijn teksten van uitgebreide technische tekeningen in perspectief. Zelf ontwierp hij een hele reeks machines: oorlogstuig zoals mortieren en tanks, baggerschepen, vliegtuigen, een helikopter, een duikpak, een hydraulische zaag ... Hij observeerde ook nauwlettend de vlucht van vogels en de werking van hun vleugels en veren. Leonardo ontwierp op basis daarvan tal van (zweef)vliegtuigen, die hij zelfs voorzag van schokdempers om bij de landing het ‘vliegtuig’ niet te beschadigen. Velen denken dat hij prototypes van die geniale vondsten zelf heeft uitgetest. Toch is het grootste deel van zijn uitvindingen nooit in praktijk gebracht. Een van de meest verbazingwekkende afbeeldingen uit de beschrijvingen van Leonardo da Vinci is die van een fiets. De fiets zoals we hem nu kennen, werd pas uitgevonden aan het einde van de 19e eeuw. 

Codex Atlanticus

In de Codex Atlanticus, een bundel tekeningen en teksten van Leonardo die vervaardigd zijn tussen 1479 en 1519, ‘staat’ echter een tekening van een fiets met spaken, tandwiel, ketting, stuur enzovoort. Dit zou betekenen dat de fiets niet in Frankrijk of Duitsland werd uitgevonden, maar driehonderd jaar eerder in Italië, door de uitvinder aller uitvinders: Leonardo da Vinci. Recent onderzoek zou echter aantonen dat de fiets helemaal niet door Leonardo of een van zijn leerlingen werd getekend, maar pas veel later bij de restauratie van de ‘teksten’ is toegevoegd. Oorspronkelijk stonden er wel een aantal onderdelen van een voertuig dat sterk op een fiets lijkt, maar geen frame. Het is niet duidelijk wie de vervalsing heeft gemaakt. Sommige Leonardo- specialisten blijven echter vast geloven in de echtheid van het ontwerp.

Leonardo was ervan overtuigd dat ook de natuur geen levende wezens kan laten bewegen zonder daarbij gebruik te maken van ‘mechanische onderdelen’. Daarom voerde hij in het geheim dissecties uit op lijken om de werking van de menselijke organen en spieren te bestuderen. Uit wat hij leerde, raakte hij ervan overtuigd dat het mogelijk moest zijn om organen of werkende organismen na te bouwen. Eeuwen voordat ze opnieuw werd ontdekt, vond hij aderverkalking en de oorzaak ervan. Door het nauwkeurig bestuderen van botten en spieren slaagde hij erin om de eerste ‘robots’ te bouwen die zich ‘zelfstandig’ konden bewegen. 

In 1550 schreef Giorgio Vasari (1511–1574) in zijn boek over het leven van de belangrijkste Italiaanse kunstenaars:

‘Toen Leonardo da Vinci in Milaan was, kwam de koning van Frankrijk op bezoek. Hij vroeg hem iets speciaals te doen. Da Vinci ging aan de slag en presenteerde hem een leeuw die een paar stapjes zette en zijn borstkas opende, waar tal van lelies uit tevoorschijn kwamen.’

De Amerikaanse robotexpert Mark Rosheim bestudeerde de Codex Atlanticus van Da Vinci in de hoop sporen te vinden van die robotleeuw. Hij is ervan overtuigd dat Da Vinci de leeuw op een mechanisch programmeerbaar wagentje had geïnstalleerd. Een veermechanisme deed wielen draaien, die op hun beurt kleinere wielen in beweging zetten. Die stuurden houten armen aan, waaraan een soort schaarmechanisme was bevestigd. Door de armen volgens een vastgelegd plan te laten bewegen kon het karretje rijden en ook draaien.

Het boek der kennis over ingenieuze mechanische apparaten

Leonardo was niet de enige die vruchtbaar gebruikmaakte van de kennis van automaten die via vertalingen van klassieke en hellenistische werken doorsijpelde. Abū al-’Iz Ibn Ismā’īl ibn al-Razāz al-Jazarī of kortweg Al-Jazari voor de vrienden (1136–1206) werd genoemd naar zijn geboorteplaats Al-Jazira (tussen Tigris en Eufraat). Hij werkte als astronoom, wetenschapper, wiskundige en ingenieur aan het paleis van Diyarbakır, die heerste over Oost-Anatolië. Over het leven van Al-Jazari is niet veel bekend, maar gelukkig bleef zijn Kitáb fí ma’rifat al-hiyal al-handasiyya (Het boek der kennis van ingenieuze mechanische apparaten) bewaard. Het bestaat uit een zestal hoofdstukken die handelen over mechanica en techniek: water- en tijdkaarsen, apparaten die trucs verrichten, hydraulische automaten en meetinstrumenten, fonteinen, muziekautomaten, hijsmachines enzovoort. Al-Jazari was duidelijk op de hoogte van de vondsten en mechanische onderdelen van de hellenistische technici. Hij vermeldde de krukas, het echappement, de waterhijsmachines, de dubbele pomp ... Het is niet altijd duidelijk in welke mate hij zelf aanpassingen heeft aangebracht. In zijn werk vinden we ook beschrijvingen van gesegmenteerde versnellingen, tijdkaarsen en klokken die met gewichten en waterkracht werden aangedreven. Zijn bekende olifantenklok lijkt de voorloper van onze koekoeksklok.

Het meest tot de verbeelding spreekt een boot met vier ‘robot’-musici (twee drummers, een fluit- en een harpspeler). Terwijl de boot zich al rijdend voortbewoog, speelden de muzikanten gedurende een bepaalde tijd muziek. Onder in de boot bevond zich een lange roterende cilinder met pinnen. De pinnen raakten hefbomen die de muzikanten in beweging zetten. De as werd in beweging gezet door een waterrad en een overloopsysteem zoals we dat kennen van Ktesibios. Net als Heron kan Al-Jazari het toestel herprogrammeren door de pinnen op andere plaatsen in de cilinder te steken.
Ook in het Westen zouden automaten en muziekdozen met pin- en kamsystemen vooral dienstdoen als entertainment. Als onderdeel van klokken hadden ze nog enigszins een praktisch nut. Pierre Jaquet-Droz (1721–1790) was een Zwitserse horlogemaker die erin slaagde om ook in kleine uurwerken klok- en fluitspelen in te bouwen. Hij is echter vooral bekend door zijn automaten: een schrijver, een muzikant, een tekenaar ...
Jacques de Vaucanson (1709–1782) was net zoals Droz bekend om zijn automata. Het beroemdste is zonder twijfel zijn automatische eend. De ‘robot’-eend bestond uit vierhonderd delen, kon eten, drinken, met haar vleugels flapperen en ... euhm ... poepen.

Afbeelding: 18e eeuwse automaat


Automatisering in de industrie

De eerste die een soortgelijk programmeerbaar systeem inzette voor industrieel gebruik was de Fransman Joseph Marie Jacquard (1752–1834). Hij ontwierp in 1801 een weefgetouw dat werd aangestuurd door ponskaarten. Hij baseerde zich voor zijn werk op de eerdere uitvindingen van onder anderen Basile Bouchon, Jacques Vaucanson en Jean Falcon

Basile Bouchon, zoon van een orgelbouwer, bedacht al in 1725 een manier om een weefgetouw aan te sturen met een geperforeerde rol papier. Bouchons vader maakte cilinders met pinnen voor orgels. Om de pinnen op de juiste plaatsen aan te brengen in de cilinder, tekende hij eerst een patroon op een kartonnen plaat. Die plaat draaide hij vervolgens om de cilinder waardoor hij precies wist waar hij de pinnen in de cilinder moest slaan. Basile meende dat het handiger zou zijn de kartonnen platen zelf te gebruiken. Het was Jacquard die het systeem als eerste succesvol wist te implementeren. 

Het ponskaartsysteem zien we in de 19e eeuw ook opduiken in muziekdozen en pianola’s. Ponskaarten werkten op een vergelijkbare manier als pin- of kamsystemen. In het geval van muziekdozen kon door de gaatjes lucht van een blaasbalg ontsnappen of er konden pinnetjes door schieten die instructies gaven aan de rest van het mechanisme. Bij Jacquard sprongen pinnen op door de openingen in de ponskaarten en lieten het weefgetouw een bepaald patroon weven. Het grootste voordeel van een ponssysteem was dat je veel meer instructies achter elkaar kon laten uitvoeren door de machine. Bij een cilindersysteem met pinnen of kammen was je beperkt door de omtrek van de cilinder. Ponsplaten kon je oprollen of opvouwen en door het mechanisme laten schuiven bij het uitvoeren van het programma. De wevers van Lyon vreesden voor hun werk en verbrandden het weefgetouw in 1808, zo vertelt het verhaal. Blind protest tegen een niet te stuiten innovatie. Maar dit verhaal klopt niet. Van die brand is helemaal geen sprake geweest. Het verhaal duikt voor het eerst op aanvang 19e eeuw. 

Al snel zag men ook op andere vlakken van de samenleving het nut van een ponskaartsysteem. Je kon op een ponskaart allerlei soorten informatie in gecodeerde vorm opslaan en het geautomatiseerd laten uitlezen. Charles Babbage (1791– 1871) tekende plannen voor een analytische rekenmachine en voorzag de invoer van ponskaarten. Zijn plannen betekenden een serieuze stap voorwaarts in de ontwikkeling van een rekenmachine. Eerder bouwde de Fransman Blaise Pascal (1623–1662) een mechanische rekenmachine, maar die was nooit een succes geworden. Ook de machine van Babbage kwam niet veel verder dan de ontwerptafel.


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



home