Flexibel

Maandag, 23 oktober 2000
Het leven is warrig en chaotisch. Vooral de toekomst laat zich moeilijk voorspellen.

Computer systemen zijn al net zo grillig. Ontwikkelt de huidige software richting een wegwerp product, of gaat het nog decennia mee?

Volgens Dijkstra kan de meeste software het beste onmiddellijk richting prullenbak (tonie.net/...).

Tja, mooie ideeën van zo'n theoreticus, maar ondertussen moet iedereen er in de praktijk maar het beste van maken, met

  • de huidige middelen,
  • de huidige deadlines,
  • de software van hen die ons voorgingen (ja, ja, inclusief mijn eigen software, geschreven in het verleden, zonder het geaccumuleerde voortschrijdend inzicht van het heden).

Links over Edsger Wybe Dijkstra

(11 mei 1930 - 6 aug 2002)
cs.utexas.edu/users/EWD
de verzamelde EWD's, vol met krasse uitspraken. Het is een uitgebreide verzameling manuscripten, geschreven gedurende vier decennia.
acm.org/classics/...
een klassieker uit 1968, het einde van de go-to en het begin van gestructureerd programmeren.
ube.ege..edu.tr/...
Een wiskundige beschrijving van Dijkstra's kortste pad algoritme.
cs.virginina.edu/..ewd498.html
Hoe vertel je een waarheid die pijn kan doen?
Ik ben er heilig van overtuigd dat een aantal dingen nog jaren onder ons zal blijven. De meeste goede ideeën zijn oud, maar nog niet versleten.

Schrijft u iets met één of andere vorm van SGML, OO of SQL? Ga er dan gerust van uit uw software nog jaren of zelfs decennia mee zal gaan, in een of andere vorm.

Pas op voor Quick fixes. Niets is zo permanent als een tijdelijke oplossing.

De toekomst blijft moeilijk te voorspellen, maar het is wel zeker dat continue verandering de enige constante zal zijn.

SGML
Structured General Markup Language (zoals HTML en XML) is een blijvertje. Mijn eerste kennismaking met HTML was een Déjà vu, een herniewde kennismaking. Alsof DCF onder het stof vandaan gehaald was.
OO
Object Oriëntatie blijft. De programmeertalen zullen nog wel veranderen. Ik hoop en verwacht dat we in de toekomst verlost zullen zijn van de dwingelandij der compilers.

Het gaat de goede kant op. Java lijkt al veel meer op het charmante Smalltalk dan het antieke C++. Nog even en iedereen zit op een echt object georiënteerde taal.

SQL
De behoefte aan een gestructureerde query taal op een relationele database zal blijven. De wet van Codd is gebaseerd op logica en verzamelingenleer. Beide verouderen niet.
Wees dus voorbereid op een onbekende toekomst en hou software uitermate flexibel:
  1. Hou de kwaliteit hoog, de kern van de 10 gouden Java regels. Meer dan 80% van de software inspanning zit in maintenance (cs.unc.edu/...). Hou software dus vooral onderhoudbaar als u een tekort aan mankracht heeft.
  2. Pas encapsulation zo extreem mogelijk toe. Laat elk object uitsluitend met zijn onmiddellijke buren praten. Een lezer praat alleen met abonnement, niet met krant.
      In het voorbeeld hiernaast
    • praat een lezer alleen met abonnement.
    • praat een abonnement met zowel krant als lezer.
    • praat een krant alleen met abonnement.
    Zelfs indien een object classe drastisch verandert weet u dat u alleen dat object en zijn onmiddellijke buren hoeft aan te passen. Een software "aardbeving" blijft mooi lokaal.
  3. Hou presentatie gescheiden van business logica en data acces. Een strak drie lagen model is werkelijk zo gek nog niet.
Tot de volgende week!
Henk Jan Nootenboom