Programmering på skoleskemaet

Hvordan lære man bedst programmering?

For nyligt kom nyheden at programmering kommer på skoleskemaet i sammenhæng med fysikundervisningen. Hvis jeg skulle starte forfra med at lære datalogi, – eller formidle det fra grunden ville jeg nok bruge følgende værktøj:

Scratch er et peg-og-klik programmering-“sprog”, der let kan bruges af børn, og barnlige sjæle. Giver mulighed for let at skabe interaktive historier, applikationer og spil, og lære grundlæggende programmeringskoncepter undervejs. Jeg ville starte her for at give en smagsprøve på programmering, og gå i retning af skildpadde-grafik.

DrRacket er et programmeringssprog/udviklingsmiljø særligt rettet mod formidling. Her ville jeg gå videre med skildpaddegrafik, og derefter introducere udviklingsprojekter i den retning som lysten bringer. Programmeringssproget racket er en lisp/scheme-dialekt, hvilket er en af konceptuelt enkleste (og mest kraftfulde) måder at programmere på, da al kode har den grundlæggende struktur at det er indeholdt i en parantes der starter med funktionen/kommandoen/funktionaliteten, og derefter kommer hvilke informationer/parameter funktionen får med. Herved er det kognitive fokus ikke på at lære en masse syntaks, men man kan derimod fokusere på de egentlige kode-koncepter. En anden fordel ved at være en scheme-dialeket er at det er et godt springbrædt til at komme videre til “Structure and Intepretation of Computer Programs”, som nok er den bedste introduktion til programmering hvis man er ambitiøs om at lære mere. Ved at lære lisp, får man også grundlaget for at lære clojure, som er et af de bedste værktøj til mere seriøs udvikling.

Hvor DrRacket er en god platform at lære det konceptuelle, er der også det teknologiske aspekt, hvor den bedste platform at lære nok er HTML5-stakken. DrRacket understøtter også at arbejde med HTML og web-stakken, så det er et godt springbrædt og transition i denne retning. Ved både at lære forskellige programmeringssprog, får man også en langt bedre forståelse af de underliggende koncepter for udvikling, frem for blot den overlæggende syntaks(sprogets “udseende” mm). Racket og JavaScript(HTML5) er gode sprog at lære sammen, fordi de i deres udseende er meget forskellige, så man får en bedre fornemmelse af koncepterne. Begge sprog har også den fordel at de er relativt nemme at gå til (garbage collection etc.).

HTML5 og JavaScript er en vigtig platform på grund af dens anvendelighed, – det er ikke bare platformen for world wide web, men også en god tilgang til at lave apps (react-native er lovende), og også server-side programmering(via node.js). Og til mere social  kodning, er github og cloud.io nogle gode samarbejds-redskaber, både til at give feedback på læring og også dele ens projekter.

En af de god måde at lære på, er gennem den skabende process. At bygge ting eller modeller. At direkte bruge det som man lærer mens at man lærer det. Denne pædagogiske tilgang hedde konstruktionisme (forskellig fra konstruktivisme), og blev udviklet i MIT Learning Lab, i samme sammenhæng som del pædagogisk datalogi, herunder Logo-programmeringssproget og skildpadde-grafik.