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

    Staat van Digitale Connectiviteit binnen de Bouw- en Installatiebranche 2025

    Digitale connectiviteit is de kern van veel processen in de bouw en volgens insiders van strategisch belang voor de toekomst van de sector. Waar sta jij?

    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.

    Meer lezen

    Handen
    ActueelSoftware & Development

    Workday en Randstad slaan handen in elkaar

    ActueelInnovatie & Transformatie

    Kort: 15 miljoen voor QuiX Quantum, NTT DATA met Eurofiber in 5G-zee (en meer)

    British Post Office
    AchtergrondOverheid

    Britse postkantoorschandaal: Fujitsu-software leidde tot rechtsdwalingen met tragische gevolgen

    Start
    ActueelCloud & Infrastructuur

    Kort: Vergunning voor datacenter EvoSwitch, piepjonge Perry haalt 1,6 miljoen op (en meer)

    ActueelFinanciële dienstverlening

    Rechter kraakt falende erp-consultant

    ActueelCarrière

    Kort: Paul Broekhuizen leidt Fsas Benelux, Brink Software verkocht (en meer)

    Geef een reactie Reactie annuleren

    Je moet ingelogd zijn op om een reactie te plaatsen.

    Populaire berichten

    Meer artikelen

    Uitgelicht

    Partnerartikel
    AdvertorialData & AI

    Private AI helpt gemeenten met vertrou...

    In een tijd waarin gemeenten geconfronteerd worden met groeiende verwachtingen van burgers, toenemende wet- en regelgeving en druk op budgetten,...

    Meer persberichten

    Footer

    Direct naar

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

    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