Liknelser för funktioner/metoder

Jag ska inte slösa tid med att prata om hur lite jag skriver nuförtiden, eller om mitt nya jobb (som är roligt, utmanande och för första gången innebär att jag har kollegor på samma våglängd vad gäller spel i undervisningen). Istället ska jag börja mjukt och dela med mig av en liknelse som nyss slog mig

En funktion i programmering är lite som Las Vegas. What happens in Vegas stays in Vegas, liksom. Som utomstående kan man ge folk som ska dit instruktioner, och man får kanske någon form av berättelse i andra änden, men man kan faktiskt aldrig veta vad som faktiskt hände i Vegas eller hur berättelsen egentligen skapades. Kanske hade de som åkte dit en helt crazy bananas partyresa, kanske satt de bara på hotellrummet och drack läsk och kollade på Days of our Lives.

I programmering upplever jag ofta att jag vill använda mig av ganska påtagliga liknelser, gärna lite roliga/skruvade och rotade i populärkultur. Jag har svårt för den rent abstrakta programmeringen; inte för att jag har svårt att abstrahera utan för att jag finner det mer lustfyllt att programmera om jag har konkreta, synliga mål och ser hur det jag gör leder till dem. Jag har också lättare att ta till mig nya, abstrakta koncept om de förklaras med humor och knyter an till saker jag redan har i min verktygslåda — kunskap jag redan internaliserat, om man ska prata akademikerspråk.

En annan liknelse jag brukar använda för funktioner och metoder är att rita en hund. Eller ja, jag börjar med att skriva funktionsnamnet, och så parenteser såklart. Och så ritar jag så att funktionen blir en hund. Man stoppar in saker (mat) i ena änden, och får ut… något annat i andra änden. Och vad som händer däremellan är ett mysterium…

Funktionshunden

Jag är ingen bildlärare, men min onda alien-tax brukar liva upp stämningen. Att rita funktioner så gör dessutom att det funkar i kod — det är ju ”åt vänster” det som returneras skickas, så skriver man till exempel ”x = askQuestion()” i koden så kan man tänka sig att hunden äter, gör sitt och går därifrån och lämnar sin ”output” efter sig.

Har man inte alltför kräsmagade elever kan man ju såklart fortsätta använda denna liknelse när det handlar om att ta output från en funktion och stoppa in i en annan. Lite ”human centipede” över det hela…