JAOO: Alle skal programmere!

Når man brænder for noget - softwareudvikling f.eks. - er det nærliggende at have lyst til at udbrede den begejstring til andre. Var det mon derfor, at årets JAOO/goto;-konference havde et track med End User Programming på programmet' Og har "almindelige brugere" egentlig lyst til at programmere' Dan Ingalls fra SAP og John Maloney fra MIT gav onsdag formiddag deres bud på programmering for slutbrugere.

Måske er det slet ikke nødvendigt at fortælle brugerne, at det, de laver, er programmering. Måske kan de gøre det alligevel. Tænk på et regneark: Man kan faktisk lave uhyre komplekse ting i et regneark, men alligevel er det ikke afskrækkende på slutbrugerne på samme måde som et traditionelt programmeringssprog ville være det. I toget på vej herover overhørte jeg en ung fyr, der var ved at forklare sin klassekammerat om et regnestykke, som var for stort for hans lommeregner (der skulle åbenbart ganges med Avogadros tal), "men jeg skal bare lige have tastet det ind i Excel; den kan klare vildt store tal". Total tiltro (!) og ingen angst for at have kastet sig ud, hvor man ikke kan bunde. Det er den følelse - underbygget eller ej - en slutbruger gerne skulle have med at "programmere".

Ved onsdagens session fik vi demonstreret det visuelle programmeringssprog Scratch, der er designet til 8-18-årige børn. I Scratch kan man "scripte" animation af nogle figurer ved brug af en række byggeklodser, der kan få figurerne til at dreje rundt, flytte sig, gentage dette osv.

Illustration: Privatfoto

John Maloney, som er en af hjernerne bag Scratch, viste, hvordan elegante designvalg kan gøre, at brugerne ikke behøver at forstå avancerede koncepter for at kunne programmere. I stedet kan man udnytte brugernes intuition og erfaringer fra andre områder.
Eksempelvis har man i Scratch undgået, at børnene skal tage stilling til datatyper som strenge og tal, samtidigt med, at en række af elementerne i sproget naturligvis er bundet til at tage bestemte typer af input (hvis noget skal gentages X gange skal X f.eks. være et tal). I stedet benytter man sig af former til at visualisere, hvad der passer hvor: Hvis et trin tager et firkantet input (det kunne f.eks. være et tal), kan du ikke placere et ovalt output i "hullet".

Et andet vigtigt element, som i øvrigt går igen både i Fabrik-frameworket, som Ingalls viste frem, og i Maloney's Scratch, er den umiddelbare feedback: Det at, samtidigt med, at man "programmerer", kunne se resultatet af eksekveringen uden at skulle compile og køre forfra.

Har du nogensinde tænkt på, hvor ubehageligt og intimiderende det er for en bruger at få en fejlmeddelelse? I Scratch har man afskaffet fejlmeddelelserne - programmet prøver blot at gøre det bedst mulige med det, brugeren har angivet. Har man for eksempel scriptet sin Scratch-figur til at bevæge sig til en koordinat, der er hele ude af koordinatsystemet, vil figuren blot bevæge sig så tæt hen til kanten som muligt. Simpelt, men alligevel revolutionerende i forhold til hvordan vi ofte behandler vores sagesløse brugere.

Måske kan vi allesammen gøre en indsats for at rykke vores software væk fra at skulle lære brugerne vores egne koncepter og kræve læsning af omfattende manualer og gennemkørsel af tutorials, og i stedet tage udgangspunkt i brugernes eksisterende erfaringer. Jeg har i hvert fald fået et par idéer at tage med hjem til min egen software - og det er vel også meningen med at tage på konference!

Kommentarer (5)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Deleted User

Det er alt sammen meget godt, men Scratch kører usandsynligt langsomt. Lige så snart man vil bare en lille smule længere end et lavt begynderniveau bliver sproget en hæmsko, det må kunne lade sig gøre at lave noget der favner bare lidt bredere.

Jeg kan godt lide konceptet med byggeklodser, det fjerner praktisk talt hele behovet for viden om syntaks, og gør det let at finde og vælge kommandoer.

  • 0
  • 0
#2 Lasse Lindgård

Det er rigtigt at Scratch har mange begrænsninger. Jeg savner især at man kan lave metoder med parametre, så man kan lege med procedurer og rekursion. Konceptet med at man "opfinder" sit eget sprog er helt fundamentalt for programmering og jeg kan ikke forstå at de ikke har det med.

Der findes en fork af Scratch som har taget ideerne op: http://byob.berkeley.edu/

Jeg har ikke prøvet det, men det ser lidt ud til at de tilgængæld gør tingene lige lovlige komplekse.

Endeligt er der Kojo: http://www.kogics.net/sf:kojo Det er noget helt andet end scratch, nemlig en LOGO-klon som bruger Scala som basissprog. Rigtigt sjovt.

Men alt i alt tror jeg nu at det er sundt nok at starte med Scratch og så lade ungerne ramle hovedet mod loftet før man introducerer noget nyt.

  • 0
  • 0
#3 Anne-Sofie Nielsen

Jeg tror nu, at det er rigtigt set, at simplicitet er det vigtigste i et programmeringssprog, der henvender sig til børn - også betydeligt vigtigere end hastighed.

Mine to 6-årige piger og jeg havde meget glæde af at lege med Scratch her i weekenden; de fik figurerne til at danse rundt og synge, og malede deres egne baggrunde.

  • 0
  • 0
#5 Nicolai Møller-Andersen

Scratch er helt sikkert drønsjovt. Det var Logo også. Man bliver bare ikke mester-koder af at lege med Scratch, for man lærer ikke meget om computere med et så systemfjernt sprog. Jeg er iøvrigt helt enig i, at simplicitet er vigtig for begyndere. Og for experter. Spørgsmålet er, hvilket niveau af simplicitet, der er passende, hvis man ønsker at skabe programmører. ZX81 basic er også simpelt. Den der følelse, der beskrives, - af ikke at vide, at man ikke kan bunde, minder den ikke lidt om cluelessness? Cluelessness har været årsag til mange gode ting og mange ulykker; Heldigvis motiveres vi forskelligt, - selv som børn. Nogen gider kun det lette og legende. Andre elsker en svær udfordring.

  • 0
  • 0
Log ind eller Opret konto for at kommentere