Hvad vil det sige at programmere?

For kort tid siden stillede min mor præcis det spørgsmål: Hvad vil det egentlig sige at programmere? Min første reaktion var, at det var et underligt spørgsmål, for det ved alle da. Men det gik op for mig, at jeg faktisk ikke kunne komme med et særlig godt eller uddybende svar. Så derfor besluttede jeg mig for at researche og skrive et blogindlæg om det spørgsmål. Jeg blev klogere. Det håber jeg, at du også vil blive.

Din computer er lige så dum som en vaskemaskine

Apropos klogere: En computer er lige så dum som en vaskemaskine. Den kan tænde og slukke og hjernedødt gennemføre nogle handlinger, som et menneske giver den ordrer til.

De ordrer skal være meget, meget præcise og omhyggelige og fortælle trin-for-trin, hvad computeren skal gøre. De ordrer kaldes også algoritmer.

Hvis du for eksempel forestiller dig, at computeren skal lave en kop the, så kunne de første ordrer lyde:

1) Gå hen til døren, der fører ud til køkkenet.
2) Løft det højre ben cirka 7 centimeter op og tag et skridt frem.
3) Løft det venstre ben 7 centimeter op og tag et skridt frem.
4) Gå 2,4 meter lige ud
5) Drej til venstre
6) Gå 1,57 meter ligeud
7) Drej ind mod venstre
8) Tag fat omkring messighåndtaget, der befinder sig 1,64 centimeter over gulvet
9) Træk håndtaget ind imod dig, så lågen åbner
10) Tag den blå kop, der står på tredje hylde fra oven, ti centimer mod venstre
11) Bær koppen hen til køkkenbordet og stil den 15 centimeter til højre for håndvasken.
12) Tag elkedlen.
13) Åben vandhanen
14) Og så videre

På et tidspunkt får du forhåbentlig din kop the. Men inden da skal du igennem utrolig mange trin, fordi at computeren ikke kan regne noget som helst ud selv. Hvis du for eksempel glemmer at fortælle den, at den skal tage låget af thedåsen, så vil det blive en meget tynd kop the.

Og det er en vigtig lære: Computeren gør ikke, hvad du ønsker, den skal gøre. Den gør, hvad du giver den ordre til. Hverken mere eller mindre.

Det er meget overordnet, hvad det vil sige at kode.

Din computer forstår slet ikke dansk

Det vil være helt håbløst at tale til en computer på dansk. For et talesprog er alt for upræcist og åbent for fortolkning. Bare tænk på, hvor mange forskellige betydninger, der er for ordene ”får” og ”lam” og ”hul” og ”dør”– og man kan blive ved.

Selv ord, der umiddelbart kun har en betydning, kan opfattes forskelligt, alt efter om man er jyde, fynbo eller sjællænder, mand eller kvinde og så videre. Og det gælder alle talesprog i verden.

Derfor bliver man nødt til at henvende sig til computeren på en anden type sprog, der duer til at give nogle meget præcise, entydige ordrer. Og det er grunden til, at der findes programmeringssprog, som Java, Phyton, C# og så videre.

I et tidligere blogindlæg har jeg skrevet om, at der findes over tusind forskellige programmeringssprog.

Din computer forstår heller ikke programmeringssprog

Men så enkelt er det heller ikke: For en computer kan ikke forstå programmeringssprog og slet ikke omsætte dem til handling.

Det skyldes, at det eneste sprog, som en computer forstår, består af 0’er og 1-taller. 0’er og 1-taller betyder i virkeligheden ”sluk” og ”tænd” – præcis som når man tænder og slukker en lampe. Det er jo ”kun” elektronik!

Programmeringssprogene, som man bruger til at skrive sin kode, bliver derfor oversat til maskinsprog (0’er og 1-taller) af et program, der kaldes en compiler.

Der er fuldstændig vildt at tænke på, at man kan skabe så flotte hjemmesider, virtual reality-computerspil, selvkørende biler – og så videre og så videre – bare ved at give en computer nogle ordrer, der dybest set betyder tænd og sluk.

At programmere er At designe, at kode, at teste….

Men at skrive kode er kun en del af at programmere: Store systemer som skats hjemmeside, en netbank, et avanceret computerspil består af flere tusinder, ja måske millioner linjer kode.

Når man har med så meget kode at gøre, så er det vigtigt, at det er opbygget i en struktur, der er til at finde rundt i. Ellers bliver det helt umuligt at udvikle videre på systemet eller at rette fejl i det. Den type planlægning kaldes software-design eller software-arkitektur. Og det er en proces, der skal foregå, før man overhovedet begynder at skrive sin kode.

Når man så har designet strukturen og skrevet en del af sin kode, så vil man teste, om det virker eller om der er fejl i systemet. Der findes blandt andet de her to forskellige måder at teste på: At man tester løbende og ofte i udviklingen (det kaldes agil udvikling), og at man tester, når man har nået større milepæle eller måske helt i mål (det kaldes vandfalds-metoden).

Programmering er en så kompliceret proces – især når det gælder programmering af større systemer – at det er helt uundværligt at teste. For man kan let overse en detalje eller planlægge koden forkert.

I forbindelse med at man tester, så sætter man gang i en anden proces, der hedder debugging. Den proces går ud på at finde ud af, hvorfor at testen har vist, at der er fejl i systemet – og at løse de fejl.

Derefter er der dokumentation, vedligeholdelse, udvikling..

At programmere er tilsammen alle de processer.

INSPIRATION
Se de her cool videoer om, hvad programmering er, og hvad det kan bruges til:

https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro

 

 

Photo by samer daboul from Pexels