Tanker uge 37 - 2023: er programmering en ordre eller en bøn?

At få elektronhjernen til at gøre noget, kræver sine steder et mere og mere floromvundent sprog.

Som de fleste læsere her ved, laver vi hjemmesider på Drupal-platformen. Et sine steder genialt system, der håndterer tusinder af brugere, artikler, billeder, videoer, betalinger osv. osv. så godt, at rigtig mange mediersites bruger det.

Man kan lave et fortrinligt mediesite uden at kunne programmere. Det er først, når det bliver svært, at vi bliver tilkaldt. Gudskelov.

Nuvel. Drupal er på 20 år gået fra version 1 til version 10 og på det seneste er der sket noget interessant i programeringsdelen.

Drupal 7, 2013: <

$user = user_load(42);

Herligt simpel sætning. Programmøren giver en ordre. Indlæs bruger nummer 42.

Drupal 10, 2023: <

$user = \Drupal::entityTypeManager()->getStorage('user')->load(42); eller den "simple" og frarådede
$user = \Drupal\user\Entity\User::load(42);

Nu er det ikke så meget en ordre som en bøn. Til to navngivne helgener, der begge associeres med brugerindlæsning.

Den stakkels programmør skal først påkalde entityTypeManager-funktionen, fortælle at der skal hentes noget (getStorage), at det også skal indlæses.

Eller, i det simplere tilfælde, påkalde Drupal - User - Entity - User - Load i præcis denne rækkefølge. Kludrer programmøren i rækkefølgen eller mangler der en skråstreg eller et kolon et sted - er bønnen ikke 100% korrekt - standser AL kommunikation.

Åndssvagt design. Grundløs præcision.

Hvorfor ikke bare simple ordrer? <

Udviklingen fra simple ordrer til komplicerede bønner skyldes flere ting.

  • Optimering. Det koster nogle mikrosekunder at indlæse brugerindlæsnings-funktionaliteten. Hvad hvis vi kun nøjes med at indlæse den, når vi har brug for den? Så kører det hele hurtigere 99% af tiden! Det er korrekt. Men på de ti år mellem Drupal 7 og 10 er servernes styrke mere en tusindedoblet. Og caching gør disse puristiske øvelser overflødige.
  • Præcision og præsteskab. Programmører er et sært folkefærd og en del har vist OCD. Så de drømmer om perfekte, præcise arkitekturer og designs, hvor alt går op i en højere enhed. Jeg tror også at en stor del af programmørerne tiltrækkes af at være en del af et præsteskab, der taler et uigennemtrængeligt, men uomgængeligt sprog. Fx. er præsteskabet for nylig blevet trætte af at boolske variable enten kan være true eller false og har lavet en version med mindst tre værdier.
    Jeg er selv programmør og (specialeløs) datalog af den halvgamle skole. Alligevel synes jeg, at det er en synd, at kalde store mængder præcision/kompleksitet ned over folks uskyldige hoveder. Lyset/programmeringen bør ikke være for de lærde blot. Programmering skal kunne komme flere til gode og ikke kræve åndssvagt komplicerede værktøjer. Enkelhed er en lige så stor dyd som præcision.
  • Bedre værktøjer. Koderedigeringsprogrammerne kan nu huske 1.000, 10.000, 100.000 påkaldelser automatisk. Ingen grund til at begrænse sig! Jeg vil dog hævde at ordren user_load(42) er væsentlig nyttigere og lettere at huske og bruge end de flerleddede helgenpåkaldelser.

To filosofier <

Jeg elsker ordre-tilgangen til programmering. "Elektronhjerne! Hvis ditten, gør datten.". De lange bønner, udformet med hjælp fra redigeringsprogrammerne, gør ikke noget godt og passer ikke til mit selvbillede.

Alligevel er jeg dog lidt optimistisk.

Det kan snildt være, at der er gået mere præsteskab i meget programmering.

Men efterhånden starter enhver programmeringsopgave med at afgive en simpel, præcis ordre til ChatGPT/Copilot, der så hoster op med formfuldendt og ofte korrekt kode.

Så I praksis tynges vores arbejde i aftagende grad af bønfaldelsesparadigmet.

[Tak til Hasse for nyttig korrekturlæsning.]