Gå til innhold

[Løst] Hvor burde jeg lære programmering og hvilket språk?


Anbefalte innlegg

Videoannonse
Annonse
Gjest Slettet-x7D6du0Hjb

Ta en titt på lynda.com. Vel verdt pengene. Profesjonelt utførte videokurs, som er lette å forstå for nybegynnere. Du finner begynnerkurs i mange språk.

 

Har null erfaring med programmering, men må si meg enig med FB her. Brukte selv Lynda.com på jobb for å lære meg photoshop, men det er sikkert helt perfekt for å lære seg programmering.

Lenke til kommentar

Mitt første språk var Java, som jeg tok ved høgskolen, jeg synes det var greit å starte med, men nå hadde jo jeg den fordelen at jeg hadde forelesninger. C# er det jeg jobber mest med nå, og føler ikke det er så stor forskjell på det kontra java, i allefall ikke på det nivået jeg er.

 

Som noen andre har sagt tidligere, ikke bruk sånn visual studio eller andre text editorer som gir veldig mye hjelp. Egentlig burde du bare ha en syntax highlighter, for med alt mulig av hjelpemidler som intelisense o.l. Så er det ikke nødvendigvis så lett å se hva man gjør i starten. Textpad var det vi brukte i timene når vi programmerte med java.

Lenke til kommentar

For raske resultater og dermed automatisk motivasjon til å jobbe videre med det:

python, C# eller Java

 

For større forståelse av IT:

C

(Personlig tror jeg det kanskje er bedre å begynne med C++ før C, ettersom det er veldig lett å gjøre ting på C-måten i C++ om man er vandt til C, men umulig å gjøre ting på C++-måten i C :p)

 

Ja, C(++) er gøy og åpner alle muligheter - men det er sannsynligvis ikke stedet å starte. Selv lærte jeg meg VB 6.0 / qbasic først, for så å lære meg litt C(++), BASH, en del Java, mer C++, og til slutt Python. Skulle jeg begynnt i dag, så ville Python vært det logiske stedet - BASIC-språkene var bundet til en plattform (Windows/DOS) og et utviklingsmiljø (Visual Studio), noe som gjorde den språkspesifikke kunnskapen temmelig ubrukelig når jeg byttet til Linux og MS slapp .net / droppet VB 6.0.

 

Støtter Pygame, men lær deg grunnleggende Python først. Codeacademy er et godt sted å lære dette

Ja, spillprogrammering er ofte ikke det aller letteste. Dog så kan man ofte få til morsomme ting som ikke er så veldig vanskelig - trykkespill (førstemann til å trykke X ganger på sin knapp slik at figuren flytter seg over hele skjermen vinner), enkle "romskipsspill" ala asteroids (kanskje uten asteroidene først, collission detection kan være tricky) - prøv heller "raskest mulig rundt en bane uten å krasje i veggene" etc.

Lenke til kommentar

 

 

Støtter Pygame, men lær deg grunnleggende Python først. Codeacademy er et godt sted å lære dette

Ja, spillprogrammering er ofte ikke det aller letteste. Dog så kan man ofte få til morsomme ting som ikke er så veldig vanskelig - trykkespill (førstemann til å trykke X ganger på sin knapp slik at figuren flytter seg over hele skjermen vinner), enkle "romskipsspill" ala asteroids (kanskje uten asteroidene først, collission detection kan være tricky) - prøv heller "raskest mulig rundt en bane uten å krasje i veggene" etc.

 

 

Jeg husker noe av det første jeg lagde var et turbasert RPG spill, mitt var tekstbasert men jeg startet med det allerede uken etter jeg startet å lære programmering.

Endret av Perrern
Lenke til kommentar

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.

 

Python: start her, http://www.codecademy.com/tracks/python.

 

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.

Endret av libErate
  • Liker 9
Lenke til kommentar

Først bør ambisjonene kraftig ned. Jeg aner ikke hvor mye fritid du har, men det er ikke rent lite man skal sette seg inn i for å lage selv simple spill. Er ambisjonen noe som helst over tetris/bondesjakk så går du antagelig tom for motivasjon lenge før.

 

Jeg foreslår c++. Jeg brukte i min tid Deitel, how to program c++. Usikker om den er like bra nå til dags. Jeg ser at den nyeste utgaven er grundig slaktet på amazon. Håper noen andre her kan anbefale en bedre c++ bok.

 

Først må grunnleggende konsepter inn som funksjoner, scopes, control statement, logiske operatorer, arrays/lister/maps, trær, og andre datastrukturer, og ikke minst pekere. Pekere er en stor hindring for mange å forstå. Og helst litt objektorientering.

 

C++ er også best for å lære seg algoritmiske metoder nettopp fordi bruk av pekere i søk, sortering, og datastrukturer er vesentlig - og dette er synlig i c++. Pekere er skjult i de fleste andre språk som gjør dem vanskeligere å forstå.

 

Lærer du først c++, så er det lettere å lære seg alt annet med 100 gangen. Går du motsatt vei så ender du opp med å kaste bort tid på et språk - uten å helt skjønne det - for så å måtte lære et annet et like treigt før du skjønner ting.

 

Men ikke bli i c++. Personlig syns jeg det er for gammeldags, og det blir fort tungt å jobbe med. Det er nå du må finne noe annet.

 

Java er best på open source, helt greit til å lage spill i for hobbyutviklere - men det har en vedlig høy lærekurve når det kommer til rammeverk, biblioteker, verktøy etc. Java er det største språket i norge, som er brukt av flest proffesjonelle - men så har vi også brukt mye tid på å lære det.

 

En variant av Java er også brukt til å kode på Android plattformen med - så det er ikke dumt å lære seg Java.

 

HTML5 og Javascript er ordentlig shitty å programmere i - men dette er også noe mange av oss proffesjonelle jobber med til daglig. Da helst for å lage websider med, men det kommer mer og mer støtte for å lage spill. Men igjen - keep it simple. Du får lagt mye kult med det, men det har sine begrensninger.

 

PHP er også shitty som f... PHP er ikke for spill. Men mange hobbyutviklere liker dette, da for webutvikling. Men det er ikke dumt for å bli kjent med konseptene som webutvikling bygger på. Og PHP er lett å komme i gang med. Bare vit at språket er fullt i feil og sikkerhetshull slik at det er skikkelig slitsomt å lage ordentlige ting i. Java er best til web. C# er ... veldig bundet til MS - men mange liker at de ikke har så mange valg når de lager ting med C#.

 

 

Jeg anbefaler ikke å begynne med pyton fordi det er et veldig abstrakt språk som skjuler mange programmeringskonsepter. Men det er mange som liker det når de har lært seg programmering.

 

Kan du programmering så kan du lett bytte mellom språk - fordi konseptene er de samme. Det er et hav av språk der ute, så mulighetene er jo endeløse.

 

Men hold ambisjonene nede. Ikke undervurder nytten/gleden av å lage andre ting enn spill slik som websider, små verktøy for alskens rare ting, skript for å gjøre kjeldelige oppgaver enklere etc.

 

Det tar lang tid i å bli effektiv i programmering. Selv etter 3år på høyskolen så er det svært få som greier å lage et spill. Det er fordi det er svært mange ting man skal lære seg skal man lage noe ordentlig, og spill er mye mer enn kode. Det er like mye grafikk, lyd, fysikk, ai, nettverk, tastatur/mus, interaksjon, spillmekanikk, eventhåndtering, etc etc. Hvert ord her dekker helt fint svært mange bøker alene.

 

Selv er jeg proff javautvikler og holder på med web til daglig.

  • Liker 3
Lenke til kommentar

Hvis du bestemmer deg for C++, kan jeg sende deg øvingsopplegget som blir brukt i Prosedyre- og Objektorientert Programmering på NTNU. Det finnes både løsningsforslag skrevet av lærere og elever.

 

Når jeg lærte programmering startet jeg med Matlab, for å lære hvordan løkker osv. fungerer. Nå lærer vi C++, som er veldig greit da det finnes et hav av resurser på nettet.

Lenke til kommentar

Pascal har endel veldig dumme ting, som at indekser starter på 1. Glem Pascal og delphi.

 

Det er et utall språk rundt omkring, du kan ikke lære alle. Dersom du faktisk ønsker å jobbe som spillutvikler, så har du mye å lære. Veldig mange spillutviklere programmerer demoer først. Det er noe å starte med.

 

De aller fleste av store spill idag bygger på C++ kode. Årsaken til dette er at du kan velge "enkle" løsninger der det ikke haster, mens du kan "finkode" de delene som skal gjøres 10 millioner ganger i sekundet. Dersom man begynner med et programmeringsspråk som har garbage-collector, altså som automatisk holder orden på minneforbruk og annet, så går man glipp av denne svært grunnleggende tankegangen fra starten av. Jeg har sett mange som virkelig sliter med å finne ut av pekere og minnehåndtering.

 

Siden det er spill du ønsker å lage, så ser jeg ingen grunn til å gå rundt grøten. Start med C++. Forstår du C++ så vil alle andre språk være enkle å lære seg. Det er ikke mye vanskeligere å lære C++ enn noe annet, for tankegangen bak hva du gjør er det som tar tid, og det er så godt som likt i alle språk.

Lenke til kommentar

Hei! Mitt tips er å få deg en slags mentor, eller i beste fall starte på et opplegg som holder deg litt i ørene. Jeg lekte masse med datamaskiner på ungdomsskolen og vgs, prøvde alle GNU/Linux-distroene etc. Likevel klarte jeg ikke å strukturere meg nok til å lære programmering ordentlig før jeg begynte på Universitetet, med ukentlige obligatoriske innleveringer. Det er alt for lett å gi opp når du kommer forbi basics og du ikke umiddelbart skjønner hvordan du skal gå videre. Hvis du ikke har tilgang til et opplegg (for eksempel et studieprogram eller MOOC), ville jeg aliert meg med en venn, så man kan pushe hverandre og diskutere hvordan man tenker.

 

Jeg begynte med Python, og det synes jeg er et flott startpunkt. Lett å installere, lett å få til morsomme ting uten å måtte bry seg altfor mye om datamaskinens realiteter. Det tvinger deg ikke til å måtte tenke i ett og bare ett paradigme (slik som Java gjør, med aggressiv objektorientering), men kan brukes objektorientert, funksjonelt og imperativt.

 

Hvis du har en seriøs ambisjon om å bli en god programmerer, ville jeg begynt med denne gratisboka:

 

Learn Python the Hard Way:

http://learnpythonthehardway.org/book/

 

Det høres tungvindt ut å måtte lære noe "The Hard Way", men det denne boka får frem er at "the Hard Way is the Easy Way": I stede for å ta hundre snarveier og få en halvveis forståelse av hva du gjør, er det bedre å angripe vanskelighetene direkte – du blir en mye,mye bedre programmerer av det! Denne boka har masse øvelser som tvinger deg til å forstå hva du gjør. Den er gratis, og begynner på helt basics (hvordan installere Python?), og tar deg til et punkt hvor du kan lage skikkelig heftige ting. Lykke til!

 

Forøvrig helt enig det libErate sier!

 

Jeg er stort sett enig det DarkSlayer sier om ambisjonsnivå, men jeg er ikke enig i at C++ er et godt begynnerspråk – iallefall ikke for alle. Jeg ville heller begynt med Python for å få inn den grunnleggende algoritmiske tenkemåten, og så lært C, og hvordan de viktigste datastrukturene implementeres i C, så evt. C++. Men folk er forskjellige: Noen synes Python blir en for sterk abstraksjon, og vil heller begynne med hvordan datamaskinen faktisk funker, og abstrahere seg oppover. Jeg tror likevel de fleste vil foretrekke å "ha det morro" med et høynivåspråk som Python først, og så dykke dypere inn i hvordan det hele fungerer bak kulissene. YMMV.

Endret av cmr
  • Liker 1
Lenke til kommentar

Som mange i tråden sier, å lære seg programmering tar tid. For strukturen sin del ville jeg startet med ren C eller C++. Hvis du lærer deg grunnleggende C og C++ er det også lettere å lære OpenCL hvis du ønsker det.

 

En bok som er rimelig annerkjent (og litt gammel) er "The C Programming Language" andre utgave av Brian Kernighan og Dennis Richie. Jeg har vært gjennom boken ett par ganger (uten at jeg husker mye av det). Det er en veldig fin bok for å lære, men noe av koden er rotete og unødvendig kompleks for å lære deg de mest grunnleggende tingene.

Lenke til kommentar

En kjapp oppsummering: Start med et enkelt språk, og lær deg de viktigste algoritme-byggeklossene (løkker, if-setninger, variable, expressions, funksjoner og etterhvert klasser/objekter...), og de vanligste datastrukturene (lister, maps, vektorer, objekttrær). Du lærer også det aller viktigste: Å formulere en løsning på et problem som en algoritme. Og å debugge den. Python er en fin og myk start.

Om du liker det du lærer, så kan det være en idé å lære et mer hardware-nære språk - C(++) er fint her ettersom det er mye brukt (dvs. lett å google problemer), samtidig som du får banket pekere, referanser, stack, binæraritmetikk (om du vil) og annet teknisk stæsj inn. Men det er greit å kunne det helt grunnleggende før man gir seg i kast med dette.

Når du lærer deg C++, så behøver du ikke slutte med Python av den grunn. Jeg bruker disse språkene om hverandre daglig - C++ til å knuse tall i tusenvis av timer eller på hundrevis av CPU'er og hundrevis av GB med minne, og samtidig Python til å plotte, analysere data, teste idéer, grafiske grensesnitt etc. Hvert til sitt bruk!

Til slutt et par råd:
(1) Finn én eller flere venner å drive med dette sammen med. Gjerne folk du ser ~daglig ansikt-til-ansikt. Dette gjør prosjektet mye mer interessant/morro.

(2) Ikke ha for store ambisjoner fra dag én. Det tar tid å lære seg *tenkemåten*
(3) Ligg unna digre og kompliserte rammeverk til å begynne med, i.e. systemer hvor du kaller noe kode som så kaller din kode tilbake igjen, og hvor du må implementere klasser som skal gjøre bestemte ting. Dette blir fort frustrerende, vanskelig å debugge (når du ikke ser hva som kaller på hva og i hvilken rekkefølge koden faktisk kjører), og tar lang tid før du får noe som kjører (eller i det hele tatt kan kompileres). Ikke noe å tenke på før semikolon-før-enter er en refleksbevegelse;
(4) Ligg unna kompiserte "utviklingsmiljø" som prøver å gjøre alt for deg til å begynne med, alá Visual Studio, Eclipse, etc. Før du vet hva du egentlig driver med (og hva ord som "komplering", "linking" etc. betyr), så har du ikke lyst til å prøve å knyte opp floka når disse programmene tryner og du må plukke opp restene.
(5) Ligg unna fancy og uvanlige språk før du er varm i trøya. Haskel, Lisp, etc. er fint til sitt bruk, men du har ikke lyst til å kun finne dine egne forumposter når du googler feilmeldinger... MEN: Tips #1 overstyrer #5...

  • Liker 1
Lenke til kommentar

(5) Ligg unna fancy og uvanlige språk før du er varm i trøya. Haskell, Lisp, etc. er fint til sitt bruk, men du har ikke lyst til å kun finne dine egne forumposter når du googler feilmeldinger... MEN: Tips #1 overstyrer #5...

Tingen er at fyren ønsker å lære seg å programmere, ikke lære seg topic X for å gjøre Y. Spesielt til slikt er Haskell og Lisp to utmerkede valg.
Lenke til kommentar

Tusen hjertelig for alle svar!

Etter jeg har lest igjennom alle kommentarer, tror jeg det blir Python jeg starter med og deretter går over til C++.

Jeg har ett til spørsmål though.

Jeg har ikke vært innom Pygame enda, etter hva det høres ut som så vil jeg tro det er en side som lærer deg å lage spill med Python?

Og en ting til, folk sier jeg burde lære C++, men merka ikke noen som sa jeg burde lære C, hva er det egentlig som gjør dem så annerledes?

For meg som ikke kjenner til noen av dem, så virker det bare som om det er det samme med 2 "+" er bak. :tease:

Men igjen, tusen hjertelig for all hjelp og alle svar jeg har fått !

Endret av Kittystyle
Lenke til kommentar

Jeg ville heller (Som mange andre sier) lent meg mot Java. Om du ønsker objektorientert språk.

 

Om du tror du vil programmere spill innen et halvt år, så har du nok en stor oppgave foran deg. Dette er tidkrevende, og kanskje mer tidkrevende en hva folk først ser for seg. Riktignok når man kommer i gang, går det relativt lett.

 

Selv er jeg medium stødig på Java og kan en del Python. Det beste man kan gjøre først er å legge på seg gode vaner innenfor språket, og da er Java relativt greit. Python er fint det også, men jeg vil si det er verre å gå fra Python til andre programmeringsspråk kontra Java til andre. Det fine med Java er at det også brukes i mobile plattformer, som Android, og da kan man også få innblikk i noe tyngre utviklerverktøy som Eclipse.

 

Venn deg også på å bruke gode editorer. Personlig bruker jeg Sublime, og det er neppe den beste av dem, men jeg liker det.

 

C++ er bare en videreføring av C, språkene er ikke veldig forskjellige. C# som mange sier, er C Sharp, det er Microsoft sin egen versjon, og brukes i .NET utvikling, den er vel også basert en del på Java.

 

Jeg ønsker ikke å være kjip, men å lage spill i objektorienterte språk, fra bunn av, det kommer til å ta deg laaang tid.

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...