HOME

Organisatie van onderzoek en onderwijs van Fundamentele Programmering

Show original manuscript

1.     Uitgangspunt is de opvatting dat de opgave grote (klassen van) informatieverwerkende systemen (100.000 tot 1.000.000 opdrachten) beheers te ontwerpen en betrouwbaar te maken, primair een formidabele intellectuele uitdaging is, die in een aantal opzichten zonder precedent is.

1.1. “The mathematical basis of programming is very simple —misleadingly simple in fact.” (Stanley Gill.) De basis is zo simpel dat intellectuele beheersing denkbaar is tot een veel hogere graad van volledigheid dan in vele andere wetenschappen.

1.2. Omvang, snelheid en betrouwbaarheid van moderne apparatuur zijn zo duizelingwekkend, dat de programma’s, die nu realistisch uitgevoerd kunnen worden, qua “sophisticatian” hun triviale grondslag zo in de letterlijke zin “onvoorstelbaar” ver zijn ontstegen, dat alle onderschatting van de formidabiliteit van de intellectuele uitdaging een in het verleden gewortelde naiviteit lijkt.

2.     Doel van het onderzoek en onderwijs van Fundamentele Programmering zijn daarom het ontwikkelen en overdragen van denktechnieken, waarvan wij op goede gronden verwachten mogen, dat zij ons beter tegen de geschilderde uitdaging opgewassen maken, benevens het ontwikkelen van en vertrouwd maken met “a programming environment” waarin genoemde denktechnieken zo direct mogelijk zowel gebruikt als bruikbaar zijn.

3.     Onmiddellijk rijst de vraag met wat voor personeel een dergelijk project bemand zou moeten worden. Het lijkt vrij duidelijk, dat dit hoog gequalificeerd (of althans hoog qualificeerbaar) personeel moet zijn; op grond van vroegere ervaring en de steeds toenemende zuigkracht van buiten lijkt het een illusie te hopen, dat een dergelijk project met “blijvertjes” bemand kan worden; dit kan de THE nooit betalen. De THE kan ze alleen betalen als ze jong en nog onervaren zijn; mijn hoop is dies gevestigd op een paar uitnemende studentassistenten, afstudeerders en een of twee afgestudeerde wetenschappelijke assistenten, die nog wel een paar jaar willen blijven.

Naast deze practische overweging wijst ook de aard van het werk naar jeugdig personeel: er zal immers geen groot beroep gedaan hoeven te worden op brede kennis noch ervaring. (Zij dienen niet in het algemene basis-onderwijs betrokken te worden!) Het zal er veeleer op neerkomen of ik hen het vereiste vermogen tot abstraheren kan bijbrengen, of zij de quintessence van een (geestelijke en practische) discipline kunnen zien en zich er naar kunnen gedragen.

Het lijkt ook duidelijk dat mijn gedachten uitgaan naar een betrekkelijk klein aantal: ten eerste kan ik mijn gedachten niet in de ongetwijfeld vereiste intensiteit over een groot aantal mensen verdelen, ten tweede wordt bij toenemend aantal het gevaar dat de kern van het systeem te barok wordt, me veel te groot.

4.     Qua mechanische voorzieningen gaat mijn weloverwogen voorkeur uit naar een “dedicated machine”.

4.1.   In deze wereld worden rekenautomaten nog zo zeer beschouwd als duur gereedschap en niet als “materiegeworden uitdaging”, dat men ze alsmaar zo intensief mogelijk wil gebruiken voor iets anders. Deze economische pressie is zo groot, dat ik met alle waardering voor aangeboden bescherming van organisatorische aard, maar een enkele voldoend effectieve manier zie om de mechanische faciliteiten voldoende te beschermen: een “dedicated machine” die (bv. door de bewuste afwezigheid van compatibele software) anderszins onbruikbaar is.

4.2.   Mijn gedachten gaan uit naar een DEC-achtige machine: simpele opdrachtcode, maar heel snel met een behoorlijk omvangrijk primair geheugen en een heel groot secundair geheugen en simpele communicatieapparatuur (zeg ponsbandapparatuur, een paar teleprinters en een rustige regeldrukker). De bedoeling is om deze machine ijlings om te programmeren tot een machine met de primitiva waar ik op voort wil bouwen en vanaf dat moment de gegeven hardware code volslagen te vergeten. Als de electronica maar snel is kan ik me die interpretatieve vertraging wel veroorloven, terwijl de snelheidseisen ten aanzien van secundair geheugen verzacht worden. Een andere mogelijkheid is, dat er tegen die tijd realistisch microprogrammeerbare apparatuur op de markt is.

5.     Uit het voorafgaande is duidelijk, dat ik me heri richt tot programma’s, die in hun geheel niet in een achtermiddag of een maand te maken zijn, maar over programma’s van vele manjaren. Men kan hierover doceren, maar het soort object waarover men dan praat is zo “onvoorstelbaar” —daar zit nl. juist de kern van het probleem— dat de opleiding van op dit niveau competente programmeurs directere ervaring met “grootheid” vergt. Het ideale antwoord hierop is om in huis een dergelijk software project op poten te hebben, dat nadrukkelijk is opgezet om allerlei mensen op verschillend niveau aan te laten werken. Wat opgebouwd dient te worden is zoiets als een “extendable operating system”, dat qua hanteerbaarheid, documenteerbaarheid en begrijpelijkheid een orde van grootte beter ligt dan de huidige praktijk. De implicaties van deze eisen maken tegelijkertijd de hele onderneming tot een volwaardig onderzoekproject (waarover ik nog meer moet denken, voordat ik verantwoord een configuratie kan bestellen). Als het project de vruchten afwerpt die ik hoop —en waarvan ik niet zie, waarom ze niet haalbaar zouden zijn— zal het bij voortschrijdende sophistication steeds makkelijker worden om onervarenen er mee te laten spelen. Uiteindelijk kan het dan uitgroeien tot prakticumruimte voor het derdejaarscollege “Inleiding tot de kunst van het programmeren”.

 

november 1969 Edsger W.Dijkstra