Overslaan en naar de inhoud gaan

Teloorgang 4GL geen groot verlies

Na de eerste (machinecode), tweede (assembleertaal) en derde (hogere programmeertaal) generatie verwachtte men dat er een volgende generatie programmeertalen zou komen waarin iedereen gewoon kon zeggen wat de computer moest doen. Door die vierde generatie talen, kortweg 4GL genoemd, zou er een eind komen aan veel problemen bij de ontwikkeling van informatiesystemen. Gebruikers zouden die systemen immers zelf kunnen bouwen zodat ze volledig aan hun eisen zouden voldoen.
Tech & Toekomst
Shutterstock
Shutterstock

Bovendien zouden die systemen ook nog eens sneller klaar zijn en minder fouten bevatten dan de systemen die met de gangbare methoden werden ontwikkeld. In plaats van 4GL kregen we echter specifieke gebruikerstools, zoals spreadsheets en vraagtalen voor databases, nieuwe jasjes voor Algol-60, zoals Java, PHP en .Net, en standaardprogramma’s met reeksen parameters. We kunnen ons dus afvragen waarom de voorspellingen over de toekomst van de 4GL niet zijn uitgekomen.

Beste boek
Als we op zoek gaan naar informatie over de vierdegeneratietalen die werkelijk gebruikt zijn en misschien nog wel gebruikt worden, blijkt die moeilijk te vinden. Terwijl de gemiddelde universiteitsbibliotheek tientallen boeken over Fortran, Cobol en andere derdegeneratietalen bezit, zijn de boeken over 4GL op de vingers van één hand te tellen. Het is tekenend dat het beste boek over 4GL is geschreven door James Martin, een schrijver die over bijna ieder onderwerp op automatiseringsgebied een boek heeft gepubliceerd. Voor zover ik dat uit de voorbeelden in de publicaties kan opmaken ligt de kracht van talen als Natural, Mantis, Ideal of Progress vooral in het gemak waarmee bestanden gemuteerd kunnen worden. Een diepgaande beschouwing over de opbouw van deze talen heb ik echter niet kunnen vinden. De oorzaak van de beperkte omvang van de literatuur ligt waarschijnlijk in de politiek van de leveranciers. Zij hebben waarschijnlijk direct met hun afnemers gesproken en zelf voor opleiding en voorlichting gezorgd.
De onderwijsinstellingen hebben de vierdegeneratietaal om verschillende redenen links laten liggen. Ten eerste gingen de kosten van 4GL hun budget ver te boven, ten tweede gingen zij in de jaren tachtig massaal over op het gebruik van pc’s terwijl de meeste 4GL voor mainframes bedoeld waren en ten derde waren de vierdegeneratietalen niet zo interessant voor de informatici die het onderwijs verzorgden. De enige vierdegeneratietaal die wel belangstelling van docenten en studenten kreeg was SQL, maar dat noem ik dan ook een vraagtaal voor databases en geen echte 4GL.
Een ander probleem is dat het begrip 4GL op twee manieren kan worden opgevat. Ten eerste als benaming voor de ideale taal die een eind zal maken aan veel, zo niet alle, automatiseringsproblemen, en ten tweede als verzamelnaam voor programmeertalen die door de leveranciers zo genoemd worden en maar ten dele aan de vereisten voor die ideale taal beantwoorden. In de populaire literatuur werden vierdegeneratietalen vooral in de eerste betekenis besproken, terwijl degenen die er mee moesten werken vooral te maken kregen met de beperkingen van een specifieke 4GL.

Alternatieven
Terwijl men nog volop bezig was met het ontwikkelen en invoeren van 4GL werd langzamerhand duidelijk dat er betere alternatieven waren om het bouwen van informatiesystemen te vereenvoudigen. Daarvan noem ik er drie: de verbetering van 3GL, het gebruik van specifieke tools voor bepaalde problemen en het gebruik van standaardprogramma’s.
De moderne derdegeneratietalen, zoals Java, Visual Basic en PHP, vertonen al veel karaktertrekken van de ideale 4GL. Naast de klassieke arrays kunnen lijsten en collecties worden gebruikt en databases kunnen direct vanuit het programma worden geraadpleegd en gewijzigd. Bovendien gaan de programmeurs zelf ook meer in 4GL-stijl programmeren, wat wil zeggen dat zij de nadruk leggen op het oplossen van de gegeven problemen en niet op het bedenken van slimme trucjes om geheugenruimte en rekentijd te besparen. Hedendaagse docenten besteden trouwens ook niet zoveel aandacht aan dat laatste aspect van het programmeren.
Van de specifieke tools heeft de spreadsheet de 4GL voor beslissingsondersteuning verdrongen. Daarnaast zijn de vraagtalen voor databases van belang. SQL heeft zich langzamerhand ontwikkeld tot een algemene vraagtaal die in veel verschillende pakketten beschikbaar is. Bovendien is het in de meeste pakketten ook mogelijk om vragen in SQL stap voor stap op te bouwen door vraagtermen in tabellen in te vullen.
Het grootste deel van het verwachte werkterrein van de 4GL wordt echter bestreken door standaardpakketten. Die bevatten iets wat de 4GL niet hebben, namelijk een model en een begrippenapparaat voor de gewenste toepassing. In een ERP-pakket kan de gebruiker bijvoorbeeld met behulp van een parameter aangeven of de productie volgens MRP of JIT gepland moet worden en vervolgens zijn er weer parameters voor alle detailbeslissingen binnen de gekozen methode. Evenzo kent een loonprogramma alle begrippen van arbeidstijd tot ziektekostenpremie. Het is praktisch onmogelijk al die kennis in een universele 4GL onder te brengen, want daar zouden dan bijvoorbeeld de belastingregels van alle landen ter wereld in moeten zitten.
Tot slot de vraag of de vierdegeneratietalen terecht verloren zijn gegaan. Ik denk dat de verwachtingen voor 4GL in het algemeen te hoog gespannen waren en dat we niet hoeven te treuren om het verlies van specifieke vierdegeneratietalen. Met de huidige mix van specifieke tools voor eenvoudige toepassingen, standaardpakketten en geavanceerde 3GL kan in alle informatiebehoeften worden voorzien.

Dr. Rommert Casimir doceerde van 1971 tot 1985 informatica aan de Erasmus Universiteit Rotterdam en van 1985 tot 2003 informatiekunde aan de Universiteit van Tilburg. Hij houdt zich nu bezig met bedrijfsspelen, end-user-computing en de geschiedenis van de informatica (rommert@lyngheidi.nl).
Boeken over 4GL zijn op de vingers van één hand te tellenOnderwijsinstellingen hebben vierdegeneratietaal links laten liggen

Zoektocht naar ideale 4GL
De ontstaansgeschiedenis van programmeertalen is bekend. De eerste computers werden geprogrammeerd in machinetaal. Spoedig daarop volgde de assembleertaal en al tussen 1955 en 1960 kwamen er hogere programmeertalen zoals Fortran, Algol, Lisp en Cobol. Na deze snelle ontwikkeling verwachtte men rond 1970 dat er nieuwe programmeertalen zouden komen waarin iedereen gewoon zou kunnen zeggen wat de computer moest doen zonder daarbij te hoeven vertellen hoe dat moest gebeuren. In navolging van het toen populaire begrip computergeneraties sprak men graag over generaties programmeertalen, waarbij de machinetaal de eerste, de assembleertaal de tweede en de hogere programmeertaal de derde generatie was.
De derde generatie (3GL) zou natuurlijk worden opgevolgd door een vierde (4GL) en daarbij zou net zo’n grote stap voorwaarts worden gemaakt als de stap van assembleertaal naar hogere programmeertaal. De taal zou dus eenvoudiger te gebruiken zijn, zodat er geen ervaren programmeurs meer nodig waren om informatiesystemen te bouwen, en het programmeren van informatiesystemen in die taal zou veel minder tijd kosten, waarbij men dacht aan een winst van een factor tien. Daardoor zouden programma’s veel sneller klaar zijn, minder kosten, beter aan de eisen van de gebruikers voldoen, minder fouten bevatten en gemakkelijker te onderhouden zijn. Het nadeel dat de nieuwe talen meer computercapaciteit zouden vergen nam men graag op de koop toe, want computers zouden immers steeds krachtiger worden. Dat laatste is in ieder geval een voorspelling die is uitgekomen.

Eisen
De ideale 4GL moet dus in ieder geval aan drie eisen voldoen. De taal moet gemakkelijk te leren zijn, het schrijven en veranderen van programma’s mag weinig tijd kosten en het moet eenvoudig zijn om foutloze programma’s te schrijven. Om het leren van de taal te vergemakkelijken moeten er zo weinig mogelijk uitzonderingsregels bestaan. Bij de spelling van het Nederlands zien we wat voor problemen er anders optreden. Ook verschillende uitdrukkingen met soortgelijke functies, zoals de While-Wend en Do-Loop Until in Basic zijn ongewenst. De grootste winst ten opzichte van de 3GL valt te behalen door het verdwijnen van alle constructies om de uitvoering van het programma te versnellen. Dat was natuurlijk wel even slikken voor de traditionele programmeur die nu juist was opgeleid om slimme algoritmen en datastructuren te bedenken. Door een goede implementatie kan een schijnbaar inefficiënte formulering in een 4GL toch tot een efficiënt programma leiden en door de technische ontwikkeling worden snelheid en geheugenbeslag steeds minder belangrijk. Met de ingewikkelde datastructuren verdwijnt ook het verschil tussen voorgrond- en achtergrondgeheugen waardoor de programmeur geen aandacht meer hoeft te besteden aan het inlezen en wegschrijven van gegevens. Door deze vereenvoudigingen wordt het programma korter en het aantal fouten zal dus vanzelf afnemen omdat dit vooral afhangt van de omvang van het programma. Bovendien worden de meeste fouten veroorzaakt door de moeilijkste begrippen, zoals de pointers in Pascal en C, en die komen in 4GL niet voor.
In één opzicht zijn de eisen van eenvoud en snelheid strijdig. Om de programmeertijd te bekorten moet een 4GL een groot aantal specifieke functies bevatten en dat maakt de taal moeilijker te leren. De meeste gebruikers leren dan ook een subset aan en raadplegen voor de extra functies een dik handboek.
Sommige schrijvers stellen dat vierdegeneratietalen niet-procedureel moeten zijn. Dit wil onder meer zeggen dat de volgorde van de regels in het programma niet van belang is. Dat maakt de interpretatie er niet gemakkelijker op, want als een programma zowel de regels B=A+3 als A=B/2 bevat, kan het de bedoeling zijn een stelsel van twee vergelijkingen met twee onbekenden op te lossen, maar een van de regels kan ook gewoon fout zijn. In de praktijk zijn de meeste vierdegeneratietalen dan ook gewoon procedureel.

Lees dit PRO artikel gratis

Maak een gratis account aan en geniet van alle voordelen:

  • Toegang tot 3 PRO artikelen per maand
  • Inclusief CTO interviews, podcasts, digitale specials en whitepapers
  • Blijf up-to-date over de laatste ontwikkelingen in en rond tech

Bevestig jouw e-mailadres

We hebben de bevestigingsmail naar %email% gestuurd.

Geen bevestigingsmail ontvangen? Controleer je spam folder. Niet in de spam, klik dan hier om een account aan te maken.

Er is iets mis gegaan

Helaas konden we op dit moment geen account voor je aanmaken. Probeer het later nog eens.

Maak een gratis account aan en geniet van alle voordelen:

Heb je al een account? Log in

Maak een gratis account aan en geniet van alle voordelen:

Heb je al een account? Log in