Programmering er som golf. Ikke spesielt lett til å begynne med. Du må lære å tenke og bevege deg på en annen måte enn du har gjort frem til nå.
Grunnleggende verktøy er like for så og si alle programmerings- og scriptspråk. Å starte med et interpreted språk, som python er nok heldig for å lære seg de forskjellige branchene og loopene. Deretter er det viktigere å forstå hva minne er, for å i det hele tatt forstå hvorfor noe funker og annet ikke funker uavhengig av hva man velger å skrive programvare i.
Hva vil du oppnå ved å programmere? Hva er formålet?
Som jeg forstår det vil du veldig gjerne programmere spill.
Hold deg langt unna Unity til å starte med. Her får du riktignok skrevet noen linjer i et par scriptspråk eller C# om du vil, men som programmør vil du måtte omstille tankegangen for å arbeide godt i det - det er en game engine, ikke et programmeringsverktøy(!). Unity har et veldig rigid system du må følge for å få gjort det du ønsker.
Som andre her sier, prøv gjerne pygame. Har derimot lite tro på at det vil gavne deg i lengden. Å ha kontroll på pythonscript i hytt og pine er rett og slett en pine. Målet for python er ikke å kunne skalere til det uendelige. Det er helt klart mulig, men man mister fort oversikten over kodebasen.
I tillegg er matematikk ekstremt viktig for en som ønsker å programmere spill. Vektorer, matriser osv. er matematiske konsepter du ikke vil komme unna. Fysikk er også greit å ha vært borti.
Hvis du vil jobbe med spillprogrammering i en AAA-bedrift bør du ha stålkontroll på C++. En god forståelse for hva som kan og bør utregnes i grafikkortets GPU og hva som kan og bør regnes ut i CPU.
For å komme dit er det uendelig mange muligheter.
Hadde jeg skulle startet om igjen i dag, ville jeg ha startet med python for å forstå alle grunnkonsepter og lært enkel syntaks i et tilgivelig kjøremiljø.
Deretter ville jeg hurtig ha skiftet fokus mot java. Og straks jeg var komfortabel med å håndtere objektmodellen i java og forstått konseptene og mulighetene i språket gått videre til C++. Side note: java 8 lanseres i morgen.
I C++ får du litt oversikt over hvordan en maskin egentlig tenker. Når skal minne settes av, hvor skal det settes av og når skal det frigjøres. Viktige konsepter for å forstå noe som helst i alle språk.
Deretter ville jeg valgt å benytte meg av et rammeverk for å skrive spill. Som for eksempel det glimrende LibGDX (java). Kanskje det mest vellykkede open source-rammeverket for OpenGL på flere plattformer jeg har sett.
Og ikke nok med det. Delta i utviklingen og diskusjonen rundt rammeverket - eller finn et annet prosjekt du vil hjelpe på github.com. Dette gjør det dyktigere som programmør og vil definitivt være viktigere enn å ha gått på skole hvis du ser for deg at dette er en karrierevei.
Java: www.java.com - velg en av begynnerpakkene Greenfoot, http://www.greenfoot.org/door - kanskje beste alternativ for å få umiddelbar tilbakemelding på din kode, eller BlueJ for å ta det helt grunnleggende.
C++: når du kommer hit kan det være en fordel å finne ei bok med oversikt over C++11. Ryktes at dansken Bjarne Stroustrup, som er språkets far, skal oppdatere Programming: Principles and Practice Using C++ som kan være et naturlig sted å starte.
Merkelig nok er det akkurat like greit å snu hele prosessen på hodet. Start med C++ og forstå hva som skjer, for så å benytte det du har lært til å skrive god programvare i de andre språkene. I så fall...: http://isocpp.org/get-started
Problemet her er at du ikke vil få like visuelle tilbakemeldinger på at du har vært flink gutt og motivasjonen kan lett dabbe av. Til gjengjeld vil du forstå noe meget viktig helt fra starten.
Men det som ikke er helt subjektivt er at man MÅ være aktiv i et eller flere utviklermiljø for å bli dyktig. Kan ikke si det nok. Vil referere til en blogg av Olve Maudal og mer her for å være nesten dagsaktuell - github.com er derfor et fint sted å henge for å forstå mer.
Programmering handler ikke bare om å kunne språk, men også å forstå hvordan man benytter hvert enkelt språk til å fullføre oppgaver det egner seg til i forhold til kunnskapsnivå. Når syntax sitter, betyr metodene man skriver på mer og mer. Patterns, GoF og eventuelt SOLID(spesielt i javasammenheng) er begreper du vil komme over mange ganger.
Mine fem cent, og fullstendig subjektivt og en plan for resten av livet ditt. Bare husk å være et godt menneske når du ikke fikler med pcen.