Strikking er programmering
Strikking er inn om dagen. Bestemor strikker, madammen strikker, og jeg strikker. Men for å strikke noe i det hele tatt så må jeg ha en oppskrift. Under ser du for eksempel begynnelsen til en oppskrift for å strikke en genser:
Legg opp (152)-168-(184)-200-(216) m på rundp 3,5 og strikk 8 omg vrangbord slik: * 2 r, 2 vr *, gjenta fra *—* til slutten av omg. Strikk 1 omg r. Bytt til rundp 4 og strikk 12 omg perlestrikk slik: Omg 1 og 2: * 1 r, 1 vr *, gjenta fra *—* til slutten av omg. Omg 3 og 4: * 1 vr, 1 r *, gjenta fra *—* til slutten av omg. Genta omg 1 til 4 til du har totalt 8 omg perlestrikk.
Hvis du ikke kan lese strikkeoppskrifter, så må nok dette fremstå som kaudervelsk. Men det er egentlig så vanskelig? Bokstaven ‘m’ står for maske, som er en garnløkke i strikkearbeidet. Det er referert til to masketyper i denne oppskriften: ‘r’ som står for rettmaske og ‘vr’ som står for vrangmaske. Det er andre forkortelser i oppskriften: ‘p‘ for pinne og ‘omg’ for omgang. Listen med tall i begynnelsen av oppskriften viser til økende størrelser: det miste tallet står for ekstra liten og det største tallet for ekstra stor. Til slutt så er det symbolet ‘*—*’ som betyr gjenta symbolene mellom asteriskene til et vilkår er oppfylt.
Men hva minner dette meg om? Jo, dette er jo et programmeringsspråk! Her er det lister som blir indeksert på plassnummer. Det er while-løkker som gjentar en operasjon inntil et vilkår er oppfylt. Det er primitiver som brukes for å bygge opp et komplekst mønster. Strikkeoppskriften er rett og slett en serie imperative steg som instruerer strikkeren hvilke operasjoner som skal utføres. Det er egentlig ingen vesensforskjell mellom strikkeopskriften og for eksempel en bit Python-kode.
La oss ta det hele et steg videre. Oppskriften vi har undersøkt kan også utrykkes visuelt som et strikkediagram. Da er en blank rute er en rettmaske og en svart sirkel i en rute en vrangmaske. Oppskriften blir da seende slik ut:

Dette diagrammet ser unektelig ut som et hullkort, ikke sant‽ Og det er faktisk ingen tilfeldighet. De første hullkortene som ble laget tidlig på 1700-tallet ble nemlig brukt til å kontrollere veve- og strikkemaskiner. Hullene i, og skekvensen av, kortene beskrev mønstret maskinen skulle produsere. Men bruken av hullkort til denne oppgaven tok først av på begynnelsen av 1800-tallet. Da patenterte Joseph Marie Jacquard sin Jacquard-maskin. Maskinen kunne kobles til en eksisterende vevstol og automatiserte prosessen med å veve mønster. Dette gjorde det mulig for selv en utrent vever å veve store og kompliserte tekstiler.

Charles Babbadge videreutviklet ideen om at hullkort kunne brukes til å lagre intruksjoner og data som kunne leses av en generell regnemaskin. Hans analytical engine, som han designet i 1837, skulle instrueres med bruk av hullkort. Men det ble med ideen for Babbadge, han fikk aldri bygget maskinen på grunn av manglende finansiering.
Ideen med å bruke hullkort til å lagre data samt å instruere en maskin fikk sitt store gjennombrudd med Herman Hollerith. Han patenterte i 1884 en maskin som kunne lese data skrevet på hullkort. Hans maskiner ble med stor suksess brukt i den amerikanske folketellingen i 1890 til å lese og prossesere innsamlet data. Noen få år etter folketellingen stiftet han, i 1896, selskapet Tabulating Machine Company. Dette delskapet ble etter flere sammenslåinger til slutt til International Business Machines Corporation (IBM) i 1924. Dette selskapet ble synonymt med datamaskiner og programmering i 1960 og 70-årene. Det er et IBM-hullkort med 80 kolonner fra denne tiden de fleste ser for seg når de tenker på et hullkort.
