Donald Knuth en de kunst van het programmeren

“Don Knuth werd geboren in Milwaukee. Hij is hoogleraar aan de Stanford-universiteit, tegenwoordig met emeritaat, en wordt in brede kring beschouwd als de vader van de informatica. Zijn werk The Art of Computer Programming heeft hem al bij leven tot een legende gemaakt bij iedereen die iets met programmeren te maken heeft.” Zo luidt de biografische tekst op wikipedia. Knuth is Turing Award winnaar.

Professor Donald Knuth

Knuth en ik hebben dezelfde geboortedatum: 10 januari. Dat is net zo min toevallig als dat Erik van Muiswinkel en Barack Obama op dezelfde dag geboren zijn.

Ik ontmoette Knuth tijdens een conferentie in Nafplion op de Peloponesus. Het was mijn eerste conferentiebezoek nadat ik net was begonnen als onderzoeker in opleiding met het doel te promoveren op het gebied van de attributen-grammatica’s. Knuth was één van de invited speakers op de ICALP conferentie. Pnueli en Lovász waren de andere twee. De Hongaarse wiskundige Lovász was toen al beroemd vanwege zijn werk op het gebied van de combinatoriek. Hij ontving dit jaar (2021) de prestigieuze Abelprijs. De prijs is genoemd naar Abel, de wiskundige, niet naar mijn oudste kleinzoon of naar de broer van Kaïn, maar dit terzijde.

Wat betekent een computer programma?

Knuth is de uitvinder van de attributen-grammatica, een grammatica formalisme waarin je vertalingen en daarmee vertalers kunt specificeren. Ze werden in eerste instantie populair voor de specificatie van compilers van programmeertalen, zo’n ding vertaalt een door de programmeur geschreven code in machinecode.

In “The genesis of attribute grammars” (1990) presenteert Knuth zijn reconstructie van het ontstaan van de attributen-grammatica. Daarin schrijft hij:

One of the puzzling questions under extensive investigation at the time was the problem of programming language semantics: How should we define the meaning of statements in algorithmic languages?” (Knuth, 1990).

Semantiek probeert, anders dan heuristiek, de betekenis van taal in een andere taal vast te leggen. De syntax van de programmeertaal Algol60, (de eerste die ‘taal’ werd genoemd, Fortran heette een code) was vastgelegd in het Backus-Naur-Format. Het bleek gelijkwaardig aan de context-vrije grammatica van Noam Chomsky, een formalisme dat door Yngve bij MIT gebruikt werd om Russisch naar Duits en Engels te vertalen. Maar voor het vastleggen van de semantiek (betekenis) van een programma was nog geen dergelijk formalisme ontwikkeld.

In 1968 verscheen het eerste artikel van Knuth over attributengrammatica’s. Niet toevallig in hetzelfde jaar waarin de programmeertaal Algol68 verscheen. Het is de eerste programmeertaal waarvan niet alleen de syntax, maar ook de semantiek formeel werd vastgelegd; in een formalisme dat ‘affix-grammatica’ werd genoemd. Kees Koster, die toen in Berlijn werkte was één van de ontwerpers ervan. Kees ging later naar Nijmegen waar hij de opleiding Informatica opzette en een compiler-groep. Hij werkte ook aan de toepassing ervan op het gebied van de natuurlijke talen, zoals Nederlands en Engels. Hij zat in mijn promotiecommissie. Kees was fanatiek motorrijder. Daaraan is hij, veel te jong nog, overleden. Later gebruikte ik deze formalismen om de computer te leren onze taal te verstaan. Natural Language Processing is niet toevallig kern van veel kunstmatige intelligentie en ‘human media interaction’.

Het artikel van Knuth uit 1968 bevatte een fout. Die zat in het algoritme voor het testen of een attributen-grammatica goed-gedefinieerd is in de zin dat de semantiek van ieder programma berekenbaar is. De fout werd al snel ontdekt en er verscheen een tweede artikel achteraan waarin Knuth de fout herstelde (Knuth 1971). Door die fout werd een nieuwe variant van de klasse van attributengrammatica’s gedefinieerd, de klasse waarvoor het oorspronkelijk foute algoritme goed werkte. Het ontstaan van nieuwe varianten door fouten is een bekend verschijnsel in de genetica en de virologie. Zo ontstaan mutanten.

Ook fouten zijn soms ergens goed voor.

ICALP en MFCS: een histories intermezzo

Toen ik assistent in opleiding was en aan mijn promotieonderzoek begon waren er twee jaarlijkse conferenties op het gebied van de theoretische informatica. ICALP en MFCS. Ze worden nog jaarlijks gehouden. Van beide conferentie was de eerste editie in 1972.

In 1985 werd ICALP gehouden in Nafplion

ICALP (International Colloquium on Automata, Languages and Programming) is de vlaggeschip conferentie van de EATCS (de Europese Associatie van Theoretische Informatici). ICALP werd en wordt in verschillende landen van Europa georganiseerd. De laatste, in 2020, was een virtuele conferentie (in Saarbrücken; dat dan weer wel).

MFCS (Mathematical Foundations of Computer Science) was de Oost-Europese conferentie. Deze werd vanaf 1972 bij toerbeurt gehouden in de DDR, in Polen en in Tjecho-Slowakije. Op de website van MFCS staat: “Traditionally, the conference moved between the Czech Republic, Slovakia, and Poland, while since 2013, the conference travels around Europe.” Met de splitsing van Tsjecho-Slowakije werd Slowakije op 1 januari 1993 onafhankelijk. Het zou kunnen zijn dat vanaf de oprichting in 1972 het al beleid was om de conferentie om en om in Tjechië en in Slowakije te houden wanneer het niet in de DDR of in Polen was.

De Golem van rabbi Löw

Ik bezocht verschillende edities van deze conferentie. Daar ontmoette ik de enige twee Europeanen, buiten mijn hoogleraar Anton Nijholt -inmiddels hoogleraar in Brussel-, die soort van ‘begrepen waar ik mee bezig was’ en met wie ik ook samen zou gaan werken. Jorma Tarhio uit Helsinki ontmoette ik in Bratislava, waar we nog samen naar de pas uitgekomen James Bond film gingen; een film die zich onder andere in Bratislava afspeelt. Daar op die MFCS conferentie was ook Borisvoj Melichar, hoofd van de afdeling Electrotechniek en Computerwetenschap van de Technische Universiteit van Praag. Melichar zou ik nog vaak in Praag opzoeken. Het Praag van voor de fluwelen revolutie, toen de stad nog niet overspoeld werd door toeristen en je helemaal alleen over de nog lege brug met de heilige beelden kon lopen, de steile trappen op naar De Burcht waar eens de rabbi Löw uit Mulisch’ Procedure zijn gang maakte naar de keizer van het Heilige Roomse Rijk die hem had verordonneert om hem te vertellen over de Golem. “Wat is een golem, rabbi” vroeg de keizer. Dat is een woord uit Psalm 139 vers 16, antwoordt de rabbi. “Is het alleen maar een woord?” ‘Alleen maar een woord; herhaalt de rabbi. ‘Maar wat gaat er boven het woord?‘ De keizer geeft de rabbi opdracht de Golem te maken. Mulisch boek gaat natuurlijk over de kunstmatige intelligentie, de programmeerbare machines, de talige artefacten die door de woorden gemaakt worden.

Theorie en Praktijk: programmeren is een kunst

Zoals gezegd ontmoette ik Knuth in 1985 in Nafplion. In het oude Griekse amfitheater hield hij, nadat de met kinderkopjes bedekte vloer ten behoeve van de akoestiek was natgesproeid en de Minister van Cultuur, Nana Mouskouri, ons had verwelkomd en de spreker had ingeleid, zijn voordracht met de in de Griekse context passend gekozen titel Theory and Praxis.

In 1991 verscheen een artikel van zijn hand met dezelfde titel. In de samenvatting staat:

“The author argues to Silicon Valley that the most important and powerful part of computer science is work that is simultaneously theoretical and practical. He particularly considers the intersection of the theory of algorithms and practical software development. He combines examples from the development of the TeX typesetting system with clever jokes, criticisms, and encouragements.”

Knuth is de man van het inmiddels zeker bij wiskundigen zeer populaire typesetting formalisme LaTeX. Daar was hij toen druk mee bezig. Hij roemde het Nederlandse handwerk op het gebied van het letterzetten. Zijn ervaring bij het ontwerpen van dit formalisme gebruikte hij als voorbeeld voor zijn boodschap: dat bij het ontwikkelen van techniek theorie en praktijk samen moeten gaan. De titel van zijn tiendelige hoofdwerk “The Art of Computer Programming“, ik kocht deel 1: Fundamental Algorithms tijdens de conferentie, zegt het: Programmeren is een Kunst. En bij het ontwikkelen van kunst gaan het ontwikkelen van theorie en praktijk noodzakelijk hand in hand.

Dit inzicht heeft belangrijke gevolgen voor de inrichting van de arbeid en van het onderwijs. We hebben de neiging om theorie en praktijk, het doen van onderzoek en het ontwikkelen van methodes te scheiden van de praktijk. Dat laatste wordt dan opgevat als het toepassen van een methode die door de ontwerpers uitgedacht is. Knuth pleitte ervoor deze in dezelfde handen te houden. Zoals bij de klassieke ambachtelijke technieken.

De wetenschappelijk-technische ontwikkeling van handwerktuigen naar machine-technieken en programmeerbare machines heeft theorie en praktijk uit elkaar gedreven. Dit gebeurt op alle terreinen van het leven. In de gezondheid- en ouderen-zorg zowel als in het onderwijs. We splitsen het werk op in management, ontwerpen, uitvoeren en gebruiken. We zien steeds meer tekenen die wijzen op de tekorten van dit Taylorisme, deze ‘rationalisatie’ van de arbeid. In de thuiszorg zien we dat Jos de Blok met zijn Buurtzorg organisatie de wijkverpleegkundigen zelf in kleine teams het werk laat organiseren.

Ik heb meer ervaring in het onderwijs. Ik was een paar jaar parttime docent wis- en natuurkunde op de middelbare school. Het werk als docent bestond eruit de lessen af te draaien volgens de door de school gekozen methode. Die schreef precies voor welke bladzijden uit het wiskunde- of natuurkundeboek wanneer behandeld moesten worden, wanneer de proefwerken waren, waarbij de leerstof voor de MAVO leerling een tweede afgeleide was van de leerstof voor de VWO leerling. Het werk bestaat uit de implementatie van een voorbedacht schema. Veel werk is zo georganiseerd. En wat erger is zo denken we ook over onderwijs.

Op de universiteit kon ik mijn ‘eigen’ onderwijs geven, zoals ik het zelf wilde. Totdat er onderwijskundigen werden aangesteld, een groeiend aantal, die zich meer en meer gingen bemoeien met het onderwijs. Niet met de inhoud, want daar hadden ze geen verstand, zeiden ze. Maar wel met de methode. Nadat we jaren voor het vak kunstmatige intelligentie het boek “Artificial Intelligence” van Russel en Norvig hadden gebruikt moesten we daar volgens de geleerden toch maar vanaf zien, want de studenten vonden het te dik en we behandelen toch niet alle hoofdstukken uit het boek. Dat je als docent je eigen inhoud aan een vak geeft en een standaardwerk als achtergrondmateriaal gebruikt dat paste niet in het ‘moderne’ op wetenschappelijke wijze georganiseerde onderwijs.

Kunst en techniek: art en techne

Waarom is programmeren een kunst, meer dan techniek? De volgende tekst maakt het verschil tussen kunst en techniek duidelijk.

“The original meaning of techne is “art”. Like latin ars and English “art”, it carries double meanings. Ars and techne indicate what a modern “artist”, but also what an “artisan” and a “technician”, does. On the one hand it indicates something creative and expressive, for which there hardly exist clear rules, and where skillful and mindful discretion is decisive. On the other, it indicates something technical, i.e. something which by definition is strictly rule based, drill-based, and almost mechanical. Techne is both art and craft, which modern languages tend to separate.”
( From: Techne, the Sage Encyclopedia of Action Research, 2014)

Een computer programmeer je door duidelijke regels te geven volgens welke deze moet functioneren. De semantiek van een programma is een functie. De informaticus als bouwer van programma’s overstijgt deze functionele denkwijze. Hij moet oog hebben voor het doel, waar het om gaat en weten hoe hij zaken precies definieert. Omdat hij dit zelf doet weet hij ook dat het om een oplossing gaat die ook anders had kunnen zijn, en dat de machine werkt omdat en voor zover het werken overeenkomt met de bedoeling die hij er als maker mee had. Dit is alles kennis die juist niet in het programma uitgedrukt is.

Techniek heeft uit zichzelf de neiging de gebruiker ervan mee te programmeren: de handleiding programmeert de gebruiker. Mens en technisch instrument worden één machine. De mens die zich daar tegen verzet heeft het gevoel dat hij daarin niet tot zijn recht komt. Het leven moet toch meer te bieden hebben.

Arbeid en (Kunstmatige) Intelligentie

In Arbeid adelt niet (1989), een bundel artikelen van leden van de vakgroep Wijsbegeerte aan de Universiteit Twente, schrijft Louk Fleischhacker in zijn bijdrage over arbeid en (kunstmatige) intelligente over twee verschillende opvattingen over het doel van het onderwijs. Deze hangen volgens hem samen met het wereldbeeld en mensbeeld dat je hebt. En dat hangt weer samen met hoe je kunstmatige intelligentie opvat. Door middel van techniek kunnen we wel gedragingen die we in een concrete situatie als zinvol ervaren in structuren en regels vatten en simuleren, maar dat is iets anders dan het vermogen zich in een gegeven concrete situatie op zinvolle wijze te gedragen. We herkennen dit wanneer bijvoorbeeld een vertaalmachine plotseling een heel verkeerde vertaling geeft.

In de eerste opvatting gaat het in het onderwijs om het leren van vaardigheden. In de tweede opvatting gaat het om het ontwikkelen van het verstand als een vermogen in te zien waar het in een concrete situatie om te doen is; wat wel en niet zinvol is; een vermogen dat onlosmakelijk verbonden is met de persoon die het vermogen uitoefent. Kennis is dan niet iets wat je van buiten leert, maar wat je karakter vormt en je vermogen ontwikkelt. Kennis als ‘deel’ van je identiteit, je persoonlijkheid en je vaardigheid moet onderscheiden worden van kennis als informatie die je tot je neemt als iets wat buiten je staat, als iets objectiefs, wat in de leerboeken of op het internet te vinden is. Kennis moet je ‘je eigen maken’.

Het is juist de huidige ontwikkeling van de technologie, de kunstmatige intelligentie die volgens Fleischhacker, en daarin staat hij niet alleen, die ons op dit belangrijke onderscheid wijst. Dat komt omdat deze technologie de objectieve verwerkelijking is van deze uitwendige verstandsvorm.

Creative Technology

Op de universiteit ontwikkelden we samen met de AKI, de kunstacademie, onderwijsprojecten waarin zowel technische studenten Informatica als studenten van de AKI samen werkten. Het probleem dat daarbij opdook was het verschil in de wijze van beoordeling op de AKI en op de UT. Wat en hoe beoordeel je eigenlijk op een kunstacademie? Een typisch meetprobleem: welke maat hanteer je bij het beoordelen van een student, zijn werk, haar persoonlijke ontwikkeling?

Het waren de eerste stappen in de richting van een nieuwe studierichting: Creative Technology. Er waren collega’s die ernstige twijfels hadden bij het wetenschappelijke karakter van deze nieuwe bacheloropleiding. Waren het louter economische motieven die de afdeling had voor een nieuwe bachelorstudie, een middel in de jacht naar nieuwe studenten?

Slide van het college Research Methodology met
de missie van de bacheloropleiding Creative Technology

Toen ik gevraagd werd een college Research Methodology voor Create te verzorgen bezocht ik de website van de opleiding. Je moet weten waar het in de studie waar de student zich voor heeft ingeschreven om te doen is. De samenvatting nam ik op in een slide van het inleidende college. Zie de figuur hier boven. Het meest opmerkelijke vond ik daarin de volgende frase:

Their fantasy concentrates on making life safer, healthier, easier, more exciting or just more fun.

Waarom was dit opmerkelijk? Was het niet vanzelfsprekend? Is het niet het doel van iedere opleiding: mensen op te leiden die het leven veiliger, gezonder, meer uitdagend en leuk maken? Was het feit dat de ontwerpers van de opleiding Creative Technology dit zo expliciet op de website zetten niet een teken dat het helemaal niet vanzelfsprekend was dat dit het doel is van een technische universitaire opleiding?

Ik herinner me nog een gesprek met een student bij het college Programmeren dat ik eens gaf. Hij vroeg me wat hij moest programmeren. Waarop ik antwoordde: Ik leer je hoe je moet programmeren; niet wat je moet programmeren. Maar zoals Donald Knuth opmerkte: programmeren is een kunst, een vaardigheid die je slechts kunt leren door te doen. Dat wil zeggen in de praktijk waarin het duidelijk moet worden wat er geprogrammeerd moet worden. Het onderscheid tussen het hoe en het wat bestaat dan niet meer. Evenmin als het onderscheid tussen het wat en het waarom: het doel is immers de maat voor het programma.

Veel van ons onderwijs is nog ingericht volgens verouderde ideeën die horen bij de tijd van de klassieke machine-technologie. De informatie-technologie eist nieuwe vormen van onderwijs en arbeidsorganisatie. Niet alleen op de universiteiten.

Begeleidingsethiek

Ethiek was ooit een puur theoretisch vak. Ik volgde colleges ethiek bij Paul van Dijk. Hij legde het verschil tussen ethiek en moraal uit met de woorden: “Een goede kapper kan best kaal zijn.”. Peter-Paul Verbeek is nu de hoogleraar ethiek aan dezelfde Universiteit Twente. Zeg je Verbeek, dan zeg je ‘Begeleidingsethiek’. De techniekethicus zit aan de ontwerp tafel samen met de ingenieurs, de doelgroep en andere stakeholders.

In plaats van ethiek te zien als ‘beoordelen’ zou ze ook gezien kunnen
worden als het normatief ‘begeleiden’ van technologie in de samenleving
.” (Aanpak begeleidingsethiek, Peter-Paul Verbeek en Daniël Tijink)

Het technische is een onlosmakelijk aspect aan het handelen. Naast het economische, het ethische en esthetische. De begeleidingsethiek gaat uit van dit gegeven: het doel en de normen sturen het ontwerpen van nieuwe methodes van handelen voor concrete situaties. Het ontwikkelen van techniek is een kunst.

Dat is dezelfde idee waarover Knuth zijn lezing in Nafplion gaf, dezelfde idee die spreekt uit de opzet van de studierichting Create: het gaat er in elk project om het goede te doen en te bepalen wat goed is. Studenten moet je leren het goede te doen. Wat dat is dat moeten de betrokken deelnemers samen uit maken terwijl ze aan het project werken.

Het zou goed zijn wanneer de overheid als wetgever en ontwerper van nieuwe regels en wetten voor de samenleving die door de instanties geïmplementeerd moeten worden zich de begeleidingsethiek eigen zou maken.

De ‘Ethiekfabriek’

Als de aanpak begeleidingsethiek vaak wordt uitgevoerd, komen er veel handelingsopties: handelingsopties voor technisch ontwerp, voor de aanpassing van de omgeving en voor beter gebruik. Deze handelingsopties zijn waarschijnlijk breder bruikbaar dan alleen voor de case. We hebben dan ook de ambitie de handelingsopties te verzamelen, opdat ook anderen er gebruik van kunnen maken. Daarvoor bedachten we de term ethiekfabriek.” (Verbeek en Tijink 2019)

Het gevaar van schematisering bedreigt ook de praktische begeleidingsethiek. Zoals bij elke activiteit van mensen die nadenken over wat ze doen. Er worden methodes bedacht, procedures. Uiteraard wel met de disclaimer dat de procedure aangepast moet worden aan de concrete situatie, maar toch.

Het advies is gebruik je verstand, het vermogen waarmee we aanvoelen waar het om gaat, waar de situatie om vraagt. Precies dat vermogen dat we niet in de ‘autonome’, ‘intelligente’ machine, niet in procedures en algemene methodes kunnen vastleggen. Computers kunnen functies toepassen maar er is geen regel die zegt wanneer de computer welke functie of procedure moet toepassen.

Kapitalisme: techniek en economie

Het onderkennen, onderscheiden en formuleren van een algemene methode is typisch voor techniek. Het economisch motief zit in het hergebruik van methodes als instrumenten waarin geïnvesteerd is. De techniek ontwikkelt zich in samenhang met de economie. De overheid of een particuliere onderneming moet geld en middelen beschikbaar stellen voor het ontwikkelen van nieuwe techniek. Marx wees op de ophoping van kapitaal en daarmee van macht door de investering in nieuwe technologie die bruikbaar is voor het rationaliseren van het arbeidsproces. Daarbij werd het maken van winst, voor het realiseren van nieuwe technologie een waarde op zich. De ontwikkeling naar steeds autonomer machines en robots leidt ertoe dat deze de arbeider uit het productieproces verwijdert. Dat arbeid, als deelname aan de samenleving en als zelfontwikkeling nog andere waarden heeft wordt daarbij eenvoudig vergeten.

Een fietsrem op een jumbojet

Technologie en kennis zijn kapitaal en in onze samenleving eigendom van particuliere bedrijven en organisaties. Het ontwikkelen en toepassen van nieuwe technologie is voor bedrijven een missie. Overheden en bedrijven hebben grote invloed op de keuzes voor bepaalde technische ontwikkelingen. Deze ontwikkeling wordt beïnvloedt door politieke keuzes, die omgekeerd weer door economische belangen worden beïnvloedt. De moderne geschiedenis is een geschiedenis van de interactie tussen technologie en economie. In die geschiedenis leven we nu enerzijds als in een maalstroom die ons meevoert, anderzijds als actoren die gebruik makend van verstandige keuzes de loop van de geschiedenis proberen te sturen. De wereld krijgt steeds meer het karakter van een laboratorium waarin geëxperimenteerd wordt met nieuwe mogelijkheden. De geschiedenis wordt een verzameling van experimenten, waarin wet- en regelgeving die de grenzen van het toelaatbare aangeven naar behoefte wordt aangepast. Dat laatste bleek bijvoorbeeld bij de aanpassing van de Europese regels voor genetische manipulatie om het ontwikkelen van nieuwe vaccins tegen het corona-virus mogelijk/legaal te maken.

De technologische projecten waarin de techniekethicus het ontwerp ‘ethisch begeleidt’ speelt zich af binnen de maalstroom van de geschiedenis. De speelruimtes waarbinnen de ontwikkeling gestuurd kan worden lijken daarbij uiterst klein. Goffi vergeleek, zo schrijft Achterhuis in zijn bijdrage over Hans Jonas in “De Maat van de Techniek”, met een verwijzing naar Ellul, de rol van de ethiek bij technologische ontwikkelingen met die van “een fietsrem op een jumbojet.” (Achterhuis, 1992, p.149)

De ontwikkeling van de technologie die geleid heeft tot een toestand waarin de mens zich zelf voor zich ziet in de vorm van intelligente systemen en humanoïde robots leidt echter uit zich zelf tot het nadenken over ethische zaken, als zelf, identiteit, privacy, autonomie, de ander, rechtvaardigheid, geschiedenis, leven en natuur. Het is niet toevallig dat grote ondernemingen zoals Google en Microsoft ethici aantrekken om hun projecten ‘ethisch te begeleiden’ om te manoeuvreren tussen de verschillende interpretaties van het verlenen van ‘diensten’ aan de gebruikers en aan de samenleving. Zijn deze ondernemingen alleen maar verantwoordelijk voor het ‘communicatie kanaal’ of ook voor de wijze waarop het gebruikt wordt? En van wie is de inhoud van de berichten die over het kanaal verstuurd worden eigenlijk?

Wanneer we het hier over het verstandelijk vermogen hebben dan bedoelen we niet het denken volgens vaste denkregels, maar het “gezonde verstand”, het vermogen om het wezenlijke van het bijkomstige te onderscheiden en daarnaar te handelen.

Wittgenstein schreef eens in een brief aan een vriend van hem:

Ik wou dat ik een beter verstand had. En dat ik een beter mens was. Maar misschien is dat wel hetzelfde.

Ik denk: het is hetzelfde. Maar misschien is ook hier de wens de vader van de gedachte.

Bronnen

Hans Achterhuis (1992). Hans Jonas: Ethiek en techniek. In: De Maat van de Techniek (Achterhuis, ed.) Zes filosofen over techniek. AMBO, Baarn, 1992.

Donald E. Knuth, The Art of Computer Programming, Reading, Mass.: AddisonWesley. Volume 1, Fundamental Algorithms, 1968.

Donald E. Knuth (1968). Semantics of context-free languages, Mathematical Systems
Theory 2 (1968), 127-145.

Donald E. Knuth (1971), Semantics of context-free languages: Correction,” Mathematical Systems Theory 5 (1971), 95-96.

Donald E. Knuth (1990). The genesis of attribute grammars. In: Deransart P., Jourdan M. (eds) Attribute Grammars and their Applications. Lecture Notes in Computer Science, vol 461. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-53101-7-1

Rieks op den Akker, Borivoj Melichar, Jorma Tarhio (1990). The Hierarchy of LR-attributed grammars. Proc. Internat. Conf. WAGA on Attribute Grammars and their Applications, September 1990 Pages 13–28.

Donald E. Knuth (1991). Theory and Praxis. Theoretical Comp. Sci. 90 (1991), 1–15.

Louk E. Fleischchacker (1989). Arbeid en (Kunstmatige) Intelligentie. In: Arbeid adelt niet (Pieter Thijmes red.) Uitgeverij Kok, 1989.

Peter-Paul Verbeek en Daniël Tijink (2019). Aanpak Begeleidingsethiek: Een dialoog over technologie met handelingsperspectief, Uitgave van ECP, Platform voor de InformatieSamenleving.

Published by

admin

Rieks op den Akker was onderzoeker en docent kunstmatige intelligentie, wiskunde en informatica aan de Universiteit Twente. Hij is gepensioneerd.

Leave a Reply