Begrebsmaskiner

Fra Felienne Hermanns’ websted (kilde: http://www.felienne.com/archives/6375)

Et af de nye tiltag inden for forskning i datalogi ser ud til at bringe to forskningsområder, som jeg beskæftiger mig med, sammen – semantik af programmeringssprog og uddannelsesforskning inden for datalogi. I juli i år har der således været et Dagstuhl-seminar hvor forskere fra disse to områder mødtes . Den amerikanske datalog og uddannelsesforsker Mark Guzdial skriver

A notional machine is a human-facing, student-accessible explanation for how some aspect of the computational machine works — it might be an explanation of a language feature, or an explanation of some aspect of a running program (e.g., how swap() works). To be able to debug a program, a student needs to understand it, i.e., to have a mental model of how the program works. A student has to be able to predict what their program does, simulating it in their head. A notional machine is a teaching tool for helping the student develop a successful (predictive) mental model.

Dette begreb, der bl.a. skyldes Guzdial, er centralt i de didaktiske overvejelser om programmeringsundervisning, og det er formodentlig broen til at knytte uformel og formel forståelse sammen.

Jeg ved ikke, hvordan begrebet notional machine bedst oversættes – måske “begrebsmaskine”? Dette begreb er interessant, og det er måske endda det, man i fagdidaktiske sammenhænge kalder for et tærskelbegreb. Ofte har vi lidt vagt talt om at man skal lære “principper i programmeringssprog”, men det, vi faktisk efterlyser, er denne form for abstrakt maskine i delvist uformel form.

Jeg har gennem mange år undervist i semantik af programmeringssprog. Min egen erfaring fra undervisningssammenhænge er her, at det desværre i høj grad er muligt at kunne programmere, men samtidig have store problemer med at forstå formel semantik af programmeringssprog. Min fornemmelse er, at denne kløft typisk skyldes at man i så fald ikke har en systematisk forståelse af det programmeringssprog, man anvender, herunder et begrebsapparat der ville kunne understøtte en sådan forståelse. Så vidt jeg kan se, er det netop en “begrebsmaskine”, der er behov for, for den kan hjælpe med at lære programmeringsfærdigheder og samtidig fungere som en bro til den forståelse af formel semantik, der er nødvendig i sprogdesign, oversætterkonstruktion og egentlig programanalyse. En af mine overvejelser er lige nu, om man mon i højere grad skulle bygge programmeringsundervisningen op med et af de centrale læringsmål (og med den sprogbrug) at den lærende skal kunne gøre rede og anvende en sådan begrebsmaskine.

A.P. Ravn 1947-2019

I dag kunne jeg læse den triste nyhed, at Anders Peter Ravn, af mange kendt som A.P., er gået bort efter længere tids sygdom. A.P. var gennem mange år professor i datalogi, og jeg så ham ofte i mit daglige virke. Han var en god og dygtig videnskabsmand og en rar mand tillige; det er underligt, at jeg aldrig skal se ham igen. Æret være hans minde.

En regnvejsdag i Leicester

I dag var der en workshop, hvor der var mulighed for alle til at tale om de faglige emner, der er i fokus for vores Horizon 2020-projekt. Jeg fik også tid til at snakke med mine kolleger andetsteds fra om den artikel, vi sender ind til en konference i næste uge. Og i frokostpausen blev der også tid til at stå i kø i den engelske sommerregn. En italiensk kollega bemærkede, at dette var en kærkommen forandring fra den hedebølge, de lige nu slås med i Sydeuropa.

Projektmøde i Leicester

Vandhanen på mit hotelværelse i Leicester.

I dag var det tid til det officielle statusmøde i forbindelse med vores projekt under EUs RISE-program. Undervejs i mødet fortalte koordinatoren Adrian Francalanza fra Malta om det der med API’er i software, og han brugte en god analogi– nemlig en vandhane! Det handler her ikke om brugervenlighed, men om hvad vandhanens håndtag tillader os at justere og om rækkefølgen, vi skal bruge håndtagene i. Det er faktisk et lille eksempel på det, vi i datalogi kalder for en protokol. Bagefter kom jeg til at tænke på nogle observationer om vandhaner og deres grænseflade, som jeg gjorde under en sommerferie for nogle år siden. Måske er kimen lagt til et populærvidenskabeligt foredrag?

Vi var alle lidt nervøse inden mødet, for EU-kommissionen havde sendt en officel repræsentant, der skulle give os et foreløbigt skudsmål. Der havde været problemer med enkelte partnere i konsortiet, der havde trukket sig tidligt – men det var jo ikke vi andres skyld. Vi endte også med at tale om hvad vi mon kunne gøre for at få en bedre kønsfordeling i projektet, noget der desværre er svært, givet at der er tale om et projekt inden for et voldsomt mandsdomineret fagområde. Ingen er stolte over dette, og heller ikke os.

Heldigvis fik vi en forsigtigt positiv tilbagemelding fra EUs repræsentant, og jeg tror faktisk at hun tager med os alle på restaurant her til aften. Leicester er en af de byer i Storbritannien (og vel specielt i England), der er kendt for sine gode indiske/pakistanske/nepalesiske restauranter, så det er her, vi skal spise.

Projektmødet som disse ender også ofte med at handle om mere end selve projektet. Alle er selvfølgelig akademikere, men et stort flertal af os har derudover en fælles referenceramme fra ansættelser i universitetsverdenen. På vej fra mødet snakkede jeg med en kollega fra IT-Universitet i København. Han spurgte mig om hvordan jeg havde det med mit arbejdsliv i lyset af alt det, jeg har oplevet i år og berettet om for andre. Jeg svarede ham ærligt; mere kan jeg ikke skrive her.

Guds programmeringssprog

Igen er det blevet den tid på året – masser af studerende på 4. semester kommer og spørger mig om hjælp til deres projekter. Noget af det rigtig interessante her er, at nogle laver projekter om programmeringssprog til begyndere – og alle programmeringssprogene ligner udgaver af C (fra 1972), måske spædet op med elementer af Java (fra 1995). Til en fremlæggelse sagde en projektgruppe, at deres sprog lignede C, fordi det var beregnet til at være nemt at bruge for alle dem, der aldrig havde programmeret før! På en eller anden måde tænkte de studerende på C som “det oprindelige programmeringssprog”.

Den slags fejlslutninger minder om gamle dages antagelser om at der findes et “oprindeligt sprog”, som alle mennesker taler og forstår inden de lærer det, der senere bliver deres modersmål – dette oprindelige sprog var så Guds sprog. Der har i tidens løb været en række eksperimenter, der alle gik ud på at opdrage børn uden at de lærte et sprog. Den skotske kong James d. 4 sendte således i sin tid to børn ud til øen Inchkeith for at de kunne vokse op hos en stum kvinde; hans antagelse var at børnene ville ende med at kunne tale hebræisk. Det eneste, der skete i alle disse eksperimenter, var selvfølgelig at de stakkels børn mistede forstanden.

En moderne variant af “Guds sprog” er den ofte hørte udtalelse om chokket ved at erfare at man er rejst til et land, “hvor man ikke taler engelsk”.

Alle fejlslutningerne om at C er “Guds programmeringssprog” skyldes selvfølgelig, at det programmeringssprog, som de studerende først lærte, var netop C. Dette taler for at man bør lære flere forskellige sprog ganske tidligt, hvis man studerer et datalogisk fag – præcis som alle også bør lære andre fremmedsprog end engelsk.

Forår i Prag

En nedgravet russisk kampvogn.

I går morges kl. 7.42 tog jeg toget fra Aalborg, skiftede i Aarhus og siden igen i Hamburg. Klokken 21.26 var jeg fremme i Prag. Her deltager jeg i mødet i BEHAPI-projektet, som jeg og ganske mange andre universiteter og virksomheder fra rundt om i Europa er med i. Jeg er selv site leader for Aalborg Universitet; det lyder umiddelbart flot, men vi er lige nu kun to med fra AAU. Der var også en dansk virksomhed med (en IT-virksomhed, der har været omtalt i medierne), men den trak sig pludselig ud i sin tid. Det var en skuffelse.

De fleste af dem, der deltager i mødet, er kolleger fra rundt om i Europa, som jeg samarbejdede med og besøgte som del af BETTY-netværket, der sluttede i 2016. Det er godt at se dem igen. BEHAPI-mødet indgår i den store ETAPS-konference, som finder sted i den kommende uge. Men da er jeg taget hjem; undervisningen venter.

På dagens møde var der særligt fokus på hvordan vi kan formalisere matematiske teorier i bevisassistenter som Coq, og der var nogle spændende præsentationer om dette emne. Selv er jeg desværre ingen vegne kommet. Jeg har tidligere skrevet om hvordan jeg burde kaste mig over dette, men bogen om Coq ligger stadig og truer på et bord på mit kontor. Jeg har haft rigeligt at tænke på i dette forår, men en dag må jeg vel få tid – måske på togturen hjem?

Det er også noget særligt for mig at være på disse kanter. Jeg har kun været i Tjekkiet én gang før, og det var helt tilbage i 2002, hvor jeg besøgte Brno. Dette er med andre ord mit første besøg i den tjekkiske hovedstad nogensinde. På vej fra hotellet til BEHAPI-mødet så jeg en slags skulptur i et grønt område – en russisk kampvogn, halvt gravet ned i en plæne. Det er underligt at tænke på, at det i år er 50 år siden, russiske kampvogne rullede ind i byen og betød slutningen på de demokratiske reformer, som siden blev kendt som foråret i Prag.

Vi kan ikke få armene ned (men hvorfor egentlig ikke?)

I dag var jeg til endnu et møde hvor der blev talt om hvordan Institut for datalogi på Aalborg Universitet skal udbyde uddannelser på AAU-afdelingen i København. “Det kan ikke gå galt”, er den officielle melding fra ledelsen. Og vi kan ansætte flere, lød det.

Optimismen var stor. Der var således også nogle af mine kolleger, der udtrykte ønske om at overtage kurser på første studieår, som det lige nu er andre institutter, der leverer.

Det var unægtelig som om nogle af mine kolleger ikke kunne få armene ned over al denne mulige succes. Men jeg har det anderledes. Jeg er bekymret for at vi kan risikere at sidde med en boble, der pludselig brister. Og jeg ved, jeg ikke er den eneste. Hvad skal vi gøre, hvis vi ikke kan klare os i konkurrencen med KU, DTU, ITU, RUC og CBS, der allerede udbyder universitetsuddannelser i datalogi i hovedstadsområdet og tilmed har nogle veletablerede forskningsmiljøer derovre? Hvad skal vi gøre, hvis vi ikke kan finde nogen på Institut for datalogi til at undervise i de kurser, vi så gerne vil overtage fra andre? Og hvad skal vi gøre, hvis vi om få år pludselig står med et underskud? Andre institutter har haft den slags problemer for ganske nylig; det er kun få måneder siden, der skete fyringer på næsten alle institutter på AAU og jeg var bisidder ved fyringsmøder.

Det, jeg ønsker mig, er – som jeg skrev det i går – en god form for forudsigelighed.

Jeg burde lære det…

Logoet for Coq (http://www.inria.fr)

I dag var der statusseminar på 4. semester af datalogiuddannelsen, hvor projektgrupper fremlagde problemformuleringerne i deres projekter. En projektgruppe, som jeg vejleder, havde i deres materiale nævnt bevisassistenten Coq (som et eksempel på hvordan man ved hjælp af en bevisassistent kan implementere en bevisligt korrekt oversætter til et programmeringssprog). og da måtte jeg modstræbende indrømme, at jeg inden for de seneste år ofte har haft en ambition om at komme til at lære at bruge Coq, så jeg kunne formalisere alle mine beviser én gang for alle. Jeg har tidligere her skrevet om de store resultater inden for formaliseret matematik, som er nået gennem brug af Coq. Og jeg røbede, at jeg havde købt Adam Chlipalas bog om Coq, da jeg var til POPL2019 i Portugal i januar i år. Nu ligger bogen og truer på et bord på mit kontor; jeg havde lovet mig selv at bruge en eftermiddag om ugen på at komme i gang med at lære at bruge bevisassistenten. Men endnu har jeg end ikke fået læst bogens forord. Min ambition om at lære Coq er desværre på vej samme sted hen som min ambition om at blive bedre til at spille guitar. Og jeg ved, at jeg ikke er den eneste, der har det på denne måde. Til POPL2019 mødte jeg flere, der havde det på den måde og havde samme underlige længsel som mig.

En studerende fra en anden gruppe spurgte til statusseminaret, om ikke jeg kunne give ham en henvisning til Chlipalas bog, for det ville han da gerne give sig i kast med. Og det kunne jeg selvfølgelig – bogen kan hentes kvit og frit hos forfatteren som PDF-fil.Det vil være noget helt særligt, hvis den første person på Aalborg, der lærer at bruge Coq, bliver en studerende på 4. semester af bacheloruddannelsen!

Kristian G. Olesen

I dag var sidste dag, hvor Kristian G. Olesen var institutleder på Institut for datalogi, og i den anledning var der reception. Rigtig mange var mødt op på Selma Lagerlöfs Vej 300, for der er rigtig mange rundt om på universitetet, der kender ham.

Også jeg har kendt Kristian længe, faktisk siden 1983, hvor jeg begyndte at læse matematik. Han var dengang den første decentrale studievejleder ved de naturvidenskabelige uddannelser på AUC; jeg blev hans efterfølger i den henseende.

Ti år senere deltog jeg i adjunktpædagogikum sammen med Kristian, og fra dengang husker jeg meget tydeligt hans store talent for formidling. Han valgte dog en anden vej end at undervise – først en årrække som studienævnsforperson, siden som institutleder. Her samarbejdede jeg i mange år med ham i samarbejdsudvalget på Institut for datalogi, hvor jeg repræsenterer medlemmerne af Dansk Magisterforening. Jeg lærte ham at kende som en gemytlig mand, der tænkte sig om og ville det gode – vigtige egenskaber i en akademisk verden, der med årene desværre er blevet mindre og mindre tilgivende. Kristian har altid gjort meget at leve op til nogle gode dyder om åbenhed og om at lytte til mangfoldigheden på instituttet. Det var nogle idealer, der kendetegnede AUC, men er på stærkt retur på det AAU, vi har nu. Jeg har på fornemmelsen, at han ikke altid havde det let med netop dét.

Jeg vil godt hermed sige tak for til Kristian for mange års godt samarbejde; jeg håber og tror at han vil få glæde af sin nye tilværelse som lektor. Fra og med i morgen hedder institutlederen på Institut for datalogi ved Aalborg Universitet Jesper Kjeldskov.