Het grafiekenprogramma KOMPLOT door de jaren heen
Paper voor NLUUG-congres, 21 november 1996.
Jan Kraak
Centrum voor High-Performance Computing & Visualisatie (HPC&V)
Rijksuniversiteit Groningen
J.Kraak@rc.rug.nl
Samenvatting
Vanaf 1970 hebben velen op de Rijksuniversiteit Groningen en op nog een aantal andere Nederlandse universiteiten, grafieken gemaakt met het programma KOMPLOT. Onlangs is er een gemoderniseerde versie 8.0 voor UNIX beschikbaar gekomen. Gedurende bijna 27 jaren heb ik het programma ontwikkeld en aangepast aan de zich almaar ontwikkelende technologie op hardware- en software-gebied. Ook heb ik getracht zoveel mogelijk te voldoen aan de steeds verder gaande en veranderende eisen van gebruikers.
Aan de orde komen de veranderingen in belangrijke aspecten van KOMPLOT zoals de gebruikersinterface, de grafische vormgeving, de installatie op diverse computers, grafische apparatuur en documentatie. Aan de hand van een soort 'overlevingsstrategie' zal worden aangegeven hoe het programma bij al deze veranderingen 'up to date' is gehouden. Tevens is er veel aandacht voor programmaconstructie, talen en tools.
Een beroepsleven lang?
Terugblikkend op je leven kun je soms een destijds achteloos genomen beslissing aanwijzen die van grote invloed is geweest. Zo begon ik in 1970 op het Rekencentrum van de Rijksuniversiteit Groningen (RUG) met de ontwikkeling van het grafiekenprogramma KOMPLOT dat nog steeds bestaat. Voor KOMPLOT was het programmeren van grafieken met de zgn. ALGOL basisplotprocedures een tijdrovende zaak. Toen een Amerikaanse onderzoeker dan ook met het programma SIMPLOTTER kwam aanzetten, waarmee je met slechts een paar aanroepen een complete grafiek kon programmeren, was dat een hele vooruitgang. SIMPLOTTER was echter, omdat het in FORTRAN was geschreven, in Groningen niet bruikbaar omdat hier vrijwel iedereen in ALGOL 60 programmeerde. Daarom heb ik toen SIMPLOTTER aangepast aan ALGOL 60 voor de Telefunken TR4 computer: het begin van de ontwikkeling van het hiervoor genoemde programma KOMPLOT. Het voorzag in een behoefte en er was niets anders: een reden om er mee door te gaan en het uit te breiden als gebruikers bepaalde wensen hadden. Veel grafische 'intelligentie' voor technisch-wetenschappelijk gebruik is er in de loop der tijd ingebouwd. Daardoor hoefde men vrijwel niet meer na te denken over allerlei details zoals schaling, vormgeving, logaritmische conversie, interpolatie, datasmoothing etc. Het programma moest onophoudelijk worden aangepast aan de zich steeds vernieuwende techniek. En zo ben ik dan jarenlang voor een aanzienlijk deel van mijn tijd bezig geweest met KOMPLOT dat ondertussen enorm uitdijdde. Lang heb ik daarbij veel ondersteuning gehad van collega's. De laatste jaren doe ik incidenteel nog iets aan KOMPLOT, mijn voornaamste bezigheid is wetenschappelijke visualisatie en sinds het begin van dit jaar ben ik bezig met Virtual Reality toepassingen.
Voorbeeld
Hieronder staat een X-Y grafiek getekend met KOMPLOT. Hierin staan de topsnelheid (flops) en de grootte van het geheugen (bytes) van de mainframes van de Rijksuniversiteit Groningen uitgezet tegen de tijd. Momenteel werkt KOMPLOT op de Cray J932 en de CM-5. Met uitzondering van de Zebra, heeft KOMPLOT op al andere mainframes gewerkt.
Grafieken steeds mooier
De eerste computergrafieken - grafieken bestonden overigens al lang voor de komst van computers - waren nog niet zo mooi als tekenaars ze toen maakten, de teksten waren bijvoorbeeld in hoofdletters uitgevoerd en de lijnen waren niet vloeiend. Maar, zoals vaak het geval is bij een nieuwe technologie, viel niemand daar over: men was dikwijls vreselijk trots als men een grafiek met een computer kon maken. Na de begineuforie kwam er een periode waarin het uiterlijk van grafieken steeds belangrijker werd. De Amerikaan Hershey digitaliseerde met engelengeduld allerlei exotische letterfonts; deze kwamen ook in KOMPLOT en ze werden soms in overdaad gebruikt. Grafieken werden gaandeweg ook meer gebruikt voor zakelijke presentaties (business graphics), waar allerlei uiterlijkheden wel belangrijk worden geacht.De vormgeving van KOMPLOT-grafieken is in de loop der tijd sterk verbeterd. Daarbij zijn als voorbeelden genomen grafieken uit wetenschappelijke tijdschriften zoals de Physical Review (KOMPLOT kent momenteel de optie 'stijl Physical Review'). Bepaalde 'frivole' opties van business graphics pakketten, zoals taartdiagrammen en nep 3-D effecten, zijn echter met opzet niet aangebracht. Wel zijn op verzoek van gebruikers allerlei verfijningen ingebouwd, zoals het plotten van 0.0 in plaats van .0. Dit soort kleinigheden, waar gebruikers veelal erg aan hechten, kosten vaak veel programmeerwerk.
Appreciatie van grafieken
In een tijd waarin vooral op computergebied alles zoveel mogelijk grafisch wordt voorgesteld, is het bijna niet meer voor te stellen dat nog niet eens zo lang geleden het gebruik van grafieken, met name buiten de natuurwetenschappen, nog niet zo vanzelfsprekend was. Dat had niet alleen te maken met de nog vrij primitieve hulpmiddelen en de kwalitatieve benadering in bepaalde vakken, maar ook met de algehele appreciatie van plaatjes: net zoals kijken naar TV en het lezen van stripboeken (met uitzondering van de Bommelstrips - maar daarbij gaat het toch vooral om de tekst), werd ook het gebruik van grafieken gewoon niet erg deftig gevonden. Daarom werd destijds in publicaties ook nog het nut van grafieken uitgelegd, vaak werd daarbij het Chinese gezegde "Een plaatje zegt meer dan 1000 woorden" aangehaald.Echte Groningse naam?
In programmanamen heb je verschillende soorten. Opschepperige zoals WordPerfect, poetische zoals Lotus of namen van grote geleerden zoals Pascal. Misschien kunnen we ook van Groningse namen spreken, een paar voorbeelden: WESP = Waarlijk Eenvoudig Statistisch Pakket KOMPLOT = het bevel "KOM PLOT" GEKAART = Groningens Eigen Kaartprogramma GEP = Groningens Eigen Plotprogramma EENGRAP = EENvoudig GRAfisch PakketOnderhoud
KOMPLOT is voornamelijk ontwikkeld in de jaren '70. Daarna zijn er nog wel nieuwe features toegevoegd, maar het meeste werk ging toch zitten in onderhoud: het aanpassen van het programma aan de zich steeds wijzigende omstandigheden waarin het programma moest werken, zoals nieuwe programmeertools, nieuwe compilerversies, nieuwe programmeertalen, andere operating systemen, nieuwe soorten computers en niet in de laatste plaats nieuwe grafische apparatuur en nieuwe soorten gebruikersinterfaces. Bij alle technologische ontwikkelingen is steeds getracht het moeten aanpassen van bestaande gebruikersprogramma's te minimaliseren. Onderhoud is erg nuttig, maar er is, in tegenstelling tot innovatie, weinig eer mee te behalen, want als je het goed doet merkt niemand het.Ponskaarten
De oerversie uit 1970 stond op ponskaarten: een medium dat destijds erg modern werd gevonden, de ponsband was immers nog maar pas vaarwel gezegd. Nog steeds bewaar ik uit een zekere nostalgie deze eerste ponskaartenversie: een stapeltje van ongeveer 500 kaarten die beduimeld zijn door het vele gebruik. De gaatjes in ponskaarten werden met speciale machines vervaardigd die nogal een forse aanslag vereisten: wat oudere computergebruikers gaan soms nog steeds met dezelfde motoriek de huidige ergonomische toetsenborden te lijf.Gereedschappen
Met de komst van time sharing in de jaren 70 op de RUGroningen en het gebruik van terminals werd het ontwikkelen van programma's een stuk geriefelijker. Je hoefde niet meer met een grote bak kaarten naar de computer te sjouwen, waarbij je goed moest oppassen dat je de bak niet liet vallen, want de zwaartekracht kan een verwoestende uitwerking hebben.Editors en andere gereedschappen vormen een onderwerp waarover mensen altijd zeer uitgesproken meningen hebben. Veel verschillende editors heb ik gebruikt in al die jaren, maar nog steeds zijn de commando's even cryptisch als in het begin. Dat geldt met name voor mijn huidige editor 'vi', die echter het voordeel heeft dat hij op elk UNIX-systeem standaard aanwezig is. De enige essentiele verbetering vind ik het gebruik van de cursor om iets aan te wijzen (screeneditors).
Van grote programma's wil je afzonderlijke onderdelen kunnen compileren, anders duurt het ontwikkelproces veel te lang. Ook wil je versies voor verschillende typen computers kunnen genereren vanuit dezelfde basistekst. Voor deze en nog andere ontwikkeltaken was op de CDC CYBER, de opvolger van de Telefunken TR4, het programma UPDATE aanwezig. Voor de simpele dingen werkte UPDATE prima, maar zodra je iets meer wilde, was de uitkomst meestal anders dan verwacht. Hoe heb ik dit programma vervloekt: ik word daar soms door collega's nog aan herinnerd. Momenteel gebruik ik de UNIX utility 'make' dat beter is. Dankzij de enorme toename aan rekencapaciteit kun je echter ook veel meer experimenteren met tools dan in het verleden.
Conversie naar verschillende computers
Toen in 1972 de CDC CYBER de TR4 opvolgde, werd KOMPLOT daar naar omgezet. Op deze conversie zouden nog vele volgen: naar diverse typen computers zoals DEC's, VAX-en, IBM 360's en MSDOS pc's. Omdat vroeger elk type computer zijn eigen operatingsysteem had, betekende dat altijd veel (hand)werk. Ook de programma-overdracht naar andere computers via magnetische tapes met zijn vele formaten en andere eigenaardigheden was bijna een vak op zich.De huidige versie van KOMPLOT is aangepast voor het UNIX operating systeem dat tegenwoordig op vrijwel elke technisch- wetenschappelijke computer aanwezig is. Iedereen kan momenteel de public domain source versie van KOMPLOT vrij ophalen van de FTP-server van het Rekencentrum RUG (1). Er zijn 'makefiles' voor SGI-, SUN-, DEC-, IBM/RS-6000-, HP-, Cray- en CM5 platforms.
Gestructureerd programmeren
Het hoeft geen betoog dat het ontwerpen, coderen en vooral het aanpassen van een groot programma als KOMPLOT met een grote gevarieerde groep gebruikers veel zorgvuldigheid vereist. Ik heb het als een grote verantwoordelijkheid gevoeld.In 1970 moest je nog zelf uitvinden hoe je grote programma's ontwerpt: toch iets wezenlijk anders dan het schrijven van een wegwerpprogrammaatje voor eigen gebruik. Daarin kwam verandering toen de toenmalige Eindhovense hoogleraar E. W. Dijkstra begon te publiceren over gestructureerd programmeren, zoals het artikel "The GOTO considered harmful" en zijn bijdrage aan het boek "Structured programming" (2). In soms bezwerende taal wees hij op de bijna onmenselijke taak om een correct programma te schrijven. Zijn aanbevelingen zoals top-down design en het gebruik van bepaalde controlestructuren alsmede het vermijden van GOTO's die maar tot 'logische spaghetti' zouden leiden, werden door sommigen als een soort geloof opgevat. De ergste zonde die een programmeur kon begaan, was programmeren in FORTRAN.
Omdat in 1975 ALGOL 60 niet verder werd ondersteund op de CYBER en men het van belang achtte om met KOMPLOT door te gaan, werd besloten het programma helemaal opnieuw te programmeren (het Rekencentrum ACCU van de Rijksuniversiteit Utrecht, met name Herman van Loon, heeft daarbij geholpen) en het beter overdraagbaar te maken naar andere typen computers. Ik heb daarbij getracht Dijkstra's ideeën zoveel mogelijk toe te passen. Omdat ik me zelf reken tot de meer 'rekkelijken' in de 'Dijkstra-leer', heb ik de codering echter wel in FORTRAN (destijds FORTRAN 66) gedaan. Achteraf gezien was dat een juiste keuze omdat FORTRAN, zij het in gewijzigde vorm, nog steeds veel wordt gebruikt, vooral op het terrein van high- performance computing. Inmiddels is KOMPLOT met de huidige versie FORTRAN 90 op de Cray J932 van de RUGroningen geinstalleerd.
Steeds nieuwe grafische apparatuur
In een tijd waarin je in no-time een plaatje kunt maken, is het bijna niet meer voor te stellen hoe tijdrovend het maken van een simpel grafiekje vroeger was. De eerste KOMPLOT-grafieken konden alleen getekend worden met een penplotter. Na het inleveren van een job in de vorm van een stapel ponskaarten, duurde het meestal verscheidene uren en soms als het erg druk was wel een hele dag, voordat de grafieken klaar waren. Het eerste waar destijds menig computergebruiker de dag mee begon, was met een grote boodschappentas naar het Rekencentrum te fietsen om daar plots en andere uitvoer op te halen. Om wat sneller grafieken te kunnen maken, is het daarom later mogelijk gemaakt om grafieken op de printer te maken.Aan het einde van de jaren '70 kwam de Tektronix grafische terminal (met een zgn. storage tube) in gebruik voor previewen: het bekijken van een plot op een beeldscherm om zo onnodig wachten en plottergebruik te voorkomen. In het midden van de jaren '80 kwam de pc massaal op, waarvoor het Rekencentrum het Tektronix emulatie-programma Teko heeft geschreven. Met Teko kon men een pc als een Tektronix terminal laten reageren, waardoor de relatief dure Tektronix terminals niet meer nodig waren!
De huidige versie kan nog altijd grafieken volgens het Tektronix protocol maken die onder UNIX in een xterm-venster kunnen worden bekeken. KOMPLOT heeft echter ook een X Window driver, waarvoor pc-emulaties zijn. Grafieken worden meestal getekend op laserprinters met behulp van de aansturingstaal PostScript, die zorgt voor een professioneel uiterlijk. HP- penplotters kunnen ook nog gebruikt worden. Verder kan men KOMPLOT-grafieken importeren in WordPerfect en LateX.
Grafische basisprogrammatuur
Lang moest men bij de installatie van KOMPLOT een library meelinken met lokale grafische basisprogrammatuur volgens 'CALCOMP-specificatie'. Vanwege de vele varianten gaf dit wel eens problemen. Op het ACCU heeft KOMPLOT gewerkt onder de toenmalige grafische standaard GKS (Graphical Kernel System). Toen aan het einde van de jaren '80 de rol van het mainframe uitgespeeld leek en het Rekencentrum RUG verschillende computers moest gaan onderhouden, is er eigen grafische basisprogrammatuur (GEP) ontwikkeld met drivers voor diverse grafische apparatuur, waaronder een X Window driver in C. Er is ook een driver gemaakt voor het visualisatiessysteem AVS. Meer voor de grap dan dat het praktische betekenis heeft, is onlangs een grafiek in een virtuele omgeving getekend. GEP vormt thans een onderdeel van KOMPLOT.Voor diverse programmeertalen
Zo'n 25 jaar geleden konden vrijwel alle computergebruikers programmeren. Op de Telefunken TR4 was dat voornamelijk met de programmeertaal ALGOL 60, daarom was de eerste versie van KOMPLOT te gebruiken via enkele ALGOL 60 routines (FRAME, GRAPH, CHANGE). Later kwamen er versies van de KOMPLOT-routines in de volgende programmeertalen (de meeste gemaakt door gebruikers): FORTRAN, C, ALGOL 68, PASCAL, SIMULA, COBOL en PL/1 - een aantal hiervan zijn inmiddels 'dode talen' geworden.Thans is alleen de FORTRAN-versie over die, dankzij de vooruitgang op het gebied van compilerbouw, ook in C en PASCAL kan worden aangeroepen. Omdat namen bij moderne FORTRAN compilers langer dan 6 tekens mogen zijn, is er voor de laatste KOMPLOT-versie 8.0 een nieuwe collectie routines gemaakt met duidelijke namen. In plaats van bijvoorbeeld het cryptische CALL CHANGE(1000, 1.0, 0.0) komt nu CALL FRAME_TYPE('scientific').
Gebruiksvriendelijk
Aan het begin van de jaren '80 kwam er behoefte aan gebruikersvriendelijke grafiekenprogrammatuur waarvoor geen programmeerkennis nodig is; op andere gebieden zoals de statistiek had zich trouwens al eerder dezelfde ontwikkeling voorgedaan. Als eerste stap werd het commando-georienteerde programma EENGRAP gemaakt. De opvolger van EENGRAP was GRAFIEK, dat is gebaseerd op DIALOOG: een zelf gemaakte collecties subroutines voor het maken van mens-computer dialogen (3). Behalve via menu's, kan men met GRAFIEK ook heel gemakkelijk grafieken maken via het zogeheten grafiekenboek: een collectie sjablonen voor standaardgrafieken (4) Thans is KOMPLOT ook te gebruiken in de visuele programmeeromgeving van het visualisatiesysteem AVS.Handleidingen
De eerste jaren was er een informele handleiding die was vervaardigd op een schrijfmachine, gecorrigeerd met TYPEX en waarin plaatjes waren toegevoegd met behulp van schaar en lijmpot. In 1974 kwam het eerste officiële manual klaar (van de hand van dr. Henk Nieland die ook de naam heeft bedacht), dat in latere drukken herhaaldelijk is aangepast. De negende druk, fraai uitgevoerd in de RC-stijl door de Redactie van het Rekencentrum, kwam gereed in 1992 (5). Dit was tevens de laatste papieren versie: de handleiding voor de nieuwste versie, die geheel is herschreven in het Engels, is beschikbaar als een online HTML-document op Internet (6).Gebruik
Momenteel werkt KOMPLOT in Groningen op de Cray J932 en de CM5, alsmede op een aantal instituutscomputers. Behalve in Groningen is KOMPLOT in de jaren '70 en '80 ook veel gebruikt op de universiteiten van Utrecht, Amsterdam, Wageningen, Twente, Rotterdam, Nijmegen en Tilburg en ook bij op andere instellingen zoals de KEMA. Door allerlei technologische ontwikkelingen, zoals de komst van de pc's, het verdwijnen van de centrale mainframes en zeer veel nieuwe programmatuur, nam het gebruik evenwel af aan het einde van de jaren '80. Omdat X- Y grafieken altijd gebruikt zullen blijven en de programmatuur een aantal unieke eigenschappen heeft voor technisch- wetenschappelijk gebruik, is KOMPLOT echter nog steeds van belang voor universitaire gebruikers.Conclusie
Dankzij factoren als de uitgebreide functionaliteit voor technisch-wetenschappelijk gebruik, de flexibele gebruikersinterface, de eigen grafische onderlaag GEP, alsmede het gebruik van (de-facto) standaarden zoals FORTRAN, C, X Window, PostScript, HTML en 'last but not least' UNIX, heeft KOMPLOT zich tot op de huidige dag kunnen handhaven.Referenties:
(1) FTP-server met source code KOMPLOT: ftp.rug.nl/graphics
(2) O.-J. Dahl, E.W. Dijkstra, C. A. R. Hoare, "Structured Programming", Academic Press, London and New York, 1972.
(3) J. Kraak and G.J.H. van Nes, DIALOOG - Gereedschap voor het programmeren van gebruikersinterfaces, Informatie, jaargang 29 nr. 5, pag. 397 t/m 492, 1987.
(4) J. Kraak,"Multi-level user interface: software tools and an application", in Human-Computer Interaction - INTERACT '87, H,- J Bullinger and B. Shackel (Editors), IFIP 1987.
(5) J. Kraak, "Handleiding KOMPLOT 7.0", Rekencentrum Rijksuniversiteit Groningen, negende druk, 1992.
Laatst gewijzigd: | 04 oktober 2024 12:18 |