Computable.nl
  • Thema’s
    • Carrière
    • Innovatie & Transformatie
    • Cloud & Infrastructuur
    • Data & AI
    • Governance & Privacy
    • Security & Awareness
    • Software & Development
    • Werkplek & Beheer
  • Sectoren
    • Channel
    • Financiële dienstverlening
    • Logistiek
    • Onderwijs
    • Overheid
    • Zorg
  • Computable Awards
    • Overzicht
    • Nieuws
    • Winnaars
    • Partner worden
  • Vacatures
    • Vacatures bekijken
    • Vacatures plaatsen
  • Bedrijven
    • Profielen
    • Producten & Diensten
  • Kennisbank
  • Nieuwsbrief

‘Foutvrij programmeren’ niet foutloos

25 maart 2004 - 23:005 minuten leestijdOpinieSoftware & Development
John Pool
John Pool

Dankzij ‘application control programming’ en ‘slim implementation of business logic requirements’ is het mogelijk om foutvrije code te schrijven, zo beweerde Martijn Linssen onlangs. Onzin, vindt John Pool. Zijns inziens worden deze termen warrig beschreven en is de voorgestelde methode een slecht onderbouwd pseudo-alternatief.

In het artikel ‘Foutvrij Programmeren’ van Martijn Linssen (Computable, 12 maart) wordt met veel omhaal weer eens een ‘methode’ gepresenteerd die definitief een eind moet maken aan alle programmeerproblemen.
Het begint al met de ongefundeerde bewering dat de kwaliteit van programma’s merkbaar achteruit is gegaan. Vervolgens worden acp (application control programming) en siblr (slim implementation of business logic requirements) opgevoerd als tovermiddelen waarmee deze onwenselijke situatie voorgoed kan worden uitgebannen.
De kerngedachte van acp wordt in onduidelijke bewoordingen uitgelegd, maar bestaat blijkbaar uit het combineren van het gebruik van referentievariabelen en objecten, die in dit verband de rol toebedeeld krijgen van ‘krimpende’ of ‘uitzettende’ verzamelingen van variabelen. Hierbij geldt dan dat: “alleen objecten worden doorgegeven van de ene (?) functie, en het liefst slechts één object”. Er worden semi-exacte termen gebruikt die verder niet toegelicht worden, zoals “werkelijke globale variabelen voor de hele transactie”, “compleetheid” van een “transactie”, en “operationele waardes van variabelen”.

Niet overtuigend

Onder het kopje ‘Siblr’ (wie verzint een dergelijk acroniem?) wordt ons medegedeeld dat deze aanpak bedoeld is om complexe eisen aan de bedrijfslogica (business logic requirements) te vereenvoudigen. Dat lijkt mij niet de bedoeling: deze eisen zijn er nu eenmaal en moeten als uitgangspunt beschouwd worden bij het verdere ontwerpproces. De schrijver bedoelt naar ik aanneem dat de notatie van deze eisen eenvoudiger en begrijpelijker wordt door het gebruik van siblr. Hij stelt daarbij een transformatie voor – het “omgekeerde if-statement” – die soelaas zou moeten bieden. Deze aanpak is echter in het geheel niet overtuigend. Voor het simplistische voorbeeldje is de genoemde transformatie namelijk overbodig, en voor realistische voorbeelden uit de grotemensenwereld is zij niet eens mogelijk zonder de geclaimde begrijpelijkheid geweld aan te doen. De logica van het voorbeeldje is onnodig complex weergegeven, wellicht om het te contrasteren met het ‘leesbare’ resultaat van de transformatie. Zelfs een beginnend programmeur zou het statement opschrijven als:
if A and B and C then
— do D
— E = call F
— if E = G then do H
Deze notatie is korter en inzichtelijker dan de gekunstelde do … while false constructie met break-statements, die volgens het artikel bedoeld is om “programma’s in lijn te laten lopen”. Wat dit betekent, wordt niet verder toegelicht. De constructie is overigens niets anders dan een verkapt gebruik van GOTO’s zoals dat in de jaren zestig noodzakelijk was met Fortran (dat in zijn eerste versies geen blokstructuur en geen else-takken kende). Daardoor heeft deze constructie ook alle beperkingen en nadelen zoals die al 36 jaar geleden door onze landgenoot Edsger W. Dijkstra op overtuigende wijze zijn geformuleerd. Ik zou graag zien hoe het gebruikte voorbeeld op een leesbare manier als “omgekeerd if-statement” wordt weergegeven wanneer een of meer van de condities A, B en C voorzien zijn van else-takken, om over iteraties nog maar te zwijgen.

Blauwdruk

Onder het kopje ‘Code wordt een open boek’ wordt ons nogmaals uit de doeken gedaan welk probleem siblr eigenlijk oplost. Het maakt namelijk een einde aan “het op en neer springen binnen een functie, het aan- en uitzetten van switches die op andere plaatsen weer gecontroleerd en aan- of uitgezet worden”. Ik weet niet van welke planeet de schrijver afkomstig is, maar ik ken geen enkele serieuze ontwerpmethode waarin een dergelijke aanpak gepropageerd wordt.
Verder houdt de schrijver, als ik zijn betoog goed begrijp, een pleidooi voor het gebruik van een enkele systeembrede, globale goed/fout-variabele met de naam output die het liefst (?) de waarde “succes!” moet hebben. De inzichten en ontwikkelingen in de aanpak van ‘exception handling’ zoals die de afgelopen tien jaar hebben plaatsgevonden, schijnen geheel ongemerkt aan hem voorbij te zijn gegaan. Het feit dat hij deze niet eens noemt, is in dit opzicht veelzeggend.
Tegen het einde van dit paragraafje treffen wij de volgende passage aan: “Wat nu nog mist is een blauwdruk van de applicatie als er géén fouten optreden: dit kan worden afgedwongen door foutafhandeling te forceren (‘dumping’) op het eind van elke transactie. Deze ‘dumping’ kan gefaciliteerd worden door een – uiteraard systeembrede en globale – ‘debug’-switch te controleren in de foutafhandeling, waardoor een dump wordt geforceerd: hierdoor eindigt elke transactie met een complete dump van het transactieobject”. Ook na intensieve en herhaalde lezing wil het mij maar niet helder worden wat er met deze woordenbrij bedoeld wordt. Wat is in vredesnaam een “blauwdruk van de applicatie” en waarom moet er foutafhandeling geforceerd worden als er geen fout is opgetreden?
Ook onder het laatste kopje contrasteert de schrijver zijn voorgestelde aanpak met de volgens hem gebruikelijke methoden, getuige de zin: “Functies hoeven niet langer complexe en moeilijk te ontwarren ‘if’-statements, ‘goto’-labels of ‘gosubs’ te bevatten, evenmin als een veelvoud aan switches of plaatselijke foutafhandeling”. Ook hier rijst de vraag in welke eeuw de schrijver eigenlijk leeft.

Pseudo-alternatief

Concluderend ben ik van mening dat de heer Linssen het vakgebied met dit artikel een slechte dienst bewijst. De indruk wordt gewekt dat er maar wat aangeprutst wordt in automatiseringsland, en als uitweg presenteert hij vervolgens een warrig beschreven en slecht onderbouwd pseudo-alternatief. Eerlijk gezegd bekruipt mij het onbehaaglijke gevoel dat de heer Linssen er meer op uit is om zichzelf en zijn bedrijf met een twee pagina’s breed artikel in de schijnwerpers te zetten, en dat de inhoud daarbij van ondergeschikt belang is.< BR>
 
John Pool, Amersfoort

Meer over

Fortran

Deel

    Inschrijven nieuwsbrief Computable

    Door te klikken op inschrijven geef je toestemming aan Jaarbeurs B.V. om je naam en e-mailadres te verwerken voor het verzenden van een of meer mailings namens Computable. Je kunt je toestemming te allen tijde intrekken via de af­meld­func­tie in de nieuwsbrief.
    Wil je weten hoe Jaarbeurs B.V. omgaat met jouw per­soons­ge­ge­vens? Klik dan hier voor ons privacy statement.

    Whitepapers

    Computable.nl

    Design Sprints: 4 dagen van idee naar prototype

    Hoe zet je in vier dagen tijd een gevalideerd prototype neer met Design Sprints?

    Computable.nl

    Resultaatgericht Samenwerken (RGS).

    RGS is een gestructureerde methode die vastgoedprofessionals direct ondersteunt bij kwaliteitsverbetering, kostenefficiëntie en verduurzaming.

    Computable.nl

    De principes van cloud-native techniek

    Cloud-native technologieën voegen flexibiliteit, schaalbaarheid en beveiliging toe en verlagen de operationele kosten voor de IT-omgeving. Hoe dragen Kubernetes, KEDA en AKS hieraan bij?

    Meer lezen

    ActueelData & AI

    Lleverage ontvangt drie miljoen voor ‘vibe automation’

    ActueelSoftware & Development

    Nu al veertien transacties voor Total Specific Solutions

    AchtergrondData & AI

    Een stortvloed aan ai-tools; ServiceNow drinkt zijn eigen champagne

    ActueelOverheid

    Dictu sluit applicatiecontract met CGI, IBM, Sogeti, Sopra Steria, TCS en Circle8

    OpinieSoftware & Development

    SAM: jouw bondgenoot tegen shelfware

    ActueelOverheid

    Ministerie BZK negeert advies AcICT over stilleggen Digipoort

    Geef een reactie Reactie annuleren

    Je moet ingelogd zijn op om een reactie te plaatsen.

    Populaire berichten

    Meer artikelen

    Footer

    Direct naar

    • Carrièretests
    • Kennisbank
    • Planning
    • Computable Awards
    • Magazine
    • Abonneren Magazine
    • Cybersec e-Magazine

    Producten

    • Adverteren en meer…
    • Jouw Producten en Bedrijfsprofiel
    • Whitepapers & Leads
    • Vacatures & Employer Branding
    • Persberichten

    Contact

    • Colofon
    • Computable en de AVG
    • Service & contact
    • Inschrijven nieuwsbrief
    • Inlog

    Social

    • Facebook
    • X
    • LinkedIn
    • YouTube
    • Instagram
    © 2025 Jaarbeurs
    • Disclaimer
    • Gebruikersvoorwaarden
    • Privacy statement
    Computable.nl is een product van Jaarbeurs