Alan Kay: hvordan jeg ville undervise Computer Science 101

«En af grundene til faktisk at starte på universitetet er at bevæge sig ud over blot professionel træning og i stedet gribe fat i dybere idéer.»

Alan Kay: hvordan jeg ville undervise Computer Science 101

Lad os tænke lidt over dette spørgsmål. For nogle år siden inviterede afdelingen for datalogi mig til at holde forelæsninger på flere universiteter. Næsten tilfældigt spurgte jeg min første klasse, bestående af kandidater, ph.d.-studerende og professorer, om deres definition af 'datalogi'. Alle kunne kun give en ingeniørmæssig definition. Jeg har gjort dette på hvert nyt sted, og resultaterne var ensartede overalt.

Et andet spørgsmål var: 'Hvem er Douglas Engelbart?'. Flere mennesker sagde: 'Var han ikke på en måde relateret til computermusen?' (Og det skuffede mig meget, da mit videnskabelige samfund har bestræbt sig meget på, at det skulle være muligt at besvare dette spørgsmål efter to-tre museklik og sikre, at Engelbart faktisk var relateret til computermusen).

Delvist var problemet manglen på nysgerrighed, delvist snævre personlige mål, som ikke var relateret til læring, og delvist manglen på forestilling om, hvad denne videnskab indebærer, og så videre.

Jeg har arbejdet halvdags på datalogiafdelingen ved Californien Universitet i flere år (faktisk er jeg professor, men jeg behøver ikke at deltage i afdelingsmøder). Af og til underviser jeg, nogle gange for førsteårs studerende. I løbet af disse år er det allerede lave niveau af nysgerrighed over for datalogi blevet betydeligt lavere (men derimod er niveauet for popularitet steget, da datalogi betragtes som en vej til et velbetalt job, hvis du kan programmere og har fået et certifikat fra en af de bedste 10 skoler). Derfor har ingen studerende endnu klaget over, at det primære programmeringssprog på Californien Universitet er C++!

Jeg mener, vi står over for en situation, hvor både værdierne "Computer" og "Videnskab" er blevet nedbrudt af svage massede begreber for at skabe et nyt udtryk — en slags label på jeans — som lyder godt, men er temmelig tomt. Det tilknyttede udtryk, som også er blevet nedbrudt, "software engineering", som igen ikke anvendte de mest geniale ideer fra "programmering" og "ingeniørvidenskab", men blot kombinerede dem (det blev bevidst gjort i tresserne, da termen blev opfundet).

En af grundene til rent faktisk at tage på universitetet er at gå ud over simpel faglig uddannelse og i stedet gribe fat i dybere idéer. Det virker ret fornuftigt for en indføring i fagområdet at forsøge — hvis det er muligt, ved hjælp af eksempler — at få de studerende til at engagere sig i virkelige problemer og begynde at forstå, hvad der faktisk er interessant, vigtigt og centralt inden for dette område.

Førsteklasseseleverne glæder sig, når de får at vide, hvordan en lineal over en anden lineal bliver til en regnemaskine, som de kan bruge til at overgå femteklasseseleverne, når de tilføjer brøkdele. Og derefter vil de blive glade for at deltage i udviklingen af forbedrede regnemaskiner. De har haft kontakt til en rigtig computer — et fysisk og mentalt redskab, der hjælper os med at tænke. De har lært en virkelig effektiv måde at repræsentere tal på — mere effektivt end det, der undervises i skolerne!

De kunne forbinde deres sunde idé om "tilføjelse" som "akkumulation" med noget lignende med nye kraftfulde egenskaber. De programmerede det således, at det kunne løse forskellige problemer.

De udvidede det også. Og så videre. Dette er ikke en digital computer. Og det er ikke en computer med en mindeværdig software. Men det er essensen af en computer. Ligesom Antikythera-mekanismen — er det i sin helhed essensen af computere og beregninger.

Alan Kay: hvordan jeg ville undervise Computer Science 101

Antikythera-mekanismen

Hvor langt kan vi gå og hvor meget kan vi gøre, før alt går ud af kontrol, og vi mister os i abstraktioner? Jeg har altid været opsat på karakteristikken af Alan Perlis — den første vinder af Turing-prisen, som muligvis opfandt termen «Computer Science» — som i 60'erne sagde: «Computer Science er videnskaben om processer». Alle processer.

For Quoras skyld, lad os ikke prøve at presse dette videre eller gøre det til en religiøs doktrin. Lad os bare bruge ideen lykkeligt. Alain Perlis, for bedre at tænke over vores område. Og især over, hvordan vi skal undervise i det. Nu skal vi se på den moderne betydning af «videnskab», og Perlis var ret sikker på, at det ikke skulle fortyndes med gamle betydninger (for eksempel noget som «indsamling af viden») og anvendelser (som «biblioteksvæsen» eller endda «samfundsvidenskab»). Under «videnskab» forsøgte han at forstå fænomenet ved at skabe modeller/kort, der forsøger at vise, «spore» og forudsige fænomener.

Alan Kay: hvordan jeg ville undervise Computer Science 101

Jeg har givet flere interviews om, hvordan de bedste kort og modeller ofte kan passe til en t-shirt, ligesom Maxwells ligninger og andre gør. Analogien er, at der er en «videnskab om broer», selvom de fleste broer er lavet af mennesker. Men så snart en bro er bygget, afspejler den fænomener, som forskere kan studere, og fra broer kan der laves modeller af mange slags og danne omfattende og nyttige «broteorier». Det sjove er, at man derefter kan designe og bygge nye broer (jeg har allerede nævnt, at der næppe er noget mere sjovt end samarbejde mellem forskere og ingeniører for at løse store og vigtige problemer!)

Alan Kay: hvordan jeg ville undervise Computer Science 101

Herbert Simon — Turing-prisvinder og Nobelpristager — kaldte det hele «kunstig videnskab» (og skrev en fantastisk bog med den titel).

Alan Kay: hvordan jeg ville undervise Computer Science 101

Lad mig give et eksempel. I 50'erne byggede virksomheder og universiteter computere med hukommelsesprogrammer og begyndte at kode dem — og der var et særligt øjeblik, da Fortran dukkede op i 1956 — som ikke var det første højniveau-sprog, men muligvis det første, der blev lavet så godt, at det blev brugt i mange forskellige områder, herunder mange, der tidligere kun var gjort på maskinsprog.

Alt dette skabte «fænomener».

Alan Kay: hvordan jeg ville undervise Computer Science 101

John McCarthy

Historien om Lisp er mere kompleks, men John McCarthy var interesseret i at finde en "matematisk teori om beregninger" og var fast besluttet på at få det til at fungere perfekt. Funktionen eval, der fortolker Lisp, kan nemt komme på en T-shirt! Sammenlignet med "programmeringssystemet" er det ubetydeligt. Mere vigtigt er det, at denne "beregningsteori" havde en stærkere koncept end Fortran! Det var den bedste broidé!

Den kompakte natur af Lisp tillader, at hele idéen om programmering kan gribes med et par tryk på et dybere niveau og overvejes på et niveau, som virker fuldstændig umuligt, når du ser på de enorme artefakter (det er en af grundene til, at forskere elsker, at matematik er kompakt og kraftfuld). Den matematik, der anvendes her, er ny matematik, da den tillader begreber som "før" og "efter", hvilket fører til "logik med variable størrelser", der muliggør bevarelsen af både funktionel afhængighed og logisk ræsonnering, mens den samtidig tillader tidens placering og forløb. (Dette er stadig ikke forstået i vores tid i den barske verden af situationsprogrammering).

Lisp, der fungerer som et kraftfuldt programmeringssprog og metalanguage, der kan præsentere sin egen teori, er et eksempel på ægte datalogi. Hvis du lærer det og andre lignende ting, vil du være i stand til at tænke dybere og have mere ansvar for dit eget skæbne, end hvis du blot lærer at programmere i Fortran eller dets moderne ækvivalenter (... sådan kan du nærme dig programmører!).

Du vil lære langt mere om de særlige designformer, der er nødvendige i beregninger (for eksempel værdsættes det generelt ikke, når beregninger ofte kræver at gå ud over den beregningsmæssige kontekst: en af de særlige egenskaber ved gemte programberegninger er, at de ikke blot er materiale til et program, men materiale til en helt ny computer).

En anden grund til at vælge Perl's definition er, at beregning generelt er meget mere relateret til skabelsen af systemer af mange slags end til algoritmer, "datastrukturer" eller endda programmering som sådan. For eksempel er en computer et system, beregninger er systemer, et lokalt netværk og internettet er systemer, og de fleste programmer bør repræsentere bedre systemer end dem, de egentlig er (den gamle programmeringsstil fra 50'erne har overlevet så længe, at det virker som om programmering bør være sådan – der er intet mere fjernt fra sandheden).

Internettet er et godt eksempel – i modsætning til de fleste programmer i vores tid behøver internettet ikke at blive stoppet for at reparere eller forbedre noget – det ligner mere et biologisk system – i henhold til vores intentioner, end hvad de fleste mennesker betragter som et beregningssystem. Og det er meget mere skalerbart og pålideligt end næsten alle eksisterende softwaresystemer i dag. Det er virkelig værd at overveje, før man underviser nybegyndere i programmering i ikke så kraftfulde koncepter!

Så hvad vi skal gøre i det første kursus i Computer Science, er at tage højde for, hvad studenterne konkret kan gøre fra starten, og derefter forsøge at holde os inden for deres "kognitive belastning" for at hjælpe dem med at nå frem til det, der virkelig betyder noget. Det er meget vigtigt at "forblive ægte" og finde veje, der er intellektuelt ærlige og passer til dem, der kun er begyndt at lære. (Vær venlig ikke at undervise i dårlige idéer, bare fordi de virker lidt lettere – mange dårlige idéer er faktisk simplere!).

Studerende bør starte med at skabe noget, der har mange vigtige egenskaber, som jeg har diskuteret her. Det skal være et system af flere dynamisk interagerende dele og så videre. En god måde at beslutte, hvilket programmeringssprog der skal anvendes, er simpelthen at gøre noget, der har tusindvis af interagerende dele! Hvis ikke, bør du finde et sådant. Det værste man kan gøre, er at sætte studerende på en alt for svag bane, som stærkt begrænser store idéer. Det dræber dem simpelthen — og vi ønsker at udvikle dem, ikke dræbe dem.

Om GoTo-skolen

Alan Kay: hvordan jeg ville undervise Computer Science 101

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster