Programmerings bog

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Programmerings bog

Unread post by deriode » 04 Jan 2009, 19:52

Hej

Jeg har tænkt mig at prøve, at blive spiludvikler. Jeg har ingen programmerings erfaring, derfor har jeg brug for hjælp til at finde ud af, hvad det er jeg skal købe. Kan nogle anbefale mig en bog?

Jeg har selv tænkt C++ grundbog, men da jeg ikke rigtig har fundet nogle anmeldelser, kunne jeg godt bruge nogle til at hjælpe mig.

På forhånd tak

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 05 Jan 2009, 10:36

Der er jo sprog nok at vælge af, så det er måske bare et spørgsmål om at finde den tilgang der er nemmest for dig.

Jeg kan forstå at det er et selvstudie du vil i gang med, så det gælder nok om, at finde et sprog der ikke er alt for indviklet og svært at tilgå. Jeg har selv haft stor glæde af at starte med Java, så det kan jeg godt anbefale. En af fordelene er, at man kan fremstille noget pænt og brugbart forholdsvist hurtigt. Desuden indføres man nærmest automatisk i Objektorienteret tankegang og design.

Til trods for Java's lidt blakkede ry indenfor spilprogrammering, så egner Java sig faktisk udemærket til at lave spil med. Der findes utallige open source java spil (både 2D og 3D), som kan bygge videre på, eller bruge som ledetråd.

Der er forskellige meninger om Java's anvendelighed som begyndersprog. Det fremlægges at den studerende ikke kommer dybt nok ned i det helt grundlæggende, fordi Java er hvad der kaldes et højniveau sprog. Det er nok også rigtigt, men jeg syntes det opvejes af muligheden for hurtigt at lave forholdsvis "avancerede" programmer. Hvis du fortsætter med programmering, så vil du støde på disse grundlæggende ting hen ad vejen alligevel.

Til undervisningsbrug mener jeg faktisk også at man bør starte med en lavniveau sprog, men som selvstudie vil jeg klart anbefale Java.

Sprog er gået hen og blevet lidt præget af en fanboy kultur, hvor programører mener at lige præcis deres ynglingssprog er det bedste. Det udkæmpes indimellem hårde forum-kampe mellem de forskellige sympatisører. Det er dog værd at huske på, at et programmeringssprog er et værktøj. Det vil sige at man bør benytte det sprog der passer bedst til den specifikke opgav (så man skal altså helst kunne flere sprog). Du vil jo heller ikke grave et hul med en hammer – selvom du måske syntes hammeren er ret fed.

C++ er det mest udbredte sprog indenfor professionel spilprogrammering, så hvis du har drømme om en karriere som spilprogrammør er der ingen vej udenom (det er dog umiddelbart ikke så nemt at komme i gang med som Java). Du skal dog regne med, at der hvert år uddannes flere hunderede programmøre af forskellig art (Dataloger, Datamatiker, it-ingeniører osv). Det er dem du kommer til at kæmpe om ansættelse med og uden papirer står du dårligere ved jobansøgninger.

Medmindre du er kanon god til engelsk, så bør du starte med en bog på dansk. Der er ingen grund til både at kæmpe med sproget og med sproget....øøhhhhh!

Jacob Nordfalk har skrevet et par rigtig gode danske bøger om java:

http://javabog.dk/

Det er vist stadig muligt at downloade grundbogen gratis, men ellers er den pengene værd.

Held og lykke

User avatar
Wikzo
Level 19 - Wario
Posts: 196
Joined: 25 Oct 2008, 14:17
Location: Aalborg
Contact:

Re: Programmerings bog

Unread post by Wikzo » 05 Jan 2009, 12:21

Jeg lånte engang Javabog på biblioteket. Gik dog hurtigt død i den ...

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 05 Jan 2009, 13:13

Wikzo, det ville måske være en ide, hvis du uddybede hvorfor du gik død med javabogen. Var der selve bogen, eller var det sproget java?

User avatar
Wikzo
Level 19 - Wario
Posts: 196
Joined: 25 Oct 2008, 14:17
Location: Aalborg
Contact:

Re: Programmerings bog

Unread post by Wikzo » 05 Jan 2009, 15:09

Jeg tror, jeg gik død i lidt af det hele. Har aldrig programmeret før. Bogen var let nok i starten, men så steg sværhedsgraden lige pludselig, så jeg ikke kunne finde ud af det længere. Desuden havde jeg lidt problemer med at få det til at virke på Ubuntu Linux, og til sidst droppede jeg det hele pga. mangel på tid og lyst.

Jeg vil dog gerne i gang med den igen på et senere tidspunkt, når jeg får lidt mere tid til overs, så jeg kan fordybe mig i programmering.

Lad vær med at blive skræmt af mit indlæg; du kan sagtens låne/købe/downloade Javabogen og få en masse ud af det. Jeg orkede det bare ikke på daværende tidspunkt.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 05 Jan 2009, 16:09

Hey folks :-)

Først vil jeg sige: Tak for svarene.

For det andet, så løj jeg en smule. Jeg har en lille smule programmerings erfaring, i Java. Brugte lige præcis Jacob Nordfalks bog, men kig desværre også ret hurtigt død i den, da både sværhedsgraden steg, men også da jeg fra mange steder fik at vide, at Jave er i dags dato et ubrugligt sprog.

Men jo, jeg har bogen, men gik død i den for omkring 6 måneder siden og er ikke rigtig kommet videre. Det skal så også siges, at jeg er 15 år gammel og går i 9. klasse, men vil gerne i gang med lidt programmering.

Så har jeg også lige et spørgsmål: Hvad skal man tage efter 9. klasse? Personligt hader jeg fysik/kemi og bioligi, så HTX er nok udelukket.

På forhånd tak :-)

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 05 Jan 2009, 18:42

Man skal ikke forvente at programmering kommer nemt - det er nemlig svært!

Jeg kan sagtens forstå oplevelsen med at sværhedsgraden stiger kraftigt, men jeg har endnu ikke set bøger uden den stigning. Man kan nemlig ikke lave så meget med de nemme og åbenlyse ting. Man skal derfor ikke være ked af at læse et kapitel mange gange, før man har forstået indholdet.

Hvis der er problemer med at forstå og benytte Java, så er det mulig ikke programmering man skal tage som selvstudie. Langt de fleste har behov for reel undervisning for at forstå programmering.

Java er bestemt ikke ubrugeligt, hverken nu eller om 5 år. Det anvendes utrolig mange steder og er under konstant udvikling. Man skal huske, at der hele tiden udvikles nye sprog, fordi der hele tiden kommer nye opgaver der kræver sprog med andre styrker. Derfor er der altid dele af et sprog, som ikke længere er helt på toppen. Java indeholder teknologier der sjældent benyttes, fordi der nu findes sprog der er bedre til netop de opgaver, men sproget som helhed fejler intet.

For tiden er det nok C# der er mest efterspurgt. Måske fordi det er så tæt knyttet til Microsoft og Windows. Det ligner faktisk Jave en hel del, men det er ikke platformuafhængigt ligesom Java. Med Java i baglommen er det ikke noget problem at lære C# (eller omvendt vil jeg skyde på).

Matematik og engelsk er nok de vigtigeste færdigheder, som du kan hive med fra folkeskolen. Fysik er heller ingen skade, men ikke så vigtig (i mine øjne) som de to andre. En god indgang ville være en matematisk studentereksamen, eller HF med vægt på matematik.

Der er en hel del uddannelser, hvor man lærer at programmere. Det er vigtigt at se på hvad man vil satse på. Datamatikkeren er den hurtige vej, men de kommer ikke så dybt ned under koden og de mere kode-teoretiske dele. Derimod lærer de en del om de processer softwareudvikling består af. Desuden er det reel undervisning ligesom i folkeskolen (det er altså ikke forlæsningsbaseret). Ydermere giver en datamatikeruddannelse merit, så du kan springe 1-2 år over, hvis du vælger at læse videre (på uni eller teknikum).

Hvis du ikke har travlt, så foreslår jeg en af de længere uddannelser. Enten datalog, eller It-ingeniør. Der er en del at vælge imellem og der kommer nok flere inden du er færdig med gym/HF.

Til Wikzo: Der var vist nogle problemer med at installerer Java på de tidligere udgaver af Ubuntu (jeg havde om ikke andet problemer, da man skulle godkende brugeraftalen hang den). Jeg har netop installeret Java på Kubuntu 8.10 og der var let som ingenting, så prøv igen.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 05 Jan 2009, 19:14

Hej MONDARIZ.

Tak for svaret :-)

Altså, når jeg nu engang er færdig med uddannelse osv. så vil jeg helst ende som en spilprogrammør. Har overvejet en STX med vægt på Engelsk og Mat, hvis det da kan lade sig gøre.

Bagefter, på universitet og læse Datalogi.

Men nu til programmering.
Faktisk, så ikke bare lånte jeg, men købte jeg Jacob Nordfalks bog. Jeg gik somsagt bare tøt i den. Dit råd ville være at køre videre med den?
Faktisk ved jeg ikke så meget om programmering. Forstår ikke ret meget af det med, at et sprog kan noget specifikt og er hurtigere end et andet sprog osv. Men det kommer som man lærer et programmeringssprog?

På forhånd tak :-)

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 05 Jan 2009, 20:29

Programmering er problemløsning.

Sproget er en af de ting man benytter til at løse problemet. Det er ikke for ingenting, at det kaldes et programmeringssprog, for det kan sammenlignes med talte sprog på flere måder.

Det nytter ikke noget bare at kunne nogle ord, men skal kunne sætte dem sammen til sætninger, gradbøjde dem og ikke mindst selv forstå dem.

Når man starter med at programmere er der utrolig mange ting man ikke forstår, men ligesom med det talte sprog, så begynder det at give mening efterhånden som man benytter det. Jeg tror ikke der er mange programmører der ikke jævnligt lærer noget nyt, eller har sig en Aha oplevelse. Området er så stort, at det er meget svært at vide det hele, eller bare vide lidt om det meste. Faktisk er det heller ikke nødvendigt.

Hvad de enkelte sprog kan, eller hvor hurtige de er, er ikke noget du behøver hænge dig i. De programmer du kommer til at lave de første mange år, de er ikke så komplekse at du behøver tage højde for den slags.

Jeg vil mene, at det er vigtigt du får gang i noget, hvor du kan se et resultat forholdsvist hurtigt (altså kørende software). Når du så har lavet nogle små programmer, så kan du altid hægte mere advancerede ting på (så som databaser, netværk, osv).

Det er en fordel at forståelsen følger med fremstillingen. Meget ofte kan man copy/paste kode fra eksempler i bøger, eller på nettet, men det giver ikke nødvendigvis en forståelse for hvad man laver. Der er intet galt i at kopierer kode (faktisk er de fleste moderne sprog opbygget så man nemt kan genbruge kode), man skal bare huske at forståelsen følger med.

Hvis du virkelig vil have en forståelse for de dybere teknologier/teorier for programmering, så er det måske slet ikke så dårligt at starte med en gammel 80'er bog om BASIC (eller ligefrem Assembly) og arbejde med en 8bit emmulator, eller en rigtig 8bit maskine. Dengang i 80'erne var teknologien meget tættere på og det var ikke uhørt, at folk selv byggede deres maskiner. Men det er altså overhoved ikke nødvendigt at forstå teknologier på det niveau.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 05 Jan 2009, 20:35

Hej MONDARIZ

Så tror jeg da jeg vil gå igang i med at repitere det glemte i Java. Desværre bliver det nok svært, da jeg tror for mit vedkomne at der skal investeres en god portion tid i det, og det er ikke det man har mest af i 9. klasse. Desværre tror jeg ikke det bliver bedre hvis/når jeg kommer på STX.

Men igen, tak for svaret.

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 05 Jan 2009, 20:53

Hej igen,

Du har jo heller ikke travlt.

Hvis du om nogle år starter på datalogstudiet med en grundlæggende forståelse for programmering, så er det jo en kæmpe fordel. Det er bedre at virkelig vide en smule, end at være halvstuderet i en kæmpe bunke.

Tag dig den tid det tager...hvis du vil lave spil i mellemtiden, så findes der flere meget simple værktøjer, hvor man ikke behøver meget programmering. De kan naturligvis ikke lave advancerede spil, men de kan give dig en forståelse for hvordan man udtænker et godt spil.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 05 Jan 2009, 22:06

Hej igen

Nej, jeg har som sagt ikke travlt ;-) Læseferien skal jo også bruges på andet, end at læse lektier ;-)

Sidste vil jeg lige spørge, om jeg må kontakte dig via Mail eller noget lign. hvis jeg for nogle spørgsmål, angående Java eller programmering generelt?

På forhånd tak

User avatar
vonknut
Level 78 - Basher of noobs
Posts: 822
Joined: 14 Mar 2008, 16:34
Location: CPH

Re: Programmerings bog

Unread post by vonknut » 06 Jan 2009, 00:46

Ikke for at være religiøs, da jeg ikke selv programmerer, men eftersom jeg til dagligt arbejder med mobil-udvikling, så kan jeg da sige at Java på ingen måde er dødt. -det er det mest brugte sprog til udvikling af applikationer der skal kunne virke cross-platform (læs: dvs. stort set alle comsumer apps).

Der er vel også en grund til at f.eks. diplomingeniører fra DTU arbejder meget med Java.
-og Datamatikere ikke at glemme...

Og så er der hele java-spil aspektet (hvis flash er for bøsset, men man godt vil lave web-spil).
Hans von Knut Skovfoged - Creative Dir.
PortaPlay - Interactive Entertainment and Learning

Zee
Level 22 - Imp
Posts: 229
Joined: 10 Mar 2008, 10:40

Re: Programmerings bog

Unread post by Zee » 06 Jan 2009, 10:09

vonknut: Dem der planlægger uddannelsen på DTU syntes at det var en god idé at man skulle starte med at lære programmering i et objekt-orienteret sprog (C# fandtes ikke dengang) og det behøvede ikke at være for avanceret (C++)... Og jeg er faktisk enig i at det var et fint valg dengang. Men hvis man skulle vælge i dag var det meget muligt at C# ville blive valgt istedet. Og nu kan man jo også lave simple spil og RIA i Silverlight og derved C#, eller man kan lave lidt mere avancerede spil i XNA (C#).
Ja jeg kan godt li´ C# :lol:

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 06 Jan 2009, 11:11

deriode: Du er velkommen til at sende mig en mail herinde, men hvis du har spørgsmål så er det nok bedst du stiller dem i forum. Så er der nemlig også andre der kan svare.

Som du kan læse i de forskellige indslag, så er det Java eller C# der anbefales som begyndersprog. Betegnelsen begyndersprog skal ike forstås som nogert der er dårligere end noget andet. Det er simpelthen bare et sprog der giver en god indføring i programmering.

Uanset hvilket sprog du vælger, så tror jeg det er en god ide, hvis du forsøger at forstå hvad objektorienteret programmering egentlig er, før du kaster dig over dit første program. Det vil spare dig for en masse hovedbrud senere.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 06 Jan 2009, 19:21

Tak for svar :-)

OOP er noget hvor programmet er delt op i objekter? Kan ikke helt forstå det, men det kommer vel :-) Vil prøve at læse lidt mere om det, men http://da.wikipedia.org/wiki/Objektorie ... grammering har ikke hjulpet ret meget på forståelsen af OOP.

Zee
Level 22 - Imp
Posts: 229
Joined: 10 Mar 2008, 10:40

Re: Programmerings bog

Unread post by Zee » 07 Jan 2009, 10:19

deriode: Ja kort fortalte så handler det om at man inddeler ens program/data i objekter. Hvis man f.eks. har et bil-spil så er hver bil f.eks. et objekt, og sådan et objekt har forskellige properties (f.eks. top-hastighed, farve, mærke osv.) og forskellige funktioner (f.eks. start motor, drej til højre, åben dør osv.). Man arbejder med de her objekter for lettere at kunne overskue al koden og hele domænet man arbejder med, og for lettere at kunne genbruge kode. F.eks. er en vigtig del af OOP nedarvning hvor flere forskellige objekter dele sammen kode. For at genbruge bil-eksemplet så kunne man have en overordnet klasse der hed "Vehicle" som både blev brugt af biler, motorcykler og fly. Og i Vehicle kunne man f.eks. have top-hastighed og vægt som properties, da alle de 3 under-typer ville have disse egenskaber til fælles (selvfølgelig med forskellige værdier). På den måde slipper man for at skrive/have den samme kode flere forskellige steder og derved bliver ens program lettere at overskue/vedligeholde.

Både Java, C++ og C# er objektorierented sprog, C er det ikke.

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 07 Jan 2009, 10:55

Det er ikke nødvendigt at forstå OOP 100%, men da det hænger ubrydeligt sammen med Java, så bør indlæringen af de to ting hænge sammen.

User avatar
Wikzo
Level 19 - Wario
Posts: 196
Joined: 25 Oct 2008, 14:17
Location: Aalborg
Contact:

Re: Programmerings bog

Unread post by Wikzo » 07 Jan 2009, 17:24

Er det rigtigt forstået, at objektorienteret programmering handler om en slags skabelon eller grundstruktur, som kan genbruges på forskellige måder?

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 08 Jan 2009, 10:25

Ja, det er ikke helt forkert, men OOP er faktisk mere end det. Det er en tilgangsvinkel til software fremstilling.

Genbrugeligheden er et resultat af OOP, men det er ikke dens egentlige mål. Målet er at opdele problemløsningen i små selvstændige bidder kaldet objekter. Det er disse objekters tilstande og egenskaber der er kernen i OOP. Modsat tidligere tankegange handler OOP mere om at definerer data end logisk bearbejdning af data. Men den sætning giver nok ingen mening, hvis man kommer udefra.

En klasse er den kode man skriver for at skabe objekter (den skabelon du selv omtalte).

Det er ikke nødvendigt at forstå OOP til bunds før man kan skrive kode, men det er en god ide, hvis man sørger for at sætte sig ind i OOP samtidig med at man lærer at skrive kode.

Her er en gennemgang fra Sun:

http://java.sun.com/docs/books/tutorial ... index.html

MONDARIZ
Level 2 - Grain of sand
Posts: 21
Joined: 08 Jul 2008, 10:23

Re: Programmerings bog

Unread post by MONDARIZ » 08 Jan 2009, 11:23

Jeg kan lige give en hurtig sammenligning der måske kan løfte sløret lidt.

I programmering benytter man en datatype der hedder String. En String er en ordnet sekvens af symboler, oftest et ord.

M O N D A R I Z

Umiddelbart kan denne String gemmes som en række hukommelseslokationer. Vi kan gemme M et sted og O et andet sted osv. Når vi skal bruge vores String, så læser vi hukommelseslokationerne i rækkefølge. jeg vil ikke komme nærmere ind på hvordan vi gemmer bogstaverne. Det er nok at vide de er gemt og kan hentes frem når der skal arbejdes med dem.

I OOP opretter man i stedet et String Objekt. Sådan et Objekt er ikke bare en liste over hvor de forskellige bogstaver er gemt, men et lille stykke program der selv kan behandle bogstaverne.

I Java kan man for eksempel spørge Objektet om det er identisk med et andet Objekt, eller man kan bede det ændre alle bogstaverne til små bogstaver.

Det er selvfølgelig ikke noget nyt at man kan sammenligne to ord i et computerprogram, men det er "nyt" at ordet selv kan gøre det. Uden OOP skal man læse begge ord ind og så selv skrive koden der sammenligner dem, eller i det mindste benytte en kendt funktion til at sammenligne dem.

Datastrukturen indeholder altså både data og de funktioner vi kan udfører på de data. Nærmest som et lille program i sig selv. Dette forhold giver en lang række fordele i forbindelse med design og programmering af software.

Det næste jeg skriver er ikke et praktisk eksempel, da man ikke kan benytte String på denne måde, men det kan vise hvordan man kan genbruge kode i OOP.

Hvis vi nu gerne vil have en String der kan noget mere end den gamle, så kan vi lave vores egen klasse der er en underklasse af String. Dermed arver klassen de metoder vores oprindelige String klasse har.

Class NewString extends String

Denne nedarvning, sammen med en række andre ting, gør softwarefremstilling en del nemmere. Selv om det umiddelbart kan virke ret forvirrende, så er det faktisk noget der gør programmering mere overskueligt.

I et spil kunne et Objekt være et rumskib. Dette rumskib skulle så selv undersøge om det er blevet ramt af skud, eller selv beregne sin position på skærmen. Der kunne så være en central del af spillet, som spørger rumskibet om det er blevet ramt, eller hvad dets position er, og derefter sørge for den grafiske fremstilling på skærmen.

deriode
Level 0 - Null
Posts: 7
Joined: 04 Jan 2009, 19:49

Re: Programmerings bog

Unread post by deriode » 20 Jan 2009, 18:06

Tak for svarene :)

Undskyld jeg ikke lige har fået svaret, det har gået lidt hurtigt her på det sidste :)

Jeg er kommet igang med Java, og jeg vil ikke så let give op denne gang ;)

Post Reply