Exit "The Programming Laboratory".

Een negatieve uitslag.

Het doel van het project, dat sinds een jaar is overwogen, was om studenten in een ideale —dwz. passend geidaliseerde— omgeving metterdaad op allerlei niveau relevante ervaring op te laten doen op het gebied van software engineering. Aangezien wij het voor de competente software engineer een belangrijke ervaring achtten in een groot complex systeem zijn bijdrage als integererend bestanddeel te leveren, vonden we het scheppen van de werkisituatie waarin de toekomstige software engineer zullks kan (be)eofenen wenselijk. Wij hoopten ten bate van onze studenten bovengenoemd doel te bereiken door met hen een groot complex systeem netjes op te bouwen

Enkele specifieke doelstellingen stonden hierbij voorop.

1) In weerwil van de uiteindelijke complexiteit moest het systeem "kenbaar" en "beschrijfbaar" blijven, een eis waaraan gangbare systemen, gemeten naar de norm die we ons inmiddels hebben aangemeten, tamelijk tot schromelijk tekortschieten. Wij stelden ons voor door een stringent volgehouden gelaagde structuur met zeer zorgvuldig gekozen interfaces dit ideaal te bereiken. Aan de eis, dat neiuwe studenten zich op grond van de inmiddels bestaande documentatie zich snel op een bepaald niveau zouden kunnen inwerken, wilden wij de voortdurende prikkel tot de hiervoor vereiste zelfdiscipline ontlenen.

2) De eis dat studenten op allerlei niveau van het systeem moesten kunnen meerwerken en experimenteren, impliceerde dat "modulaire opbouw" veel meer dan een loze kreet moest zijn. Sterker, dorrdat "modulariteit" een van de belangrijkste doelstellingen zou zijn, verwachtten we, dat het systeem niet onaanzienlijk van gangbare, bestaande systemen zou afwijken.

3) Misschien haast nog meer dan het uiteindelijke systeem zou de wijze, waarop het moest worden opgebouwd en zou kunnen worden gewijzigd, in het centrum van de belangstelling staan, Het kan niet anders of dit moest ons inzicht in de automatiseringsmogelijkheden bij software productie aanzienlijk verdiepen; het is voor deze automatisering waar we mettertijd een belangrijk werkterrein voor het systeem zagen liggen.

4) In de openingszin hebben wij het scheppen van een "passend geidealiseerde" omgeving genoemd. Wij stelden ons voor dat wij ons de wrijheid zouden voorbehouden royaler met geheugen en rekentijd om te springen dan tot op heden gebruikelijk is. Enerzijds zouden wij hiertoe gedwongen zijn door gebrek aan mankracht, die ons immers verbiedt het onderste uit de kan te willen halen, willen we überhaupt van de grond komen. Anderzijds mocheten we, in het licht van het feit dat hardware in prijs steeds daalt, verwachten, dat hiermee op modernere wijzen van computergebruik geanticipeerd zou worden.

Op grond van de ervaringen van afgelopen jaar meen ik tot de conclusie te komen, dat ik met dit project te hoog en vooral te groot gegrepen heb. Een en ander klemt des te meer omdat de vrijheid ruimer dan gebruikelijk met geheugen om te springer een thans toch nog forse inverstering noodzakelijk zou maken.

In het afgelopen jaar is de poging om vorm aan het project te geven, hoewel niet helemaal zonder succes, onvoldoende opgeschoten. Hierbij hebben oorzaken van naar wij hopen voorbijgaande aard een rol gespeeld —de onrust of ik naar Stanford zou gaan en mijn gezondheid, om er een paar te noemen—; dat ik een paar maanden gegeven heb aan de voorbereiding van het college "Inleiding tot de Kunst van het Programmeren" is een voorbeeld vab interferentie van naar ik vermoed minder vergankelijke aard: dit college staat nu op poten, maar volgende jaren is er wel weer wat anders. Hoofdoorzaak is echter geweest, dat het project vooralsnog te moeilijk bleek.

In de afgelopen jaren is wel steeds duidelijker uit de verf gekomen hoe "een mooi systeem" er uit ziet, maar met een kwaliteitsnorm alleen los je nog geen problemen op. Hoewel ik er nog steeds van overtuigd ben, dat een systeem zoals ons voor ogen zweefde. "Mooi" bouwbaar is, raak ik er tegelijkertijd steeds meer van overtuigd, dat wij dit met de beperkte mankracht en slecht garandeerbare continuiteit niet op poten zullen krijgen in de periode van een jaar of wat, die mij ook voor de ogen zweefde.

Op het gebied van processor allocation is —in het afstudeerwerk van Bomhoff en Feijen— duidelijk vooruitgang geboekt. Op het gebied van virtual storage implemetation is, hoewel we er veel aandacht aan besteed hebben, duidelijk nauwelijks vooruitgang geboekt, we hebben "de passende idealisering" vooralsnog niet kunnen vinden. Dit heeft enige maanden aan mijn gemoedsrust gevroten, ik acht het moment gekomen om te erkennen, dat ik dat zelfs in twee vloeken en twee zuchten niet kan en uit deze erkenning mijn consequenties te trekken.

Ware het alleen de virtual storage implementation geweest, dan hat ik daar nog overheen kunnen stappen, dan had ik, zij het iets minder mooi, zij het iets minder overtuigend verdedigbaar, door kunnen gaan. Dat hebben we tentatief ook geprobeerd, maar toen begonnen zich niewe problemen af te tekenen, waarvan ik in eerste instantie verwacht, dat we er even machteloos tegenover zullen staan.

Er is een op het eerste gezicht nog betrekkelijk geisoleerd probleem, nl. welke rol dient men aan expliciet meegegeven parameters versus globalen toe te kennen. Ze zijn beiden op allerlei manieren implementeerbaar, dat is het probleem niet. Het probleem is, dat we niet over de criteria beschikken, op grond waarvan we overtuigend kunnen kiezen; als we het ene zouden doen en het andere niet zouden laten, zouden we een mechanisme geschapen hebben zonder te weten hoe we het gebruiken moesten. En bij het zoeken naar keuzecriteria hebben we moeten erkennen nog geen vaste grond onder de voeten gevonden te hebben.

Een minder geisoleerd probleem, dat begint op te doemen is het gebrekkige inzicht in automatiseringsmogelijkehden. Er bestaan bv. nauwelijks enigszins fundamentele artikelen over de mogelijkehden en beperkingen van bootstrapping. Nu was het de bedoeling van het programing laboratory project om zulke inzichten te winnen. Het wordt evenwel duidelijk dat het welslagen van het project critiek ervan af zal hangen of zulke inzichten inderdaad gewonnen worden. In het afgelopen jaar hebben we diepte van onze onkunde gepeild; op grond van deze peiling durf ik het project in zijn oorsrponkelijke reikwijdte niet meer aan.

Als de voortekenen niet bedriegen —dat hoop ik vurig en die hoop lijkt nu gerechtvaardigd— zal de volgende grote machine voor het rekencentrum met kop en schouders boven alle thans aan de markt zijnde alternatieven uitsteken. Ik besef, dat deze machine er in de eerste plaats zal zijn voor productiedoeleinden en dat de eis van continuiteit in de productie deze machine niet er beschikking zal stellen van het soort software experimenten, waartoe ik de mogelijkheden had willen scheppen. In dat opzicht is hij geen vervanging; hij maakt, als hij komt, een "programming laboratory" iets minder urgent: als gebruikers kunnen onze studenten in elk geval wel met een complex gezond systeem kennismaken. En als we mettertijd wel een programming laboratory creeren, is de noodzaak dat het "groot" is, daardoor —gelukkig!— kleiner.

Op grond van de genomen beslissing zal ik de bakens wat verzetten, hernieuwd analyseren, waar beter inzicht het meeste nodig is, pogen dit inzicht te verkrijgen in de hoop dat ik later wel een verantwoord voorstel kan doen. Ik hoop het project wat kleiner te kunnen krijgen en toch voldoende interessant te kunnen houden; tegelijkertijd hoop ik dat de alom aangekondigde projsdaling daadwerkelijk doorzet, zodat een research machine niet zo duur hoeft te zijn, want dat zou wel erg prettig zijn: hoe goekoper hij is, des te meer vrijheid ik zal hebben.