Lära sig programmering

Diskussion i 'Frågor, support och diskussion' startad av cobbe, 13 jul 2009.

  1. cobbe

    cobbe Adult Droid Medlem

    Blev medlem:
    22 jun 2009
    Inlägg:
    559
    Mottagna gillanden:
    190

    MINA ENHETER

    Jag vill börja lära mig programmering. Hur ska jag börja? Finns det några bra sajter och böcker? Hur gammal bok kan man använda? Jag har hittat många böcker som är 5-10år gamla.
     
  2. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Beror på vad du skall lära dig, men generellt så är en bok som är 5-10 år gammal för gammal. Skall man lära sig koda C eller liknande så duger det men i många modernare språk har det hänt mycket sedan 10 år sedan (har det gjort i C också men).

    Jag är en sådan som inte tycker man skall börja med Java eller liknande, men det är ju nästan norm nu för tiden och jag antar att du är intresserad av att kanske koda till Android så skaffa dig en Java bok och sedan är det till att läsa, prova på, vrida och vända på alla exempel till absurdum, och så småningen om börja på något eget litet projekt.

    Det finns lite gratis böcker på nätet, t.ex. Thinking in Java, (här tänkte jag länka till Thinking in Java men något har hänt med hans sida, glömt att betala domänen?). Den borde du kunna hitta med hjälp av Google.

    Sedan kan det alltid vara bra att läsa lite böcker som är handlar mer generelt om data-strukturer och algoritmer, så man förstår vaför vissa sätt att göra saker är bra eller dåliga. Speciellt om man vill koda för t.ex. telefoner är det bra att ha (någorlunda) koll på varför vissa sätt att lösa saker är långsammare/snabbare eller tar mer/mindre minne och hur detta växer när storleken på datan växer.

    Sedan är utveckling mer än bara programmering/kodning, så att läsa på lite om hur man designar system o.s.v. kan också vara bra. Här vet jag många som gett upp. Vet inte om det är så generellt men folk som jag känner har hänt att de börjat lära sig skriva kod. Ssedan vet de inte hur/vart de skall börja när de skall göra något mer än att skriva exempel kod för att prova olika saker och har således bara gett upp.

    Men börja med en bok om programmering, läs och prova allting. Sedan när man börjar förstå så är det alltid bra att dra ner andras kod, och läsa/slå upp tills man förstår den. Speciellt kod som löser liknande problem som man själv vill lösa. Förutom att lära sig hur man kan lösa saker så tränar man upp sin kodförståelse och det är en bra egenskap.

    Lär dig och gör det till en vana att läsa APIn så kommer du spara mycket tid.

    Det finns mycket på nätet men oftast är en bra bok designad för att ta saker i "rätt" ordning vilket kan göra saker och ting lättare men när man lärt sig grunderna kan man komma långt med how tos och annat på nätet.

    Och man blir aldrig fulllärd, man kommer alltid att utvecklas och om man kollar på kod man själv var rätt stolt över för något år sedan så kommer man nästan alltid bli förskräckt över hur man kunde skriva som man gjorde. Så häng med i vad som händer, hitta folk att diskutera saker och ting med och fråga om saker. Har man det inte i sin närhet finns det forum och andra typer av communities på nätet.

    Något som är väldigt bra men som många nu för tiden missar är alla mailing-listor som finns. Även om vissa mailinglistor är väldigt elistiska och inte alltid så vänliga mot nybörjare (man kan lätt få svar som mer eller mindre betyder RTFM eller Google it) så är det ett bra sätt att följa med i vad som händer och lära sig. Det brukar finnas väldigt duktigt folk på dem. Sedan finns det även mailinglistor just för nybörjare.

    Överlag är det en bra vana att lära sig söka och hitta information och försöka innan man frågar, det lär man sig mycket på istället för att ta den enkla vägen och förlita sig på att andra kan.

    Dåligt med länkar i mitt svar men jag kanske slänger in några sedan. Jag är inte så inne i Java egentligen nämligen ;)
     
  3. matte

    matte Youth Droid Medlem

    Blev medlem:
    30 jun 2009
    Inlägg:
    112
    Mottagna gillanden:
    0

    MINA ENHETER

    En bok som jag rekomenderar är

    Java med Swing. Den börjar lite lättare och slutar svårare undertiden man blir bättre
     
  4. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Vill bara poängtera en viktig sak som gäller alla som ställer frågor på programmeringsrelaterade forum / mailinglistor är att i sitt inlägg vara så specifik som möjligt i sin fråga, och beskriva hur man har försökt lösa problemet samt hur det fallerar. Om man dessutom kan posta en kort kodsnutt som visar problemet så är det bra.

    Om man pysslar med Javautveckling och har läst en första nybörjarbok så tycker jag att man även skall köpa boken The Java programming language:
    http://java.sun.com/docs/books/javaprog/

    Jag vet att det är många som förespråkar den torra vägen, dvs läsa mycket teori och att använda en vanlig editor och kompilera från kommandorad innan man fortsätter vidare. Själv tror jag att det är just det som dödar det roliga. Att låta ens egna intresse styra, och att sedan läsa mer och mer ju mer information man har behov av skulle nog fungera bättre för många.

    Räkna med att i början gör yxiga lösningar och fulkod. Spelar ingen roll hur mycket teori du har läst, verkligheten skiljer sig ofta från det teoretiska, och med tiden lär du dig vad som är viktigt.
     
  5. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Komma igång så snabbt som möjligt och göra lite saker som är kul är det bästa.

    Programmeringsspel så som http://robocode.sourceforge.net/ tycker jag är kul att leka med.

    Och man gör alltid yxiga lösningar och fulkod, även om man kodat länge.
     
  6. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Nja, där håller jag inte helt med. Allt är iof relativt, men om man bryr sig om kodkvalité (vilket jag tycker alla utvecklare skall göra) så måste man kunna försvara en fullösning man gör, och det är sällan det är motiverbart.
     
  7. kigurai

    kigurai Kid Droid Medlem

    Blev medlem:
    23 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    2

    MINA ENHETER

    Jag tror att man alltid någon gång under ett projekt skriver "fulkod". Det som spelar roll är huruvida man inser det och faktiskt tar tid att skriva om det.
    Jag har nog hittills aldrig skrivit kod som direkt blivit så bra som jag vill, utan man har alltid stött på problem eller lärt sig något nytt så att man måste/kan skriva en bättre lösning.
     
  8. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Om man får en gnagande känsla när man skriver något bör man stanna upp och göra refactoring. Det där med att göra det senare brukar sällan inträffa.

    Att den inte blivit så bra som du vill behöver inte betyda att det är fulkod :)
    Krav och annat kommer också alltid förändras under resans gång och det är omöjligt att implementera den bästa lösningen redan från start. Även här kan dock refactoring göra att lösningen blir finare och finare. Om man däremot struntar i refactoring och accepterar fullösningen kommer dock kvalitén med tiden sjunka.

    The pramatic programmer beskriver det på ett rätt träffsäkert sätt:

    "A broken window.
    One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment—a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short space of time, the building becomes damaged beyond the owner’s desire to fix it, and the sense of abandonment becomes reality."

    (Boken i övrigt tycker jag är lite sisådär)
     
  9. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Du måste ha tur att ha så mycket tid alltid när du kodar att du kan göra perfekta lösningar direkt, tyvärr har jag inte så på mitt jobb och ibland får det bli ett fulhack för att lösa något.

    Dessutom blir det ju då och då att man gör små fulhack som man bara kör en gång för att fixa något och sedan är det gjort, att då lägga massa tid på att göra finkod är ju bara slöseri med tid och inte alls pragmatiskt.

    Sedan klart man går tillbaks och fixar till det, om man är där inne och kodar igen alternativt om man får tid över.

    Jag är allergisk mot dålig kod och folk får ofta höra det men jag kan inte förneka att jag då och då hackar till en lösning.
     
  10. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Det finns väl mellanting? Allt man gör behöver ju inte vara finkod eller fulkod, och som jag sade, om det är motiverbart med fulkod, t.ex produktionssystemet är nere och man måste få in en patch, så tuta och kör. Bättre det än att förlora pengar, men att sedan tänka "jag gör en finare lösning senare någon gång" brukar betyda att "någon gång" aldrig inträffar.
     
  11. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Nope, inga mellanting ;)

    Men vi tycker nog ungefär samma.
     
  12. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Jupp :)
     
  13. r0bber

    r0bber Teen Droid Medlem

    Blev medlem:
    30 jun 2009
    Inlägg:
    407
    Mottagna gillanden:
    9

    MINA ENHETER

    För att styra tillbaka tråden i dess rätta riktning så vill jag bara säga att det är väldans skillnad på att lära sig programmera och att lära sig programmera.

    Om vi utgår från att trådskaparen vill kunna skriva några haxx till android så funkar det nog med att börja med nån bok i grunder om java och sen köra lite tutorials. Sen är det bara att vara envis och prova på massa saker.

    Nu vet jag ingenting om hans bakgrund, men om han vill bli programmerare så är det nog bäst att gå en datateknisk utbildning dels på gymnasiet men framförallt på universitet. Detta ger dock bara en bra grund att stå på, för att bli duktig så måste man hacka, hacka och återigen hacka.

    Har själv alldeles snart en civilingenjörsexamen inom datorteknik och jag känner att jag har en ganska god grund att stå på, men samtidigt så känns det som att jag inte kan ett skvatt!

    Vill bara avsluta med att jag inte vill skrämma nån från att börja programmera, utan det går ganska lätt att bara börja haxxa lite, och göra ändringar i redan färdiga program exempelvis är inte så svårt. Vill bara belysa att ämnet är betydligt mycket större än vad man först kan tro.
     
  14. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Å andra sidan är det många som läst på universitet och annat och inte kan ett skvatt heller. Jag kunde mer innan jag började på univ än vad många kunde när de fått sin examen.

    Det som kan vara bra på univ är (beroende på om man går en bra eller skitutbildning) är att man har någon som har komponerat ihop lite vad som är bra att kunna som inte bara är de rent kodtekniska delarna.

    Någon med tålamod och intresse kan dock läsa sig till detta själv och/eller med hjälp av andra. Och det är det som skiljer de som blir bra och de som inte blir bra. Intresse.

    Vill man ha föreläsningar så finns det också, t.ex. http://webcast.berkeley.edu/courses.php (rekomenderar att kolla runt bland dem, finns mycket bra där och på andra ställen).

    Tycker standarden och kraven på de utbildningar som jag har erfarenhet av eller har kommit i kontakt med är alldeles för dåliga. Att det spottas ut dussinkodare är det inget snack om men de som blir duktiga där är fortfarande de som har intresse att lära sig och ta reda på saker själv, och de skulle nog lyckats även utan universiteten. Det finns också många bevis på det.

    Sedan att det kan göra det lättare att få ett jobb är inget snack om men det är en annan fråga.

    Jag vill inte avråda någon från att plugga på universitet alltså, jag hade både kul och lärde mig massa under tiden på univ, men det var mest genom att umgås med rätt folk och jobba ihop med folk som kunde utmana lite. Det hängde inte så mycket på kurserna som vi läste.
     
    Last edited: 15 jul 2009
  15. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Något som jag upplever som ett stort problem med lärare på högskolor/universitet är att de oftast har en stor teoretiskt kunskap, men liten erfarenhet av hur det verkligen går till ute i "riktiga" livet. I vissa fall är det t.om så att läraren lär ut något för att han måste (t.ex om han forskar) men egentligen inte intresserad av varken att lära ut eller det han just nu lär ut.
     
  16. kigurai

    kigurai Kid Droid Medlem

    Blev medlem:
    23 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    2

    MINA ENHETER

    Jag vill kontra med att säga att universitet gjort mig till en ruskigt mycket bättre utvecklare.
    Jag har alltid haft ett stort programmeringsintresse och kunde väl rätt mycket innan jag började för fem år sedan, men utan universitet tror jag inte att jag hade kommit så hemskt mycket längre än var jag var då.
    Från att bara varit bekant med imperativ programmering och lite objektorientering så har jag kunnat lägga till funktionell programmering till arsenalen.
    Jag har lärt mig om datastrukturer och tidskomplexitet.
    Jag har en matematisk grund som rätt så ofta kommer till användning.
    Jag har tvingats programmera på alla möjliga nivåer, från assembler, VHDL och mikrokod till Smalltalk.
    Jag har tvingats arbeta tillsammans med andra i större grupper och prövat att vara projektledare.
    Jag har lärt mig om utvecklingsprocesser.

    Och det där är inget jag skulle lärt mig på egen hand direkt :)
     
  17. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Yep, precis.

    De är de värsta, som blir tvingade till att föreläsa för att de skall kunna forska vidare. De har inget intresse av att lära ut, de är väldigt opedagogiska och rabblar mest för att få det överstökat.
     
  18. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    @kigurai

    Ingen har sagt att du blir sämre utvecklare av att plugga :)

    Däremot hade du kunnat lära dig allt det där i arbetslivet och/eller genom att vara med i opensource projekt samt communities.

    Jag började också programmera långt före högskolan, och ja, jag lärde mig nyttiga saker på högskolan, men majoriteten av mina kunskaper har jag fått efter det. Ett år i arbetslivet ger enligt mig mycket mer är ett års studier.
     
  19. kigurai

    kigurai Kid Droid Medlem

    Blev medlem:
    23 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    2

    MINA ENHETER

    Nej, det är jag medveten om :P

    Jo, många säger det, men jag tror faktiskt inte på det. Jag tror givetvis att man kan lära sig mängder med saker på det sättet också, men ett universitet är tvingande på ett helt annat sätt.

    Rent programmeringsmässigt (språk, syntax, specifika teknologier) så håller jag helt med dig. Personligen så finns det som sagt fortfarande väldigt många grejer som jag inte tror att jag skulle lära mig i arbetslivet på väldigt länge.
    Men det kan ju vara stora skillnader mellan utbildningar också. Det finns säkert utbildningar som är relativt värdelösa ;)
     
  20. Smergo

    Smergo Kid Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    96
    Mottagna gillanden:
    0

    MINA ENHETER

    Det säger fortfarande inget om hur vida det är möjligt eller inte att lära sig på egen hand, utan bara vad du personligen inte skulle lärt dig om det inte vore för universitetet. Det är dessutom precis det jag säger, fördelen är kanske att någon har funderat lite och komponerat ihop vad som kan vara relevant att lära sig (om man har tur), men det kan man göra själv eller ta hjälp av andra för att göra också.

    Har man ett intresse av att bli utvecklare och inte bara programmerare så finns det oändliga källor för allt det du listade utanför de svenska universiteten. Dessutom finns det oändligt med tillfällen att prova på att jobba i olika typer av projekt.

    Samtidigt är det många som går på universitet som inte har något direkt intresse och tycker allt det du listade är orelevant för Visual Studio minsann visar vad man behöver göra och C# är det enda som behövs. Dessutom kan man alltid köpa mer minne och snabbare processor om det man gör är för långsamt. Sedan går det alltid att bli godkänd i kurserna ändå.

    Universitetsutbildning är ingen garanti för något, bara det jag vill säga.