Noll eller ett
Datorn förstår ingenting du skriver
Du öppnar en editor, skriver print("Hej världen") och kör koden. Något händer. Men processorn i din dator förstår inte bokstäver, den förstår inte ord, den förstår inte ens siffror i den mening vi menar. Det enda den förstår är om elektrisk ström flödar genom en krets eller inte. På eller av. Ett eller noll.
Mellan din text och den elektriska signalen finns en kedja av översättningar. Den här lektionen handlar om den kedjan, inte för att du ska memorera den, utan för att du ska förstå vad som faktiskt händer när du kör ett program.
Binärt, det enda processorn förstår
En processors grundläggande byggsten är transistorn, en mikroskopisk elektrisk brytare som antingen är på eller av. Moderna processorer innehåller miljarder av dem. På representerar 1, av representerar 0. Det är hela vokabulären.
Kombinationer av ettor och nollor kan representera vad som helst: bokstaven A är 01000001, heltalet 65 är samma bitmönster, en pixelfärg är en annan kombination. Allt som existerar i datorn, kod, bilder, operativsystem, är i grunden mönster av sådana kombinationer. Det är vad som händer i hårdvaran.
Tolkad vs kompilerad
Att skriva kod direkt i ettor och nollor är möjligt men omänskligt. Programmerare skapade i stället abstraktionslager, språk som är lättare att förstå, med verktyg som översätter dem mot hårdvaran.
Vissa språk, som C och C++, använder en Kompilator Ett program som översätter hela källkoden till maskinkod på en gång, innan programmet körs. Grace Hopper skapade den första kompilatorn 1952. : ett program som översätter hela källkoden till maskinkod på en gång, innan programmet körs. Resultatet är en körbar fil som processorn kan exekvera direkt. I kursinledningen läste du om Grace Hopper, som uppfann kompilatorn 1952. Innan det var det enda sättet att programmera att skriva i ett språk processorn direkt förstod.
Python, som Guido van Rossum skapade 1989, fungerar annorlunda. Det är ett Tolk (interpreter) Ett program som läser källkod rad för rad och exekverar den direkt. python3 i terminalen anropar Pythontolken. . I stället för att kompilera i förväg läser ett program som heter Pythontolken din kod rad för rad och exekverar varje instruktion direkt. Det finns ingen separat kompileringsfas, tolken kör koden direkt. Det förklarar varför du kan skriva en rad i terminalen och se resultatet omedelbart.
VS Code och terminalen, två olika verktyg
Det här är viktigt att förstå från början: VS Code kör inte din kod.
VS Code är en editor, ett program för att skriva och organisera textfiler. Det som skiljer den från ett vanligt ordbehandlingsprogram är Syntaxmarkering VS Codes färgkodning av kod baserat på struktur. Nyckelord, strängar och kommentarer får olika färger, vilket avslöjar enkla fel direkt. : den känner igen Python och färgsätter nyckelord, strängar och kommentarer. Lättare att läsa, enklare att hitta fel. Men den kör ingenting.
Terminal Textgränssnittet mot operativsystemet. Här anropar du Pythontolken och kör dina Python-filer. är textgränssnittet mot operativsystemet. Det är härifrån du anropar Pythontolken:python hej.py Tolken öppnar filen, läser den rad för rad och exekverar varje instruktion. Det är hela flödet: du skriver i VS Code -> sparar -> kör i terminalen.
Skriv din första rad
Testa print() direkt här, ingen installation behövs:
Redo.
print() är en inbyggd funktion i Python, ett paketerat kommando som tolken känner igen. Argumentet inom parenteserna är det som skrivs ut.
På den här webbsidan så kommer du kunna köra python-kod i en så kallad sandlåda. Syftet är att du direkt ska kunna testa, köra och ändra i koden. Byt ut texten mellan citattecknen och kör igen. Testa sedan att stava fel: byt print mot Print med stort P och kör en gång till.
Python skiljer på stora och små bokstäver i alla namn. print och Print är två helt olika saker. Det felmeddelande du fick kallas NameError, vi återkommer till det i Spåraren.
Datorn gissar aldrig vad du menade
Stanna kvar i det där felet ett ögonblick, för det säger något större om vad programmering är.
Om du ber en kompis “kan du sätta på kaffe” så fyller hen i femtio saker du aldrig sa. Hur mycket kaffe. Vilken kanna. Att den ska vara ren först. Att bryggaren ska vara påslagen. Du sa ingenting om det, och du behövde inte, för mottagaren tolkar. Vi människor kommunicerar nästan uteslutande så: vi ger vaga instruktioner och litar på att den andra fyller igen hålen.
Datorn fyller aldrig i något hål. Den gör exakt det du skrev, inte det du menade. Print var inte “nästan print”, det var ett namn den aldrig hört talas om, och då säger den ifrån i stället för att chansa.
Det låter som en svaghet. Det är motsatsen. En maskin som gissade vad du förmodligen menade vore omöjlig att lita på, för då skulle samma kod kunna göra olika saker beroende på hur den tolkades för dagen. Att den är bokstavlig är precis det som gör att ett program beter sig likadant varje gång, på varje dator, för varje användare.
Det här är också värt att veta om dig själv: känslan av att vara “dålig på att koda” i början är nästan alltid något annat. Det är att vara ovan vid att bli förstådd bokstavligt. Du kommer inte att bli en person som slutar skriva otydliga instruktioner. Du kommer att bli en person som märker det direkt.
Uppgift: Verkstaden öppnar
Nu gör du samma sak i VS Code, inte i sandlådan.
Öppna din kursmapp i VS Code. Skapa en ny fil och döp den till
hej.py.Skriv tre
print()-satser med valfri text, en per rad. Spara filen med Ctrl+S (på Mac ⌘S).Öppna terminalen i VS Code med Ctrl+` (Windows) eller ⌃` (Mac). Skriv
python hej.pyoch tryck Enter. Alla tre raderna ska synas i rätt ordning.Ändra texten i en av dina
print()-satser. Spara och kör igen, bekräfta att ändringen syns.
I nästa del lär du dig att spara ditt arbete till GitHub så det aldrig kan försvinna.
Vad händer om
Byt namn på filen från hej.py till hej.txt och kör python hej.txt. Kör Python filen, och vad händer med syntaxmarkeringen i VS Code? Vad säger det om vem filändelsen egentligen är till för?
Motivera & reflektera
Förklara med egna ord, i en kort anteckning, skillnaden mellan VS Code och Pythontolken. Varför räcker det inte att bara spara filen för att se resultatet?
Nästa nivå
Binärt är inte magi, det är bara ett talsystem med basen 2. Där vårt vanliga system har positioner för ental, tiotal och hundratal (1, 10, 100) har det binära positioner för 1, 2, 4, 8, 16 och så vidare, varje steg dubbelt så stort. Att räkna ser ut så här: 0, 1, 10, 11, 100, 101, 110, 111… Testa att skriva talen 0 till 8 i binärt för hand.
Det är pilligt, och ärligt talat räknar nästan ingen i binärt för hand i sitt jobb, datorn sköter det åt oss. Men gör det en gång, så ser du att ettorna och nollorna från lektionen bara är helt vanliga tal, skrivna på processorns språk.