Programmering nivå 1 med Python
Kapitel 13: Programmering, användare och framtid
I detta kapitel knyter du ihop kursen med programspråk, utvecklingssätt, användarvänlighet, simuleringar och hur programmering förändras över tid.
Innehållsförteckning
Klicka på ett avsnitt för att hoppa direkt.
13.1 Vanliga programspråk
Det finns många olika programspråk, och alla har utvecklats för att lösa olika typer av problem. Alla språk används för att ge instruktioner till datorer, men de är inte byggda på exakt samma sätt och passar inte lika bra till alla uppgifter. Därför väljer man ofta programspråk utifrån vad man vill skapa.
Vissa språk är gjorda för att vara enkla att läsa och skriva. De passar därför bra i undervisning och för den som är ny inom programmering. Andra språk används när man vill bygga stora system, arbeta nära datorns hårdvara eller skapa snabba program där prestanda är extra viktigt. Det finns också språk som är vanliga inom webbutveckling, apputveckling, spelutveckling och tekniska system.
I den här boken använder vi Python. Python är ett mycket vanligt språk och används både i undervisning och i verkliga projekt. En stor fördel med Python är att språket har en tydlig och lättläst syntax. Det gör att du snabbare kan fokusera på själva programmeringen och problemlösningen, i stället för att fastna i onödigt komplicerad kod. Python används bland annat för automation, dataanalys, AI, skript och enklare program med grafiskt gränssnitt.
Ett annat vanligt språk är JavaScript. Det används framför allt inom webbutveckling och körs ofta direkt i webbläsaren. Med JavaScript kan man göra webbsidor mer interaktiva, till exempel genom att reagera på knapptryckningar, ändra innehåll på sidan eller hämta information från internet. Medan Python ofta används i fristående program och scripts, används JavaScript ofta för sådant som händer direkt på webben.
C# är ett språk som ofta används när man vill bygga större program med tydlig struktur. Det är vanligt inom spelutveckling, särskilt i Unity, men används också till desktopprogram, appar och webbutveckling. För den som senare vill arbeta mer med spel eller större system är C# därför ett viktigt språk att känna till.
Java är också ett mycket vanligt språk. Det har använts länge och förekommer fortfarande i många stora system. Java har varit vanligt inom företag, undervisning och apputveckling. En styrka med Java är att det är byggt för att fungera på många olika plattformar, vilket har gjort språket användbart i många sammanhang.
C och C++ är språk som ofta används när man vill ha hög kontroll över datorns resurser. De används till exempel i operativsystem, spelmotorer, tekniska program och inbyggda system. Dessa språk kan ofta ge mycket hög prestanda, men de är också mer krävande att arbeta med än till exempel Python. Därför passar de inte alltid lika bra som första språk, även om de är mycket viktiga inom många tekniska områden.
Det finns alltså inget programspråk som är bäst till allt. I stället kan man tänka att programspråk är olika verktyg. Om du ska bygga en webbsida med interaktivitet är ett språk lämpligt. Om du ska skapa ett enkelt nybörjarprogram kan ett annat vara bättre. Om du ska styra tekniska system eller bygga något som måste vara mycket snabbt kan ett tredje språk passa bäst. Valet av språk handlar därför ofta om syfte, användningsområde och krav.
Programspråk förändras också över tid. Vissa språk har funnits länge men används fortfarande, medan andra är nyare och har skapats för att möta nya behov. Utvecklingen påverkas bland annat av nya typer av program, nya enheter, ökade krav på säkerhet och önskemål om att koden ska bli tydligare och lättare att underhålla. Därför är programmering inte något helt stillastående område, utan något som hela tiden utvecklas.
I den här kursen använder vi Python eftersom det passar bra för att lära sig grunderna i programmering. När du lär dig Python tränar du på sådant som också finns i många andra språk, till exempel variabler, villkor, loopar, funktioner, inmatning, utskrift och felhantering. Det betyder att kunskaper i Python också ger en bra grund för att senare förstå andra programspråk.
13.2 Olika sätt att bygga program
Program kan byggas på olika sätt. Det betyder inte att ett sätt alltid är rätt och alla andra fel. I stället handlar det om att olika sätt att bygga program passar olika bra beroende på hur stort programmet är, vad det ska göra och hur tydlig strukturen behöver vara.
När man talar om olika sätt att bygga program använder man ibland ordet programmeringsparadigm. Det är ett ord för olika arbetssätt eller olika sätt att tänka när man programmerar. På den här nivån behöver du inte kunna avancerad teori, men det är bra att förstå att samma problem kan lösas på olika sätt.
Ett vanligt sätt är att skriva program steg för steg i den ordning de ska köras. Det kallas ofta procedurell programmering. Då bygger man programmet som en serie instruktioner där datorn först gör en sak, sedan nästa och sedan nästa. Man kan använda variabler, villkor, loopar och funktioner för att strukturera programmet, men grunden är fortfarande att programmet följer en tydlig ordning.
Ett enkelt exempel på procedurell programmering är ett program som frågar efter ett namn, sparar svaret och sedan skriver ut en hälsning. Programmet börjar överst och arbetar sig nedåt rad för rad. Många av de program du har skrivit hittills i boken fungerar på det sättet. Det gör procedurell programmering till ett bra sätt att börja, eftersom strukturen ofta blir tydlig och lätt att följa.
Ett annat sätt är att dela upp programmet i funktioner. Det är fortfarande nära procedurell programmering, men koden blir bättre organiserad. I stället för att skriva allt i en lång följd kan man skapa funktioner som ansvarar för olika delar, till exempel inmatning, beräkning och utskrift. Då blir programmet lättare att läsa, testa och förbättra.
När program blir större kan man också bygga dem med objektorientering. Då tänker man mer i form av objekt, alltså saker i programmet som har data och funktioner som hör ihop. Om man till exempel skapar ett filmprogram skulle ett objekt kunna vara en film. Filmen kan ha egenskaper som namn och längd, och den kan också ha funktioner som hör till just den filmen.
Objektorientering behöver inte vara komplicerat, men det är bra att känna till att det finns som ett vanligt sätt att bygga program. Många större program och många vanliga språk använder objektorienterade idéer. I vissa språk, till exempel C# och Java, är detta extra vanligt. I Python går det också att arbeta objektorienterat, men i den här kursen ligger fokus främst på enklare och tydligare programstruktur.
Det finns också program som är händelsestyrda. Det betyder att programmet väntar på att något ska hända, till exempel att en användare klickar på en knapp. Detta arbetssätt är vanligt i grafiska gränssnitt. När du arbetar med Tkinter märker du att programmet inte bara kör allt uppifrån och ned och sedan avslutas. I stället ligger programmet och väntar på händelser från användaren, till exempel knapptryckningar eller inmatning i ett fält.
Det betyder att du redan har mött mer än ett sätt att bygga program. När du skriver ett vanligt Pythonprogram med inmatning och utskrift arbetar du ofta procedurellt. När du delar upp koden i funktioner får du bättre struktur. När du arbetar med Tkinter använder du också händelsestyrd programmering. Senare kan man också lära sig mer om objektorientering.
Det viktiga i Programmering 1 är inte att kunna alla dessa arbetssätt på djupet. Det viktiga är att förstå att program kan byggas på olika sätt och att valet av struktur påverkar hur lätt programmet blir att förstå, använda och vidareutveckla.
Ett litet program kan fungera bra med en enkel struktur. Ett större program behöver ofta delas upp tydligare. Därför är det viktigt att redan tidigt träna på att skriva kod som är läsbar, logisk och lätt att följa.
13.3 Anpassning till användare och tillgänglighet
När man programmerar räcker det inte att programmet fungerar rent tekniskt. Ett program kan ge rätt resultat och ändå vara svårt att använda. Därför är det viktigt att tänka på användaren. Den som använder programmet ska förstå vad som ska göras, kunna mata in rätt information och lätt kunna tolka resultatet som visas. Ett program som är tydligt och lätt att använda blir ofta mycket bättre än ett program som bara fungerar i teorin.
Att anpassa ett program till användaren betyder att man funderar på vem programmet är till för och hur det ska användas. En van användare kan ibland förstå ett mer avancerat program, men en nybörjare behöver ofta tydligare vägledning. I Programmering 1 handlar detta ofta om enkla saker som gör stor skillnad. Det kan vara tydliga texter, bra etiketter, enkla knappar och hjälpsamma felmeddelanden. Det handlar alltså inte bara om design, utan också om att göra programmet begripligt.
Ett vanligt problem i nybörjarprogram är att instruktionerna är för otydliga. Om ett program bara visar texten "Skriv här" eller "Mata in värde" kan användaren bli osäker på vad som egentligen ska skrivas in. Det är mycket bättre att vara konkret. Om användaren ska skriva filmens längd är det tydligare att skriva "Skriv filmens längd i minuter". Då vet användaren både vad som ska matas in och i vilken form. Ju tydligare instruktioner programmet har, desto mindre risk är det att användaren gör fel.
Felmeddelanden är också en viktig del av anpassningen till användaren. Om något går fel ska programmet inte bara visa att det blev fel, utan också hjälpa användaren vidare. Ett felmeddelande som bara säger "Fel" hjälper nästan inte alls. Ett bättre meddelande kan vara "Fel: skriv ett heltal för längden". Då förstår användaren både vad som blev fel och hur problemet kan lösas. Det gör programmet mer användarvänligt och minskar frustrationen.
Läsbarhet är en annan viktig del. Texten i programmet ska vara lätt att läsa och lätt att förstå. I grafiska program är det bra om etiketter står nära rätt inmatningsfält och om resultatet visas tydligt. Om texten är rörig eller placerad på ett ologiskt sätt blir programmet svårare att använda. Ett enkelt och tydligt gränssnitt är därför ofta bättre än ett gränssnitt som försöker göra för mycket på en gång.
Det är också viktigt att programmet kontrollerar inmatning på ett rimligt sätt. Detta kallas validering. Om ett program frågar efter ett tal är det bra att kontrollera att användaren verkligen skriver ett tal. Om programmet frågar efter ålder eller längd är det också rimligt att kontrollera att värdet inte är negativt eller orimligt. Validering gör att programmet fungerar bättre och att användaren snabbare förstår vad som förväntas. Det minskar också risken för krascher och konstiga resultat.
I grafiska program spelar även ordningen stor roll. Användaren ska enkelt kunna förstå vad som ska göras först, vad som kommer sedan och hur resultatet visas. Om ett Tkinterprogram till exempel har en etikett för filmnamn, en etikett för längd, två inmatningsfält och en knapp för att beräkna resultatet, blir arbetsflödet tydligt. Användaren skriver först in namn, sedan längd och klickar därefter på knappen. När ordningen är logisk känns programmet mer naturligt att använda.
Man kan också tänka på tillgänglighet. Tillgänglighet betyder att så många som möjligt ska kunna använda programmet. I den här kursen behöver det inte handla om avancerade regler, men det är bra att förstå grundtanken. Texten ska vara tydlig, instruktionerna enkla och programmet ska inte kräva onödigt krångliga steg. Färg och kontrast kan också spela roll. Om text syns dåligt mot bakgrunden blir programmet svårare att använda. Därför är det bra att välja tydliga färger och en enkel layout när man bygger grafiska gränssnitt.
Användarvänlighet handlar ofta om små detaljer som tillsammans gör stor skillnad. Ett program blir mer användarvänligt om det har tydliga namn, enkel struktur, bra instruktioner och felmeddelanden som hjälper. Det behöver inte vara avancerat för att vara bra. Tvärtom är det ofta de enklaste lösningarna som fungerar bäst för användaren.
Om man ser tillbaka på de Tkinterprogram som du har arbetat med i boken märks detta tydligt. När varje inmatningsfält har en Label före, när knappen har en tydlig text som "Beräkna", när resultatet visas på flera rader och när felmeddelanden förklarar vad användaren ska göra, då blir programmet mycket bättre. Samma program hade varit betydligt svårare att använda om det saknade etiketter, hade otydliga knappar eller bara visade korta felmeddelanden utan förklaring.
Att tänka på användare och tillgänglighet är därför en viktig del av programmering. Det räcker inte att skriva kod som fungerar. Man behöver också skriva program som passar sitt syfte och som går att använda på ett tydligt och rimligt sätt. Detta är viktigt både i små övningsprogram och i större projekt.
13.4 Datorsimulering och programmerade system
Programmering används inte bara för att skriva små övningsprogram eller bygga enkla appar. Den används också för att simulera verkligheten och för att styra system som påverkar maskiner, utrustning och beslut. Det gör att programmering får stor betydelse både i vardagen, i arbetslivet och i samhället.
En datorsimulering är en modell av något verkligt som körs i ett program. I stället för att testa något direkt i verkligheten kan man låta datorn räkna ut vad som skulle kunna hända. Det kan handla om att simulera trafik, väder, ekonomi, spridning av sjukdomar eller rörelser i ett spel. Simuleringen bygger på regler som programmeraren har skrivit in. Datorn följer sedan dessa regler och visar ett resultat.
Fördelen med simuleringar är att man kan prova många olika situationer snabbt och säkert. Om man till exempel vill undersöka hur bilar rör sig i en korsning kan det vara enklare att först göra en simulering än att bygga om en riktig väg. På samma sätt kan man i spelutveckling simulera rörelse, kollisioner och poängsystem innan ett spel är helt färdigt. Programmering blir då ett verktyg för att testa idéer, undersöka problem och förutse resultat.
Samtidigt är en simulering aldrig exakt samma sak som verkligheten. Den bygger alltid på antaganden och förenklingar. Om reglerna i programmet är fel eller för enkla kan simuleringen ge ett missvisande resultat. Därför är det viktigt att förstå att en simulering är en modell av verkligheten, inte verkligheten själv. Den kan vara mycket användbar, men den måste tolkas med eftertanke.
Programmerade system används också för att styra maskiner och teknisk utrustning. Inom industrin kan program styra robotar, produktionslinjer och sensorer. I hemmet finns programmerade system i till exempel tvättmaskiner, mikrovågsugnar och värmesystem. I bilar används programmering för att hantera bromssystem, motorstyrning, varningar och olika hjälpfunktioner. I vården används programmerade system i medicinsk utrustning, journalsystem och bokningssystem.
När programmerade system styr maskiner blir det extra viktigt att programmen fungerar korrekt. Ett litet fel i ett vanligt textprogram kanske bara ger ett felaktigt resultat på skärmen. Men ett fel i ett system som styr en maskin kan få mycket större konsekvenser. Därför behöver sådana system testas noggrant och byggas på ett genomtänkt sätt. Programmering handlar alltså inte bara om att få kod att köra, utan också om att skapa lösningar som är säkra och pålitliga.
Programmerade system påverkar inte bara maskiner utan också beslutsfattande. Många digitala system används för att sortera information, föreslå alternativ eller stödja människor i olika beslut. Ett system kan till exempel hjälpa till att rekommendera filmer, sortera sökresultat, föreslå vägar i en GPS eller analysera data i en verksamhet. I sådana fall är det fortfarande människor som ofta har det yttersta ansvaret, men programmet påverkar ändå vilket underlag som visas och vilka val som verkar mest rimliga.
Det betyder att programmering kan få stor påverkan även när ingen fysisk maskin styrs direkt. Om ett system prioriterar viss information framför annan kan det påverka vad människor ser, väljer och tror. Därför är det viktigt att förstå att programmerade system inte är neutrala bara för att de är digitala. De bygger på regler, val och prioriteringar som människor har skapat.
I den här kursen kanske du inte bygger avancerade simuleringssystem eller styrsystem, men principen är ändå densamma som i enklare program. Du skriver instruktioner, programmet följer dem och resultatet påverkar det som händer. Ett litet Pythonprogram som räknar ut kostnader, visar rätt svar eller reagerar på användarens val bygger på samma grundidé som större tekniska system. Skillnaden är främst hur omfattande och viktiga systemen är.
Därför är det värdefullt att redan i Programmering 1 förstå att kod kan användas till mycket mer än bara utskrifter och enkla beräkningar. Programmering kan användas för att modellera verkligheten, styra utrustning och påverka beslut. Det gör ämnet större och mer betydelsefullt än vad det först kan verka.
13.5 Programmering i förändring
Programmering är inte något som står stilla. Språk, verktyg och arbetssätt förändras hela tiden. Nya tekniska behov leder till nya lösningar, och därför utvecklas också programmeringen. Det betyder att den som lär sig programmera inte bara lär sig ett visst språk, utan också får en grund för att förstå och anpassa sig till framtida förändringar.
Tidigare användes datorer främst till beräkningar och enklare administrativa uppgifter. I dag används programmering inom nästan alla delar av samhället. Program finns i mobiltelefoner, spel, webbplatser, bilar, sjukhus, fabriker och smarta hem. När användningen förändras behöver också programmeringsspråk och utvecklingsmiljöer förändras. Det gör att vissa språk blir vanligare inom vissa områden, medan andra språk används mindre än tidigare eller får nya roller.
En viktig förändring är att programmering har blivit mer tillgängligt. Förr arbetade många direkt närmare datorns tekniska nivå, medan man i dag oftare använder språk och verktyg som gör utvecklingen snabbare och lättare att förstå. Python är ett tydligt exempel på detta. Språket har blivit mycket populärt eftersom det har en relativt tydlig syntax och kan användas till många olika saker, till exempel utbildning, webb, dataanalys och AI. Det betyder inte att äldre eller mer tekniskt avancerade språk har försvunnit, utan att olika språk används där de passar bäst.
Programmering förändras också genom att nya arbetssätt blir vanligare. I dag är det till exempel vanligt att arbeta steg för steg, testa ofta och förbättra program successivt. Versionshantering, samarbete via plattformar som GitHub och användning av färdiga bibliotek har blivit en naturlig del av hur många programmerare arbetar. Det innebär att programmering inte bara handlar om att själv skriva varje rad från början, utan också om att förstå, anpassa och vidareutveckla befintliga lösningar.
En annan tydlig förändring är att programmering i allt högre grad kopplas till data, automatisering och artificiell intelligens. Program används inte bara för att följa fasta instruktioner, utan också för att analysera stora mängder information och ge förslag eller förutsägelser. Det gör att programmering får nya användningsområden och att kraven på programmerare förändras. Det räcker ofta inte bara att kunna skriva kod. Man behöver också kunna testa, granska, förstå användare och tänka på säkerhet, ansvar och kvalitet.
Samtidigt finns det sådant som inte förändras lika mycket. Grundläggande idéer som variabler, villkor, loopar, funktioner och problemlösning är fortfarande centrala. Det betyder att de kunskaper du lär dig i början av programmering är viktiga även om tekniken utvecklas. Om du förstår grunderna blir det lättare att lära dig nya språk, nya verktyg och nya arbetssätt senare.
Det är också svårt att veta exakt hur framtiden kommer att se ut. Vissa språk och verktyg som är vanliga i dag kanske blir mindre vanliga i framtiden, medan nya lösningar tar plats. Historiskt har programmeringen hela tiden förändrats när nya behov har uppstått. Därför är det klokt att se programmering som något levande. Man lär sig inte bara ett ämne med färdiga svar, utan ett område som fortsätter att utvecklas.
För den som studerar programmering betyder detta att det är viktigt att vara nyfiken och beredd att fortsätta lära sig. Målet är inte bara att kunna använda ett visst språk i en viss situation, utan också att förstå principerna bakom programmering. Då blir det lättare att följa med när tekniken förändras.
13.6 Reflektionsfrågor
- Varför finns det flera olika programspråk i stället för ett enda språk som används till allt?
- Varför kan Python vara ett bra språk för nybörjare, och i vilka situationer kan andra språk vara bättre?
- Vad är skillnaden mellan att bygga program på ett procedurellt sätt och att bygga dem med objektorienterade idéer?
- Varför är det viktigt att anpassa program till användaren och inte bara fokusera på att programmet fungerar tekniskt?
- Ge exempel på hur ett program kan bli svårt att använda om man inte tänker på tillgänglighet.
- På vilket sätt kan tydliga instruktioner, felmeddelanden och enkel navigation göra ett program bättre?
- Vad är en datorsimulering, och varför kan simuleringar vara användbara i teknik och samhälle?
- Ge exempel på ett programmerat system som påverkar maskiner, utrustning eller beslut i vardagen.
- Hur kan programmering påverka samhället på ett positivt sätt?
- Hur kan programmering också skapa problem eller risker om system utformas på ett dåligt sätt?
- Varför förändras programmering över tid?
- Varför är det viktigt att lära sig grunderna i programmering även om språk och verktyg förändras?
- Hur tror du att framtidens programmering kommer att skilja sig från dagens?
- Vilka kunskaper tror du blir särskilt viktiga i framtiden för den som arbetar med programmering?