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

Betrouwbaarder programmeren

15 april 2004 - 22:004 minuten leestijdOpinieSoftware & Development
Jan van Otterloo
Jan van Otterloo

“In softwareontwikkeling moeten we een aantal goede ideeën weer boven water halen, implementeren en toepassen”, concludeert Jan van Otterloo in zijn reactie op ‘Foutvrij programmeren’.

Een artikel dat begint met “Programmeren is een vak” trekt meteen mijn volle aandacht in deze tijd waarin een ‘cruisecontrol’ van slag raakt in een halfdonkere parkeerkelder, een bus gaat rijden zonder op de bestuurder te wachten en de vrees bestaat dat het aanzetten van een mobieltje een vliegtuig doet neerstorten (‘Foutvrij programmeren’, Computable, 12 maart 2004).
Het artikel was echter een teleurstelling; het suggereert dat als een geneste ‘if-then-else’ er maar typografisch goed uitziet, een programma solide is. Als er toch nog een fout insluipt, haal je die eruit met een ‘stackdump’ (zoals in Java?). Beter zou zijn: een ‘core-dump’ ( net als vroeger, als je zin had aan een puzzel van uren).
De geneste ‘if-then-else’ kwam me bekend voor. Ik heb er een teruggevonden in een Fortran-manual van 1982. Het gegeven voorbeeld komt er dan uit te zien als volgt:
 
IF( A .AND. B) THEN
…
…
ELSE IF( C ) THEN
CALL D
E= FUNCTIE ( … , …)
IF ( E .EQ. G) CALL H
ELSE
….
….
END IF
 
Kortom: de overzichtelijkheid van een ‘Case’, maar wel met uitgebreidere vergelijkingsmogelijkheden.

Ideaal

Foutvrij programmeren is al jarenlang een item en bij vlagen ‘hot’. Op een Novi-studiedag werd deze kwestie in 1978 gepresenteerd als ‘Hoe kun je correctheid van een programma bewijzen’. Dat ideaal is nog steeds een ideaal. De wijze waarop het zou kunnen is: een programmacode moet omgezet worden in logica-uitdrukkingen. Dan heeft de wiskunde al programma’s klaar liggen die uit zo’n opeenvolging van logische expressies een conclusie berekent: ‘waar/onwaar’, of ‘klopt/klopt niet altijd’.
Over de weg ernaar toe is wel consenus. Enige van de regels die je dan in acht moet nemen hoop ik nu aan de vergetelheid te ontrukken: werk met modulen; elke module moet in zichzelf gesloten zijn; onderlinge verbindingen zo los mogelijk; binnen een module een zo sterk mogelijke samenhang; en een module moet minimaal beinvloed worden door wat in een andere module gebeurt.
In objectgeoriënteerd programmeren zie ik deze elementen terug. Toch is ergens een verkeerde weg ingeslagen. Dat hangt samen met wat Maas-Maarten Zeeman in zijn reactie ‘Fouten in foutvrij’ (Computable, 2 april 2004) te berde brengt: functionele programmeertalen. Deze hebben “unieke en waardevolle kwaliteiten als het om foutloos programmeren gaat”. Volgens mij is dit het aspect dat een variabele slechts eenmaal een waarde krijgt in een module en deze houdt tot aan de ‘exit’. Bij zo’n exit (of return) wordt bijvoorbeeld alleen de laatste bepaalde waarde aan de ‘caller’ teruggeven en alle andere kandidaat-uitkomsten vergeten, onbereikbaar gemaakt en liefst meteen opgeruimd. In een objectgeoriënteerde taal blijf je op het juiste pad als je als programmeur geen methode maakt/gebruikt die een eenmaal gegeven waarde verandert. Je doet maar een ‘new’ met een kleine wijziging en op weg naar exit wordt bepaald welke (de oude of de nieuwe) teruggeven gaat worden.

Betrouwbaarder

Zeeman noemt ook Algol. Ik kijk terug in mijn cursusboek van 1966 en wordt eraan herinnerd dat een ‘if-then-else’ op de volgende manier wordt gebruikt:
z := if( a< b) then c else ( d+52);
De variabele z is dus altijd gedefinieerd in het vervolg van de betreffende module. In alle andere programmeertalen die ik ken, kun je heel gemakkelijk een variabele in onduidelijke toestand krijgen, met hooguit een waarschuwing van de compiler. Deze Algol-constructie verhindert dat en maakt je programma’s geschikt voor correctheidsproeven. Ook al is zo’n test in de praktijk nog niet te doen, je progamma is nu al betrouwbaarder.
In softwareontwikkeling moeten we een aantal goede ideeën weer boven water halen, implementeren en toepassen. Of het de oplossing is voor de zaken waarmee ik dit schrijven begon, weet ik niet. Maar de totalen en subtotalen op uw energierekening zullen veel vaker gewoon kloppen.< BR>
 
Jan van Otterloo, Nieuwegein

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