E.W.Dijkstra Archive: Ontwerp voorwoord. (EWD 252a)

Ontwerp voorwoord.

Deze brochure is samengesteld om U behulpzaam te zijn bij de keuze van een afstudeerrichting, bij het bepalen van een voorkeur voor een afstudeerhoogleraar en bij de samenstelling van (voornamelijk) Uw afstudeerprogramma voorzover dit keuzevakken en stages betreft. De meest informatieve manier leek om elke hoogleraar van de Onderafdeling der Wiskunde zijn eigen bijdrage te laten schrijven, terwijl een redacteur de brochure van een inleiding zou moeten voorzien en het daarheen zou moeten leiden dat de diverse bijdragen voldoende homogeen van stijl en pretentie zijn om voor U een vergelijking enigszins mogelijk te maken. En het is deze redacteurstaak die ik gaarne op mij heb genomen, omdat ik ten volle besef hoe moeilijk deze keuze (tussen U eigenlijk nog onbekende alternatieven!) U vaak moet vallen.

Wij kunnen U slechts informatie geven, voorzover die ons relevant voorkomt opdat U een iets duidelijker inzicht krijgt, waartussen U kiest. Om teleurstelling te voorkomen wil ik vooropstellen, dat het heel erg de vraag is of daarmee de keuze voor U makkelijker zal worden: naarmate de alternatieven duidelijker een beeld moeten vormen van wie U bent en wat U wilt. Zo zal bv. de ene student een keuzevak kiezen omdat het hem makkelijker voorkomt, overwegend dat hij daarmee zijn afstuderen bespoedigt, terwijl een andere student een keuzevak zal kiezen, juist omdat het hem moeilijk voorkomt, overwegend dat wanneer hij zich in zijn studententijd niet met de betrokken materie vertrouwd maakt het er waarschijnlijk later nooit meer van zal komen. Zo zal de ene student een keuzevak kiezen omdat het bij zijn afstudeerrichting aansluit, maar zal een ander een keuzevak kiezen juist omdat het zo weinig met zijn afstudeerrichting te maken heeft. Kortom, bij de keerzijde van de medaille, bij het "Ken Uzelve" kan deze brochure U uit de aard der zaak niet helpen.

U kunt ook niet verwachten dat deze brochure U alle informatie geeft, die U zou willen hebben omdat wij niet kunnen voorzien op grond van welke criteria U verkiest te kiezen. Het is in dit verband wellicht nuttig er op te wijzen, dat ik aan mijn redacteurschap niet de vrijheid ontleen eigenmachtig (redactionele) wijzigingen in de bijdragen mijner collegae te brengen: hun bijdragen, zoals gepubliceerd, zijn van begin tot eind door henzelf geschreven en voor hun eigen tekst dragen ze de volle verantwoordelijkheid, opdat U desgewenst de wijze, waarop zij over hun werk schrijven, bv. of ze het als makkelijk dan wel als moeilijk afschilderen, eveneens in Uw keuze kunt betrekken.

Een vraag, die U zich bij de keuze van een afstudeerrichting stellen moet, is "Hoeveel hangt voor mij van de keuze af?" en mijn neiging is om, ongehoord Uw antwoord, te zeggen "Minder dan U denkt.". Ik krijg nl. de indruk dat veel studenten tamelijk zwaar tillen aan de keuze, alsof deze keuze bepalend zou zijn voor de professionele activiteit voor de rest van het leven, een indruk, die door de belangstelling voor "toekomstmogelijkheden" versterkt wordt. Gezien de bijzonder snelle en drastische verschuiving in de eisen, die de maatschappij aan zijn technici stelt, moet ik hier een ernstige waarschuwing laten horen: ik verwacht van het merendeel van onze wiskundige ingenieurs dat ze in de loop van hun leven terecht zullen komen in professionele activiteiten waarin hun afstudeerrichting van weleer niet meer te herkennen is. Sterker, ik hoop dat menig wiskundig ingenieur zich in die hoedanigheid verdienstelijk zal maken op een werkterrein dat thans niet of nauwelijks voorzien lijkt! Over de lange termijn gezien kon wat een student precies gedaan heeft daarom wel eens minder belangrijk zijn, dan dat hij iets gedaan heeft en geleerd heeft dat goed te doen.

E.W.Dijkstra

Ontwerp "Over de afstudeerrichting "Fundamentele Programmering"."

Fundamentele programmering houdt zich, zoals de naam zegt, bezig met programmeren, hetzij als activiteit, dan wel als object van studie. Programmeren is de kunst iets groots en ingewikkelds zo ordelijk op te zetten en uit te werken, dat men (als persoon of als groep) zijn intellectuele greep op zijn schepping blijft behouden, dat men ongestructureerde veelheid temt en deszelfs bastaard Chaos zo effectief mogelijk weet te vermijden.

Welke kennis en welke vaardigheden zijn hierbij vereist? In het kort zou ik willen zeggen: vrij weinig specifieke kennis, maar des te meer vaardigheid en zelfkennis. Uit de rest van het wiskundig curriculum kan ik nauwelijks onderwerpen kiezen, waarvan ik zeggen kan "Die zijn onmisbaar.", een onvermogen dat ten nauwste verband houdt met het feit dat moderne rekenautomaten, als mathematische machines beschouwd, hun naam "general purpose equipment" terecht en met ere dragen.

De aansluiting met de rest van het wiskundig curriculum is drieërlei.

Ten eerste via een groot applicatiegebied. Wie voor een of andere toepassing een programma maakt, moet niet alleen kunnen programmeren, hij moet ook de totale taak, die de machine in die toepassing is toegedacht, kennen. En elke keer dat (zoals vaak) deze taakstelling een afwegen van mogelijkheden versus desiderata is, is inzicht in het toepassingsgebied op zijn zachtst gezegd meegenomen. Het is via de applicatie dat bv. kennis van lineaire algebra, differentiaalvergelijkingen, statistiek en numerieke wiskunde van groot nut kunnen blijken.

Ten tweede—en hier fungeert de wiskundige ervaring als algemene ontwikkeling ten aanzien van het programmeren zelf, ongeacht de toepassing—omdat een goed programma zo ongeveer uit componenten wordt opgebouwd als een wiskundige theorie uit stellingen. Het is daarom dat ik van afstudeerders verwacht, dat zij door eerder opgedane ervaring een goed ontwikkeld gevoel voor de logische samenhang van wiskundige theorieën hebben: deze ervaring dient bij het opbouwen van programma's te worden overgedragen (ik denk hier bv. aan groepentheorie.)

Ten derde omdat van de programmeur, die de correctheid van zijn programma bewijzen moet, vertrouwdheid met (in hoofdzaak discrete) bewijstechnieken gevraagd wordt benevens, naast de discreet-logische aspecten, enig stochastisch benul opdat hij oog hebben voor de quantitatieve aspecten van het gedrag van (de machine werkend onder controle van) zijn programma. Als hij staande voor een keuze die op dergelijke quantitatieve gronden genomen worde, handig een verantwoorde schatting kan maken, dan is dat meegenomen.

Een en ander impliceert dat ik bij afstudeerders vrij liberaal kan zijn ten aanzien van welke stof ze uit de rest van het curriculum hebben gekozen; daar tegenover staat echter, dat ze dan wel behoorlijk boven die stof moeten staan.

Welke vaardigheden worden vereist? Uit de analogie tussen een programma enerzijds en een theorie anderzijds volgt, dat men vrij creatief moet zijn en moet beschikken over een "zakelijk" abstractievermogen. (Met de toevoeging "zakelijk" bedoel ik, dat men niet alleen nieuwe begrippen moet kunnen invoeren, maar daarbij een wijd open oog moet hebben voor hun hanteerbaarheid en hun nut.)

Vervolgens stel het vak hoge eisen aan iemands vermogen tot zindelijk (den desgewenst toch beeldend) taalgebruik: men heeft dit nodig voor de (frequente!) introductie van nieuwe begrippen, men heeft dit nodig omdat programmeren vaak en groepsactiviteit is, waarin in discussies de relevante begrippen nog gevonden moeten worden, men heeft dit tenslotte nodig als tegengif, ter ontmaskering van de reclame-slogans, waarvan dit vak helaas vergeven is.

Ten leste moet de programmeur een ver-ontwikkeld orgaan hebben voor volledigheid, nauwkeurigheid en netheid, kortom een liefde voor detail. Wie als programmeur meent op deze nederige deugden te kunnen neerzien, heeft het verkeerde vak gekozen.

Tenslotte een enkele alinea over de toekomstmogelijkheden. Ik zou me met een beroep op "The computer is here to stay" hiervan kunnen afmaken met een simpel "Riant natuurlijk!", ware het niet dat ik mijzelf vandaag de dag wel drie maal zou bedenken voordat ik het vak "Software engineering" zou kiezen. (Aan het einde van mijn eigen studententijd heb ik me wel meer dan drie maal bedacht, maar ik had het makkelijker, want het vak bestond nog niet en in mijn jeugdige onnozelheid voorzag ik niet, hoe dilettantisme en belangenstrijd dit bedrijf later vertroebelen zouden.) Het punt is nl. dat het intellectueel niveau, dat eigenlijk voor dit werk nodig is, over het algemeen zwaar onderschat wordt, waardoor de meeste programmeurs, gewapend met te primitieve denkhulpmiddelen, worstelen met problemen, die hun capaciteiten aanzienlijk te boven gaan. Hun product is navenant, hun enige troost is, dat zij het zelf niet beseffen en dat hun chef (nog) denkt, dat het nu eenmaal niet beter kan. De maatschappelijke gevolgen van de huidige praktijk van computergebruik worden echter zo onaanvaardbaar, dat hier verandering in moet (en ook zal) komen. Voor de zwakke broeder betekent dit, dat het vak hem nog verder boven het hoofd zal groeien; voor de begaafde betekent dit, dat hij een gerede kans loopt nog God weet hoeveel jaren te moeten werken in een sfeer, die nu al als achterlijk gedisqualificeerd kan worden: een leger doorgeschoten boekhouders zal zich uit lijfsbehoud genoodzaakt zien, hem de voet dwars te zetten!

E.W.Dijkstra