Programmeerlogica
17 juni 2010
Voor iemand die zich op zijn best met soft realtime programmatuur bezighoudt, lijkt programmeerbare logica bijna een parallel universum. We hebben dezelfde voorouders, maar vervolgens heeft ieder zich op een eigen eiland tot een verschillende soort ontwikkeld. Nu ik zo uit mijn roeibootje op dat onbekende eiland stap om de omgeving eens te verkennen, vallen de verschillen dan ook direct op.
De evolutie lijkt er geen architecten te hebben voortgebracht en de regie is strak in handen van engineers. De bewoners lijken er zelf niet onder te lijden. De cultuur is wel primitief gebleven en bouwt op onbuigzame tradities die zijn geworteld in de verafgoding van betrouwbaarheid. Schaarste van beschikbare middelen zoals ruimte en energie dwingt om van elke nood een deugd te maken. Ze bouwen er efficiënte software die meer weg heeft van hardware en die bij gebrek aan ontwikkelmethodiek de gebruiker centraal stelt en niet de ontwikkelaar. Een matig abstractievermogen leidt daarbij nogal eens tot simpele en eenvoudig te doorgronden algoritmiek. In plaats van een geschreven taal waarvan de vele grammaticale en semantische nuances uit-en-te-na zijn vastgelegd, gebruiken ze nog een beeldtaal die een kind kan begrijpen. Als contact met de beschaafde wereld uitblijft, valt te vrezen dat deze situatie niet verbetert. Vreemde jongens, die programmeerbare-logici.
Maar even serieus. Het is voor mij een onbekende wereld en dat nodigt uit om te leren en je eigen vertrouwde patronen eens in een ander licht te zien. Ik ben oprecht geboeid als in een vakgebied anno 2009 nog een proefschrift verschijnt dat geheel gewijd is aan vermenigvuldigen en kwadrateren van gehele getallen en de invloed ervan op het energieverbruik. Letterlijk informatica op de vierkante millimeter. Een wereld waarin objectoriëntatie en gestructureerd programmeren geen of een heel andere rol spelen. Maar ook een wereld die in staat is zichzelf continu kritisch onder de loep te nemen. Geen vernieuwing als doel maar gedreven door empirisch verkregen resultaten.
Een kleine zoektocht naar de rol van softwarearchitectuur in programmeerbare logica leverde een interessante casestudie op naar het effect dat totale vernieuwing van de besturingslogica heeft op een productielijn. Allereerst was het voor mij al opmerkelijk dat er een objectieve rendementsverbetering van de lijn aantoonbaar was die precies kon worden gerelateerd aan die nieuwe logica. Rendement in harde euro’s dus, geen grafiek door een wolk van geschatte gegevens. Zo’n helder verhaal kom ik niet vaak tegen.
De conclusies van de studie waren niet minder interessant. De eerste versie van de software was weliswaar conceptueel in orde, maar drukte in de praktijk te zwaar op de onderhoudslast. De gebruikte concepten waren niet spectaculair: data en code groeperen op overeenkomsten en functionaliteit - gestructureerd programmeren dus. De nieuwe versie was juist gebouwd op extreme eenvoud. Kleine algoritmes liever herhaaldelijk uitschrijven en gegevens samenbrengen in een plat model. Aandacht voor leesbaarheid door niet-experts. De code werd daarmee zo veel hanteerbaarder dat deze minder hardware-eisen stelde en zelfs ingekochte componenten kon vervangen. Ze waren er dus toch, die architecten.
Gaat dit dan over architectuur? Jazeker. Maar wel het soort dat vaardigheden vereist die niet altijd aan een architect worden toebedeeld in de gevestigde praktijk, waar de nadruk vooral ligt op productvisie en abstractie: denken in termen van subsystemen in plaats van componenten of - het lef! - ontwerp. In de genoemde casestudie hadden deze vaardigheden alleen echter niet volstaan. Beproefde patronen inruilen voor een bijna simplistische benadering en afdwingen dat daarmee een nieuw groeipad ontstaat, vraagt heel wat meer van een architect. Het laat zien dat je de kracht van software tot op de bodem hebt leren kennen.
Terug naar dat eiland. Heb ik de inheemse bevolking nog uitgenodigd voor een tegenbezoek? Nee natuurlijk. Wie weet wat dat met mijn beschaving zou doen.
Wim Couwenberg
Terug naar overzicht