Programmering 101 - vart börjar man?

Joined
20 Oct 2023
Messages
848
Hej Forumet!

Jag är en glad kis på snart 40 somrar som bestämt mig för att jag vill lära mig mer om programmering.

Jag har två anledningar till att jag vill lära mig programmera:

1. Jag gillar att lära mig saker jag inte kan, särskilt sådant som kan användas kreativt eller har en stor påverkan på ens vardag. Programvara kan vara kreativt och har en stor påverkan på ens vardag, därför vill jag veta hur de funkar och hur man gör egna.

2. Jag tycker det verkar roligt att på hobbynivå sitta och pilla ihop enklare spelprojekt i spelmotorn Godot, ambitionsnivån på dessa är typ Pong, SMB-kloner eller kanske nått peka-och-klicka liknande, och då är vissa programmeringskunskaper viktiga. Övriga kunskaper för att skapa väldigt enkla spel har jag redan, eller vet hur jag skall skaffa mig (spelgrafik har jag tillräckliga kunskaper/färdigheter i för att kunna lära mig mer på egen hand, detsamma vad gäller speldesign etc). Kullen att komma över är själva kodandet, vilka ord och kommandon skall skrivas vart och på vilket sätt för att saker skall hända.

Godot använder programmeringsspråket GDScript, men det är egentligen inte så viktigt (det skall vara väldigt likt det mycket mer använda språket Python, tydligen).

Mitt problem är inte att det inte finns massa resurser att ta till sig, att det inte finns tillräckligt med information, gratiskurser, tutorials osv, mitt problem är snarare att det finns för mycket, och att jag som novis inte har färdigheterna att bedöma vart jag själv behöver börja, vilka resurser som är bra/dåliga, vad jag behöver lära mig i vilken ordning osv. Den svåraste delen av inlärningsprocessen är ju att gå från absolut okunnig till nybörjare, jag står på den just nu ganska obekväma gränsen mellan dessa där jag vet saker om programmering, förstår vad man använder det till och varför, har en väldigt basic uppfattning om hur det går till när man programmerar och skriver kod, men inte kan sätta mig i en editor på egen hand och åstadkomma mer än att skriva print("hello world!") utan att köra fast. Jag vet att massa ord finns som betyder saker (Syntax, Git, repository, compiling, object oriented, compositor osv) men jag vet inte vad de betyder eller när de blir betydelsefulla osv.

Jag har inga som helst ambitioner att "bli programmerare", utan behöver bara lära mig tillräckligt för att kunna fortsätta lära mig själv på egen hand när jag känner behovet av det, så att jag kan hålla på med det på en hobbynivå. Jag tror att jag vill lära mig Python (för det är det språk som är närmast GDScript, och därför rekommenderas som språk att lära sig av många som håller på med Godot, just för att det finns mkt mer inlärningsresurser till det än GDScript), men jag vet ju inte om det är där man skall börja, eller om jag behöver förstå annat innan jag ger mig i kast med själva språket.

Så, vart börjar man?
Är det någon som har bra tips på exempelvis gratisresurser (gärna med övningar, kanske?) där man i egen takt kan lära sig vetta basics med programmering.
Och vem frågan man, om man behöver lära sig mer eller om det är saker man inte fattar?

Tacksam för svar!
 

entomophobiac

Pistoler & Mord
Joined
6 Sep 2000
Messages
9,300
Location
Uppsala
En bra gratisresurs är Robert Nystroms Game Programming Patterns, som du kan hitta här: https://gameprogrammingpatterns.com/contents.html

Den beskriver många väldigt centrala koncept i spelprogrammering behändigt och överskådligt, illustrerat med C++-syntax. Men det är såpass överskådligt att det borde gå att omsätta lite oavsett vana.

Annars är min rekommendation helt enkelt att göra spel. Hoppa på en Ludum Dare, eller en av itch.io:s många game jams. Eller ge dig själv deadlines för att göra färdigt små spel.

Men akta dig helt klart för att göra allt för mycket videotutorials. Det finns väldigt många som är bra, och efter ett tag kan du hitta dina favoriter. Men det är ont om videoskapare som faktiskt vet vad de pratar om, vilket leder till att du får väldigt många videos där de berättar vilka steg du måste gå igenom (klicka här, dra här, skriv 13 här) snarare än varför du gör något av det.
 
Last edited:
Joined
20 Oct 2023
Messages
848
Annars är min rekommendation helt enkelt att göra spel. Hoppa på en Ludum Dare, eller en av itch.io:s många game jams. Eller ge dig själv deadlines för att göra färdigt små spel.
Ja, och det är ju tanken, men för att komma till nivån "gör världens typ enklaste spel" så måste man först komma upp till en "veta vilken information man behöver leta efter", och det är ju den första höga kullen att komma över, och det är ju vägen fram till och sen de första stegen upp på den kullen som är den svåraste biten.

Och det är ju det, videotutorials finns det ju i mänger, det finns ju verkligen en helt överväldigande mängd information, men den blir ju omöjlig att sålla ut om man inte vet vad man behöver kunna.
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Jag har precis bekantat mig med Mini Micro.
Det skulle jag verkligen rekommendera!

Att göra små spel eller andra enkla grejer.

Mini micro kommer med en hel del demos som är lätta att starta, spela, titta på och ändra.

Kör inte fast - fråga här - jag svarar!
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Om du vill lära dig python... skaffa dig ett konto på hackerrank.com och börja lösa de enkaste problemen. Och sedan svårare och svårare.
 
Joined
20 Oct 2023
Messages
848
Tack för tipsen, kommer komma med frågor när jag har sådana!


Om du vill lära dig python... skaffa dig ett konto på hackerrank.com och börja lösa de enkaste problemen. Och sedan svårare och svårare.
Kollade in det men närmare 1700 kr i månaden var långt mycket mer än vad jag är beredd att betala, jisses!
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Tack för tipsen, kommer komma med frågor när jag har sådana!




Kollade in det men närmare 1700 kr i månaden var långt mycket mer än vad jag är beredd att betala, jisses!
Det är väl gratis för privatpersoner/utvecklare?

Och kostar för företag som vill rektytera?

Annars har de bytt affärsmodell!
 

erikt

Hero
Joined
21 Feb 2014
Messages
1,379
När man först lär sig programmera så är det två saker som man behöver lära sig.
1) Ett eller flera programmeringsspråk
2) Hur man tänker när man programmerar.

Lära sig ett programmeringsspråk är egentligen den lätta biten, men oanvändbart om man inte även lärt sig programmering mer generellt.
Problemet är att man måste lära sig bägga sakerna samtidigt, vilket tenderar att förvirra.

Som start rekommenderar jag något språk som är lätt att komma ingång med, som t.ex. python.
C++ är inte bra för nybörjare - stort, komplext, och komplicerat språk.

Det finns mängder med tutorials ute på nätet, en del bra en del mindre bra.
Kan vara bra att följa någon sådan för att lära sig de absoluta grunderna.


Därefter, kom på någon idé för ett litet programmeringsprojekt och försök genomföra det.
Du kommer att fastna på en massa problem, och bli tvungen att ta reda på hur man gör det ena och det andra.
Men min erfarenhet är att det man lär sig mycket bättre när man har ett konkret mål man vill uppnå, snarare än att bara försöka göra olika lösryckta övningar.
En sak att tänka på är att i de flesta programmeringsmiljöer så är grafik mycket mer komplicerat än ren text, så börja med rent textbaserade saker innan du går vidare till grafiska grejer.

Det finns väldigt mycket mer jag skulle kunna skriva om olika delar - både om verktyg, språk, programmering i allmänhet, m.m, men då blir det nog en hel liten tutorial i sig. Om det finns önskemål om det skulle jag väl i och för sig kunna skriva ihop en del sånt, men det tar en liten stund.
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Därefter, kom på någon idé för ett litet programmeringsprojekt och försök genomföra det.
Du kommer att fastna på en massa problem, och bli tvungen att ta reda på hur man gör det ena och det andra.
Men min erfarenhet är att det man lär sig mycket bättre när man har ett konkret mål man vill uppnå, snarare än att bara försöka göra olika lösryckta övningar.

En sak att tänka på är att i de flesta programmeringsmiljöer så är grafik mycket mer komplicerat än ren text, så börja med rent textbaserade saker innan du går vidare till grafiska grejer.
Precis så.

Det man vill är att iterera snabbt.

1) Ny idé/förbättra/förändra
2) Koda
3) Testa
4) Börja om

Detta får gärna ta 5-10 minuter.

Förslag: gör en helt textbaserad SLP-generator till det rollspel du är mest bekant med.

Version 1: skriv bara ut namnet som alltid är "Tor Torsson"
Version 2: slumpa bland 10 förnamn och 10 efternamn (så har du 100 olika kombinationer)
Version 3: slumpa fram grundegenskaper (om det finns/är relevant)
Version 4: beräkna KP, skadebonus, osv
osv
 

Oldtimer

Slava Ukraini!
Joined
5 Feb 2002
Messages
4,565
Location
Göteborg, Lindome
Jag har utbildat i datorhantering och programmering i över fyrtio år nu. Skrivit en hel del kurser också. Men jag har ingen uppfattning om vilka resurser som finns därute just nu för att lära sig själv.

En sak som jag har märkt, dock, är att människor har olika svårt för att tänka i två tider samtidigt. Och med det menar jag att programmering har ett NU, när du skriver programkod, och ett SEDAN, när programkoden utförs av datorn. För olika elever har detta varit olika svårt. För en del närmast omöjligt och för en del helt självklart att se kopplingen mellan vad de gör NU och vad som kommer att hända SEDAN.

En liten mjukstart, om du inte redan har gjort något sådant, är att skriva instruktioner till en sköldpadda. Till exempel på https://pythonsandbox.com/turtle. Då kan man träna upp det här NU och SEDAN tänkandet (en viktig del av det som är punkt 2 i erikt:s post ovan).

Därefter är det bra att sätta upp ett enkelt mål och försöka genomföra ett litet programmeringsprojekt med hjälp av något språk (till exempel Python) och ett lämpligt verktyg.

Lycka till.
 

RasmusL

Champion
Joined
15 Jan 2012
Messages
10,328
Location
Stockholm
Jag vet att det finns en massa baksidor med det, men en LLM är inte så dumt. Om du inte vill stötta team GPT eller Claude kan du ju köra något lokalt och gratis, typ ollama?
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,717
Location
Rissne
Jag är nog egentligen inte alls helt säker på att "börja från grunden med enkla textgrejer" nödvändigtvis är rätt väg att gå, längre. Det känns nog logiskt framför allt för oss som själva började så, men jag har börjat luta mer och mer åt mål- och lustbaserat lärande.

Alltså, om det man vill göra är att bygga enkla spel, men man känner sig tvungen att först skriva hundra olika totalt poänglösa och astråkiga små matteboks-övningar i en textkonsol… Well, då ökar risken att man kroknar på vägen.

Det blir lite som med matematikundervisning: en av anledningarna till att så många matematiklärare är så oförmögna att lära ut matte på andra sätt än det tråkigaste, är att de är de enda vars matteintresse inte dödades av att gå igenom den sortens undervisning när de själva pluggade. Det sker så att säga viss selektering.

Numera om någon frågar mig var de ska börja, så brukar jag istället rekommendera att leta rätt på en youtubetutorial. En lång, gärna. Som är detaljerad. Jag har tänkt samla på mig några att rekommendera till folk men det har inte blivit av. Men; framför allt för Unity finns det ju massvis; jag vet inte om det finns riktigt lika många till Godot. Men egentligen behövs det ju bara en, till att börja med.

Men man ska inte bara följa tutorialen, utan för varje steg ser man till att fråga sig vad varje grej man gör, egentligen innebär och betyder. Experimentera. Ändra på koden, se vad som händer. Googla på termer. Fråga kompisar. Lära sig aktivt snarare än bara passivt.

Det tror jag är ett överlag bättre sätt att utöva självstudier inom programmering. Med ett tydligt mål och en närmast garanti att man faktiskt kommer få något som ser coolt ut och funkar så skapas motivation, och med motivation kommer man väldigt långt. Det gäller att se till så man får de där kontinuerliga dopaminkickarna av att lyckas.

När det gäller "vilket programmeringsspråk" eller "vilken spelmotor" svarar jag "vilken som helst; den som har en ball tutorial". Det är inte bortslösad tid även om du fastnar halvvägs och byter spelmotor och språk. Väldigt mycket är överförbart.


Men ja, det viktigaste är att det du ger dig in på att försöker göra 1) är genomförbart och 2) sparks joy. Det bör alltså vara något du faktiskt vill ha skapat. Jag brukar beskriva det som att jag vill att mina elever så snabbt som möjligt ska ha något de vill utsätta andra människor för att testa/köra/spela.



Om man bryr sig om mina creds: Jag har varit programmeringslärare i 15 år nu, varav de senaste 10–11 på en gymnasieskola där vi specifikt har en fördjupning, och från och med i höst också en spetsutbildning, inom spelutveckling.
 
Last edited:

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
En sak som jag har märkt, dock, är att människor har olika svårt för att tänka i två tider samtidigt.
Och det blir ju inte enklare/tydligare, av att man gjort allt möjligt för att komma ifrån vanliga procedurell programmering (BASIC) eller din sköldpadda, och få studenterna att börja med funktionell, deklarativ eller objektorienterad programmering.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,717
Location
Rissne
Jag är övertygad om att Brackeys helt på egen hand gjort mer för att få folk att lära sig programmera än typ alla "såhär lär du dig python från grunden"-youtubers tillsammans.

Brackeys har också gjort ett par Godot-videos. De verkar bra, såklart, för Brackeys är väldigt bra.
 

erikt

Hero
Joined
21 Feb 2014
Messages
1,379
Jag är nog egentligen inte alls helt säker på att "börja från grunden med enkla textgrejer" nödvändigtvis är rätt väg att gå, längre. Det känns nog logiskt framför allt för oss som själva började så, men jag har börjat luta mer och mer åt mål- och lustbaserat lärande.

Alltså, om det man vill göra är att bygga enkla spel, men man känner sig tvungen att först skriva hundra olika totalt poänglösa och astråkiga små matteboks-övningar i en textkonsol… Well, då ökar risken att man kroknar på vägen.
En massa såna där smågrejor är ju skittråkigt, och får en snabbt att tappa lusten.
Nej, jag tänkte mer att först kanske göra 2-3 små övningar för att fatta de absoluta grunderna. Inte fler.

Sen något lite mer ambitöst textbaserat projekt där man blir tvungen att lära sig hur man gör saker efterhand som man behöver dem.

Och sen kan man ge sig kast med mer avancerade saker - och lära sig mer.
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Vad som är roligt är rätt individuellt: ljud, små spel, matematik, arduino-projekt, osv.

Det som är synd/svårt är att 1985 var det ganska enkelt att göra små grafiska spel med ljud… nu 2025 är det rätt meckigt… och JAG TROR många hade tyckt det vore ett roligt sätt att börja.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,717
Location
Rissne
Vad som är roligt är rätt individuellt: ljud, små spel, matematik, arduino-projekt, osv.

Det som är synd/svårt är att 1985 var det ganska enkelt att göra små grafiska spel med ljud… nu 2025 är det rätt meckigt… och JAG TROR många hade tyckt det vore ett roligt sätt att börja.
Vill man verkligen göra det som 1985 så är det fortfarande rätt lätt: Pico-8. Har en kollega som testat att köra det i undervisningen. Det har funkat helt OK.

Jag hade gärna använt det själv, som kul inslag antingen i början eller nånstans längs vägen, men jag hade velat ha något som använde samma språk som min ordinarie undervisning användr (C#). (Ja, jag vet att PixelVision teoretiskt sett finns, men projektet är övergivet och verkar aldrig ha funkat sådär jättebra)
 

erikt

Hero
Joined
21 Feb 2014
Messages
1,379
Vad som är roligt är rätt individuellt: ljud, små spel, matematik, arduino-projekt, osv.

Det som är synd/svårt är att 1985 var det ganska enkelt att göra små grafiska spel med ljud… nu 2025 är det rätt meckigt… och JAG TROR många hade tyckt det vore ett roligt sätt att börja.
Det är inte så mycket svårare idag - om man nöjer sig med lika primitiv grafik som 1985.
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Vill man verkligen göra det som 1985 så är det fortfarande rätt lätt: Pico-8. Har en kollega som testat att köra det i undervisningen. Det har funkat helt OK.
Det är inte så mycket svårare idag - om man nöjer sig med lika primitiv grafik som 1985.
Såklart! Pico-8 eller Mini Micro är utmärkta.

Fast om man ska göra det med moderna verktyg - Phaser i JavaScript - eller någon riktig utvecklingsmiljö - så är tröskeln att komma igång rätt hög idag.

men jag hade velat ha något som använde samma språk som min ordinarie undervisning användr (C#)
...och det är ju inte så konsigt... och komma igång med enkel spelprogrammering i C# är inte så lätt (det finns säkert någon jätteenkel sandlåda som jag inte känner till).

Så jag kan se tillbaka med viss nostalgi på att det enda man behövde göra var att köpa en datatidning i kiosken, mata in BASIC-koden i sin C64, och så var man igång. Jag påstår inte att det var bättre förr på riktigt.
 
Top