de WimBlan-compiler [1970-1972]

Beginnend met een stage bij de elektromotorenfabriek Smit-Slikkerveer, heb ik voor Smit een verzameling floating-point rekenroutines geschreven, onderleiding van Dr. J. Giltay. Alle rekenkundige functies: optellen, aftrekken, vermenigvuldigen, delen, worteltrekken, goniometrische functies, exponentiele functies moesten vanaf de absolute basis worden opgebouwd. De routines werden geschreven in de assembler van de IBM 360/20.

Het aardige van deze rekenset was, dat de waarde ‘oneindig’ en ‘onbepaald’ ook in het domein en bereik waren opgenomen. Dit betekende dat berekeningen nooit konden crashen vanwege een ‘underflow’ of ‘overflow’. Dat was nog al bijzonder in die tijd. Zie Rules.

Nadat deze routines gereed waren, heb ik er een laag overheen geschreven. Een eigen programmeertaal: WimBlan; compleet met een compiler die vertaalde naar assembler, gebruikmakend van de reeds geschreven rekenroutines.
Hierna konden er bij Smit-Slikkerveer programma’s voor wetenschappelijk rekenwerk geschreven worden en op de IBM uitgevoerd worden.

De compiler bestond uit 2000 regels assembler code, geheel op ponskaarten getypt. Het compileerwerk moest ik doen in de avonduren en soms zelfs ’s-nachts, omdat de computer overdag voor administratieve toepassingen nodig was.
De IBM 360/20 was een 8-bits machine met 8 kByte intern geheugen. Als randapparatuur waren er een ponskaartlezer en –schrijver en een bandprinter.

Hieronder is een voorbeeldprogramma in WimBlan

    begin

    doe IA = 1 – 100

         IAK = IA * IA

         doe IB = 1 – IA

              IBK = IB*IB + IAK

              doe IC = IA – 100

                  IBK = IC*IC @

                  als ) naar NOGN

                  als ( naar NEE

NOGN          tot

NEE      tot

     tot

     klaar

De ‘doe-tot’-constructie is goed herkenbaar. Niet zo duidelijk is de syntax en semantiek van het ‘als’-statement. Deze wordt namelijk ingeleid door het ‘@’-teken na een expressie. Daarna betekent als ( naar NOGN’: als de waarde van de expressie kleiner dan nul is, spring dan naar het label NOGN. In de gebruikte tekenset ontbrak het ‘<’, vandaar de ‘(’. Ook een volgend ‘als’-statement refereert aan het laatst gebruikte ‘@’-teken.

Al met al een nogal kromme constructie, maar we praten van 30 jaar terug. Basic kende ik nog niet. Fortran en Algol kende ik al wel. Maar met mijn beperkte vaardigheden en de simpele omgeving kon ik die kwaliteit niet halen.

Veel hulpmiddelen voor de ontwikkeling waren er ook nog niet. Een ponskaartenmachine met 13 toetsen, voor elk ponsgaatje een toets. Je moest zelf maar onthouden welke de toetscombinatie bij een bepaald letterteken hoorde. Het kleurrijkste hulpmiddel dat ik hierbij had was een portable radio. Die stond op de computer en aan de storingen in de ontvangst kon ik horen hoever hij was met compileren……

 

Geonoise [1976-1997]

Voor het raadgevend ingenieursbureau Van Dorsser programmeerde ik modellen voor wetenschappelijk rekenwerk, met name voor het bereken van verkeers- en industrielawaai.

Aangestuurd door de kennis van Gerard Meerdink werden diverse versies gebouwd.

-         HP-9810A versie. Een zeer beperkte versie in RPN

-         HP-9825A versie. Een beperkte versie in HPL

-         Fortran-versie op een HP-1000

Daarna heb ik voor DGMR Raadgevende Ingenieurs, nog steeds voor Gerard Meerdink, de volgende weer geheel nieuwe versies gebouwd:

-         HP-9835 versie in HP Technical Basic

-         HP-85 versie (een gestripte versie van de 9835-versie)

-         Op MS-DOS: een Modula II versie

-         Op MS-DOS: een Turbo Pascal versie

-         Op Windows: een Delphi-versie (als projectleider)

De programmatuur is behoorlijk complex. Een 3 dimensionaal model van geluidsstralen moet worden doorgerekend via de methode van ray-tracing. De rekentijd waren zeer aanzienlijk, soms stonden een paar computers dagenlang te rekenen.

De laatste Delphi-versie heeft in Nederland een ruime verspreiding onder de naam Geonoise. Wereldwijd wordt het verkocht door Brüel & Kjaer onder de naam “Predictor Type 7810”.

Bij dgmr heb ik in de eerste jaren van haar bestaan, meegeholpen een software-ontwikkelingsgroep op poten te zetten voor de ontwikkeling van deze software. Onder leiding van Erwin Hartog van Banda is deze groep nu flink gegroeid en levert een ruim scala aan wetenschappelijk software op de vakgebieden van dgmr. Maar Geonoise is nog steeds een belangrijke peiler.

 

MultiEdit [1986 – 1987]

Bij het middelgrote softwarehuis Multihouse ben ik een syntax-gedreven tekst-editor voor programmateksten aan het maken geweest. Met de ideeën en het programmeerwerk van Marco Luijten is een eerste prototype ontstaan: MultiEdit. De software engineering groep die ik toen onder mijn hoede had functioneerde als klankbordgroep.

De MultiEdit was een taal-editor met als kenmerken:

-         multi-taal: de syntax van de te editten talen waren in aparte beschrijvingsbestandjes opgenomen

-          multi-platform (VAX/VMS, MS-DOS en Unix)

-          multi-bestand: in een character-based, maar Windows-achtige interface; konden meerdere bestanden konden gelijktijdig geopend en bewerkt worden.

Het belangrijkste aspect van de editor was, dat de bewerking op de taal-structuur waren gericht en niet de individuele letters, woorden en regels! Wat betekende dit?

In een normale tekst-editor ziet “if a>b then a := b” als een verzameling letters. De bewerkingen zijn: letter toevoegen, aantal letters verwijderen, etc.. MultiEdit kende deze bewerkingen niet.

In MultiEdit werd de tekst gezien als:

     «if-deel» «boolean-expressie» «then-deel» «assignment»

De bewerkingen in MultiEdit waren: statement toevoegen, statement verwijderen, «statement» verbijzonderen tot «if-statement», «boolean-expressie» verbijzonderen tot “a>b”, etc.

De scope (diepte) van de afbeelding op het scherm was instelbaar. Diepte=2 zag er uit als:

 

if a<b then end

 if b<c then begin

      :

 end

end;

while a>d do begin

 for I = 1 to a do begin

      :

 end

end

De “:” stond dus voor: alles wat dieper ligt dan dit niveau. Als je met de cursor “in” en statement stapte, werd automatisch een niveau dieper ook afgebeeld. Zo had je altijd goed overzicht, zonder teveel details en zonder de omliggende context, die op dat moment niet relevant was.

Ook de navigatie met pijltjes-toetsen ging van statement naar statement (in plaats van regel naar regel of letter naar letter).

Het is met MultiEdit niet goed afgelopen. Het ging financieel slecht met Multihouse en het project werd beëindigd. We hebben nog een poging gedaan het concept te verkopen aan Cullinet, maar dat ging niet door omdat ook hun kas was erg leeg was.

Collega Johan Vromans en ik denken er nog af en toe met weemoed aan terug. Misschien pakt één van ons dit project nog eens op, want een dergelijke taal-editor is er nog steeds niet.

 

Nevis [1994-2001]

Met de vraag van Jos van Oijen om hem te helpen met het opzetten van Nevis: een informatiesysteem voor het beheer van commercieel vastgoed begon een hectisch project. Het met een minimum aan middelen bouwen van een groot informatiesysteem. Na een jaar van ontwerpen en keuze maken voor de technische infrastructuur en volgde de bouw van het pakket.

Alle mogelijke onderdelen van het vastgoedbeheer waren er in voorzien: vastlegging van de gebouwen en verhuurbare eenheden, vastlegging van de huurders en hun huurcontracten, verzenden van verhuurfacturen, indexeren van huurprijzen, de volledige inkoop van producten en diensten voor gebouwonderhoud, inclusief vastleggen van inkoopfacturen, voeren van een volledige multi-currency boekhouding voor meerdere bedrijven (bij één klant zelfs 150 bedrijven).

Nevis was gebouwd in Delphi in een client-server structuur. Het kon werken met meerdere databases, zoals Oracle, Sybase en Interbase. De database had zo’n 120 tabellen, de programmatuur bestond uit zo’n 350 modulen.

In samenwerking met KPMG, Getronics en Trendsoft, hebben een tiental mensen aan het pakket gewerkt. Het pakket heeft bij diverse bedrijven in test gestaan. Helaas is het om commerciële redenen nooit tot voldoende wasdom gekomen om een succes te worden. Wel heb ik er een flinke kennis mee opgebouwd over het beheer van vastgoed en de bijbehorende administratie.

 

Workflow voor rechtspleging [1998-1999]

Als projectmanager tijdens de ontwerpfase heb ik gewerkt aan een workflow-managementsysteem voor begeleiding en vastlegging voor alle stappen in een rechtszaak in hoger beroep: vanaf het instellen van het hoger beroep tot en met de uitspraak en de uitvoering van het arrest.

Het uiteindelijke ontwerp omvatte 650 processtappen, wat enorm veel is voor een workflow-managmentsysteem. Het systeem is uiteindelijk wél gebouwd, maar nooit in gebruik genomen. Kern van de problemen is mogelijk een te grote procesomvang geweest om goed beheerst in te voeren.

De infrastructuur was een Oracle-database voor de gegevensopslag en Oracle-designer voor de functies en Staffware voor de proces-design en proces-flow. Voor een goede koppeling tussen Oracle en Staffware werd een aparte tussenlaag ontwerpen en gebouwd.

Het project werd in ontwerpfase uitgevoerd in samenwerking met mensen van : DCE Consultants, Bakkenist (nu Deloitte&Touche), Oracle, CAP-Volmac, Getronics en CMG.

 

www.waterland.net [2002]

Als projectmanager voor het ontwerp heb ik in 2002 bijgedragen aan www.waterland.net, dé web-portal van Rijkswaterstaat voor alles wat met water te maken heeft. Voor een watersporter al ik, was dit een heel erg leuke klus.

We hebben een ontwerp gemaakt dat het mogelijk maakt dat alle meer dan 200 partners met eigen sites zelf links naar specifieke informatie kunnen plaatsen in een zoekstructuur die door Waterland is bepaald en wordt onderhouden.

Individuele gebruikers kunnen hun eigen voorkeuren vastleggen, interessante links creëren. Ook kunnen ze een abonnement nemen op een nieuwsbrief, samengesteld uit de nieuwe links, toegesneden op de eigen interesses. De doelgroep is zéér diverse: van scholieren tot professionals.

De bouw is uitgevoerd door Atos-Origin met het content management systeem Smartsite. Het resultaat mag er beslist zijn.
Inmiddels is de site al weer flink veranderd. Daar heb ik niet meer aan bijgedragen.