‘Met Java leer je niet echt programmeren’
De twee zien in studieprogramma’s steeds minder aandacht voor formele technieken die de correctheid van programma’s kunnen afdwingen en voor de wiskundige principes die aan goed werkende programmatuur ten grondslag liggen. In plaats daarvan krijgen informaticastudenten in hun eerste jaar vooral Java voorgeschoteld, volgens de professoren in een misplaatste poging om programmeren ‘leuk’ te maken en meer studenten te trekken. Het resultaat is dat studenten het vervolgens lastig vinden programma’s zonder grafische interface te schrijven en geen voeling hebben voor de relatie tussen programmatuur en hardware. “We leiden professionals op die heel makkelijk te vervangen zijn.” De beide professoren, Robert Dewar en Edmond Schonberg, trekken de vergelijking met een loodgieter die rondstruint in een ijzerwarenzaak; uiteindelijk zoekt hij de onderdelen (lees: libraries) bij elkaar die een min of meer werkende oplossing opleveren, maar hóe het werkt is niet interessant. Dat software op die manier wellicht erg inefficiënt met hardware omgaat, zal niet meer bij de programmeur opkomen.
Natuurlijk is Java belangrijk, nuanceren ze, maar dan bijvoorbeeld vooral om te leren programmeren in ‘threads’ of om te laten zien hoe een programma zijn eigen status kan onderzoeken. De taal Lisp is het toonbeeld van functioneel programmeren. C is de low-leveltaal die de relatie tussen hardware en software prachtig blootlegt. En C++ laat mooi zien hoe je met encapsulatie omgaat. En Ada, waarin Dewar en Schonberg zichzelf hebben gespecialiseerd, is volgens hen de échte software-engineeringtaal. Iemand die Ada onder de knie heeft, zal ook in C en andere talen netjes de specificaties en de implementaties scheiden. Een echte programmeur heeft, om kort te gaan, het programmeren op zodanige wijze geleerd dat hij in elke taal correct te werk gaat.
Hans van Vliet, professor Software Engineering aan de VU, bevestigt de ontwikkeling, maar relativeert die. “We hebben in Nederland bredere informaticaopleidingen dan in de VS, maar voor zover de eindtermen betrekking hebben op software-enigneering wordt er wel gekeken naar de eindtermen die door IEEE en ACM zijn opgesteld. En in Nederland wordt inderdaad veel Java gebruikt als vehikel om mensen te leren programmeren.” Dat opleidingen breder en minder diep worden, vindt hij een natuurlijke ontwikkeling. “De meeste problemen in software-engineering hebben meer te maken met de sociale en psychologische kanten.” De ‘loodgietersbenadering’ is volgens hem zelfs onontkoombaar. “Je moet dus zoeken naar fundamentele technieken om iets te zeggen over het aan elkaar knopen, in plaats van te zeggen dat je alles vanaf de grond moet opbouwen.”
/f.blankena@sdu.nl