MrBjoern Skrevet 30. mars 2006 Del Skrevet 30. mars 2006 Jeg er helt noob på alt av programering. Er C eller C++ et greit språk og lære for nybegynnere? Vis ikke kan noe anbefale et som er ok og begynne med? Lenke til kommentar
GenericName Skrevet 30. mars 2006 Del Skrevet 30. mars 2006 (endret) ... Endret 12. januar 2011 av Token Lenke til kommentar
Squirrel Skrevet 30. mars 2006 Del Skrevet 30. mars 2006 Jeg begynte med C. Som prog master sier, det er greit om du er motivert nok. Ikke gi opp om det er noe du ikke skjønner, da spør du heller eller forsøker å finne det ut på egen hånd, ved å lese flere ganger. Anbefaler "C programming" av Larry Ullman og Marc Liyanage, det er en fin innføring som forklarer raskt og forståelig. Senere vil du kanskje lese noe som er mer utfyllende og litt mer avansert, som også forklarer på en fin måte. Da anbefaler jeg "Programming in C" av Stephen G. Kochan. Nydelig bok. Lykke til! Lenke til kommentar
dayslepr Skrevet 30. mars 2006 Del Skrevet 30. mars 2006 (endret) C er fint til programmering av ting nært opp mot OS og maskinvare - siden disse tingene også (vanligvis, men ikke nødvendigvis - det gjelder alikevell Linux og Windows) er skrevet i C. Dette er hovedgrunnene til å lære C, i tillegg til at det finnes et par gode biblioteker skrevet i språket. Tenk litt på hva du skal lage i fremtiden; om du f.eks. kunne tenke deg å lage en webapplikasjon passer ikke C i det hele tatt. Om du skal lage et kortspill e.l. ville jeg heller ikke brukt C; det finnes mye bedre alternativer til dette. Grunnen til dette er at slike ting tar urimelig lang tid å skrive i C. Det handler ikke lengre om motivasjon her, men et valg ang. om du klipper fotballbaner med negleklipper eller ikke. Motivasjon når man skal lære trengs så klart, men motivasjon i gal retning når man skal bruke er galskap eller rett og slett idioti. C passer til ting som må kjøre så kjappt som mulig, som f.eks.: * 3D-motor, * en/decoder av lyd/bilde, * komprimering av data * ..og til ting som tar i bruk (ofte) OS-spesifike ting som ikke er tilgjengelig i høyereliggende biblioteker (ennå). ...men lær C - det anbefalles på det sterkeste, bare ikke bruk det til gale ting; hopp i stedet rett over til et høynivå-språk så fort du merker du er «moden». Greia er nemlig at du kan kalle ting skrevet i C fra høynivåspråk (du må kunne en del C for å få til dette), og at du da kan få alt i pose & sekk. Da har du kunnskap om hvordan du får tilgang til OS/maskinvare-spesifike ting, i tillegg til at du kan kode i et språk et par «lysår over» C. edit: Jeg ville faktisk satset på C fremfor C++ (som er ment å være en mer høynivå-versjon av C), og siden hoppet over C++ i de fleste sammenhenger. Unntaket er muligens om du skal skrive hele spill; der er det fortsatt vanlig å bruke C++, men til omtrent alt annet (IMHO) er C++ et dårlig alternativ når man skal kode på et høyere nivå enn C. edit2: Jeg lærte C fra denne: http://www.amazon.com/gp/product/013110362...7053273-4738217 .. som er skrevet av de som "fannt opp" C. Endret 30. mars 2006 av dayslepr Lenke til kommentar
Mr.Garibaldi Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 Jeg ville nok heller valgt å begynne med C++, da det er mye mer objekt-orientert (OO)enn C, noe som er et stort pluss. Hvis du lærer deg C først blir du vant til å bruke en procedural tilnærming (sorry, vet ikke hva som er det korresponderende ordet på norsk), mens de fleste i dag bruker en objekt orienterte tilnærming. Og siden det ofte er vanskelig å lære seg OO etter å ha lært seg procedural, så ville jeg satset på et OO basert språk. C++ er ikke ideélt for det, men er mye bedre enn hva C er. Lenke til kommentar
dayslepr Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 tja, man lærer sjeldent OOP-biten i starten uansett; så det er ikke noe argument for å satse på C++ .. se bare på hvordan kapitler i bøker er oppdelt; OOP kommer sent, og det er ikke tilfeldig om man skal jobbe objektorientert er det lurere å satse på et annet språk, som du nevner indirekte på slutten .. det er akkurat derfor det kan være greit å satse på C fremfor C++; C er mye lettere å kalle fra andre språk (for ikke å si i det hele tatt mulig; uten å skrive wrappere that is) .. dette gjør at C++ i bunn og grunn er bortkastet tid å lære seg m.t.p. den halvveise OOP-støtten og de latterlige metaprogrammeringsmulighetene (templates); man hadde spart _masse_ tid på å hoppe rett på et språk som ikke er halvferdig her i grunn synes jeg C++ burde fallt på utsiden av hele ligningen; bortsett fra i større spillsammenhenger kanskje hm, bare legge til at dette kommer ikke fra en som er bitter «fordi han ikke fikk det til»; men fra en som har fått det til - for så å gått videre og samtidig innsett at C++ var «bortkastet tid» .. hadde jeg kunnet reise i tid så hadde jeg reist tilbake og fortalt meg selv alt dette! nei, språk som forsøker (og misslykkes) i å slå flere fluer i en smekk trengs ikke; man bruker i stedet spesialiserte språk som f.eks. C til sitt, og eventuellt kaller det fra andre språk som er spesialtilpasset ting på et helt annet nivå .. my 2 cents Lenke til kommentar
Mr.Garibaldi Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 tja, man lærer sjeldent OOP-biten i starten uansett; så det er ikke noe argument for å satse på C++ .. se bare på hvordan kapitler i bøker er oppdelt; OOP kommer sent, og det er ikke tilfeldig om man skal jobbe objektorientert er det lurere å satse på et annet språk, som du nevner indirekte på slutten .. det er akkurat derfor det kan være greit å satse på C fremfor C++; C er mye lettere å kalle fra andre språk (for ikke å si i det hele tatt mulig; uten å skrive wrappere that is) .. Du har et poeng der. Jeg lærte Java først, noe som gjorde at jeg også lærte OO ganske tidlig, siden det er noe vanskelig å utnytte java full-godt uten... Men vil fortsatt påstå at det er greiere å lære seg OO jo tidligere man begynner med det, enn å vente til man har vent seg til et helt annet programmerings paradigme. (I og for seg det samme når det gjelder concurrent programming, som kan være (forholdsvis) lett eller &%/#"%" vanskelig, alt avhengig av tilnærmingsmåten...) Jeg ville derfor anbefalt noe helt annet enn et C basert språk som det første, men siden han lurer på C eller C++, så synes jeg C++ er et bedre valg. Kjenner ikke nok til forskjellene mellom å kalle C og C++ fra andre programmer til å kunne si noe om forskjellene der... dette gjør at C++ i bunn og grunn er bortkastet tid å lære seg m.t.p. den halvveise OOP-støtten og de latterlige metaprogrammeringsmulighetene (templates); man hadde spart _masse_ tid på å hoppe rett på et språk som ikke er halvferdig her i grunn synes jeg C++ burde fallt på utsiden av hele ligningen; bortsett fra i større spillsammenhenger kanskje Synes nå det er ganske greit til 3D-programmering, noe som hadde vært mye kjedeligere uten klasser eller operator overlasting... Ellers sparer det deg i stor grad for å gjenoppfinne kruttet, gjenoppdage Amerika, etc., grunnet standard biblioteket. Dette gjør at mye av C++ programmeringen enklere enn hva tilfellet er i C, og det er mange fordeler (og ulemper) med templates. (Men har blitt tatt mange ganger før, og trengs ikke gjentas i større grad her) nei, språk som forsøker (og misslykkes) i å slå flere fluer i en smekk trengs ikke; man bruker i stedet spesialiserte språk som f.eks. C til sitt, og eventuellt kaller det fra andre språk som er spesialtilpasset ting på et helt annet nivå .. my 2 cents 5843003[/snapback] Nå er vel kanskje ikke akkurat C det beste eksempelet på et spesialisert språk.... Det er vel snarere et av de mer generelle språkene du kan bruke til nesten hva du vil, om enn noe knotete uten bruk av 3de parts biblioteker... Poenget mitt er vel egentlig at C er lav-nivå, noe som gjør at man enten finner opp kruttet gjentatte ganger, og at det kanskje kan være en ide å starte med et litt høyere nivås språk, før man går ned i dybden. For selv om det kan være matnyttig å vite hva som foregår under panseret, så trenger man ikke nødvendigvis å begynne med det... Lenke til kommentar
Klette Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 Men du kommer ikke bort fra at C++ er en mellomting... C++ er vel greit nok når man trenger å presse max hastighet ut av et litt større system (les: 3d-motor e.l.) - Men med mindre man skal det, så er andre språkene mye bedre (imo). Men til trådstarter, hvis du begynner med programmering i sitt hele nå, vil jeg kanskje anbefale deg å ta en titt på Python evt Lisp (hvis du sitter i linux). Skal du drive med programmering videre, kommer du nok ikke unna å lære litt C evt C++, men ikke gidd å bekymre deg over slike ting med en gang.. Når man starter skal det være moro å programmere. (interessen for lav-nivå programmering, minnebehandling osv kommer som regel litt senere).. Lykke til i alle fall Lenke til kommentar
dayslepr Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) dette gjør at C++ i bunn og grunn er bortkastet tid å lære seg m.t.p. den halvveise OOP-støtten og de latterlige metaprogrammeringsmulighetene (templates); man hadde spart _masse_ tid på å hoppe rett på et språk som ikke er halvferdig her i grunn synes jeg C++ burde fallt på utsiden av hele ligningen; bortsett fra i større spillsammenhenger kanskje Synes nå det er ganske greit til 3D-programmering, *snip* Ja, det er jeg enig i; altså i sammenhenger der man både /må/ ha mest mulig hastighet og i tillegg lager såpass store programmer at man trenger litt høynivå-stuff er C++ noen ganger den eneste muligheten. (Selv om endel av de «store» har begynnt å bruke andre ting der også!) nei, språk som forsøker (og misslykkes) i å slå flere fluer i en smekk trengs ikke; man bruker i stedet spesialiserte språk som f.eks. C til sitt, og eventuellt kaller det fra andre språk som er spesialtilpasset ting på et helt annet nivå .. my 2 cents 5843003[/snapback] Nå er vel kanskje ikke akkurat C det beste eksempelet på et spesialisert språk.... Det er vel snarere et av de mer generelle språkene du kan bruke til nesten hva du vil, om enn noe knotete uten bruk av 3de parts biblioteker... Åh, jo - C er veldig spesialisert; det kalles ikke "portabel assembly" uten grunn. Som du (igjen indirekte) nevner under er det spesialtilpasset programmering nært opp mot maskinvare (og OS). Finnes det noe annet språk som er mer spesialisert til akkurat dette enn C? edit: Det er når man misbruker det det blir knoete - da bør man begynne å tenke på å kalle C fra et annet språk! Poenget mitt er vel egentlig at C er lav-nivå, noe som gjør at man enten finner opp kruttet gjentatte ganger, og at det kanskje kan være en ide å starte med et litt høyere nivås språk, før man går ned i dybden. For selv om det kan være matnyttig å vite hva som foregår under panseret, så trenger man ikke nødvendigvis å begynne med det... 5844845[/snapback] Selvfølgelig; men hvorfor ikke hoppe over C++ og rett på noe som gjør jobben med «helveis»? (unntakene har vi nevnt) -- altså om man først ikke er så interessert i å lære seg (for ikke å si bruke; les krutt på nytt!) under-panser-stuff .. Endret 31. mars 2006 av dayslepr Lenke til kommentar
themanfrom Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) Siden trådstarter har fått svaret sitt, og det bare er diskusjon slenger jeg inn et spørsmål: Hvis jeg skulle lage et program hvor du kan fylle ut tider og en "sang", hva vil anbefales? Programmet skal gjøre så mye som å: Være en slags alarmklokke, eller dag-kalender. Den skal spille av en sang(starte winamp, eller muligens lage en spilelr selv?) På et gitt tidspunkt, så skal det poppe opp en tekst som sier: Gjør deg klar til trening... Osv. Skjønner? Du skal kunne fylle inn/slette tidspunkt/tekst selv, og den skal selvsagt bruke windows sin klokke. Endret 31. mars 2006 av Patrick.M Lenke til kommentar
Emancipate Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 Men du kommer ikke bort fra at C++ er en mellomting... C++ er vel greit nok når man trenger å presse max hastighet ut av et litt større system (les: 3d-motor e.l.) - Men med mindre man skal det, så er andre språkene mye bedre (imo). Men til trådstarter, hvis du begynner med programmering i sitt hele nå, vil jeg kanskje anbefale deg å ta en titt på Python evt Lisp (hvis du sitter i linux). Skal du drive med programmering videre, kommer du nok ikke unna å lære litt C evt C++, men ikke gidd å bekymre deg over slike ting med en gang.. Når man starter skal det være moro å programmere. (interessen for lav-nivå programmering, minnebehandling osv kommer som regel litt senere).. Lykke til i alle fall 5845203[/snapback] Nå må folk stoppe å snakke om C som lavnivå. Assembly er lavnivå. Jeg vil ikke anbefale C++ til en nybegynner. Når det gjelder C er jeg litt i tvil. For å lage programmet med klokka og sangen vil jeg anbefale Delphi (dyrt men). Lenke til kommentar
GenericName Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) ... Endret 12. januar 2011 av Token Lenke til kommentar
themanfrom Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 Vel, jeg leste litt inn i Python tutorial, så skjønte jeg ikke en dritt. Bøker er nok det beste for meg, liker bøker. En god bok for non-programmer/nybegynner i python? Skal helst kunne kjøpes i norge, men amazon går jo. Lenke til kommentar
GenericName Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) ... Endret 12. januar 2011 av Token Lenke til kommentar
themanfrom Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) Nå har jeg lasta den ned, Sitter å ser på den as we speak. Vil printe ut gjemme meg, montro om den kommer til å sluke 1 blekkpatron og hvor mange sider?Edit: Doh, 104sider. Går på ungdomsskolen, kommer aldri å få lov til å printe ut. Ogpå biblioteket koster det 2kr papiret. Endret 31. mars 2006 av Patrick.M Lenke til kommentar
Emancipate Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 C er nok ganske nærme lavnivå. 5846542[/snapback] C: #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } Python: print "Hello World" Assembly: format PE GUI section '.code' code readable executable start: push 0 push _caption push _message push 0 call [MessageBox] push 0 call [ExitProcess] section '.data' data readable writeable _caption db 'Win32 assembly program',0 _message db 'Hello World!',0 section '.idata' import data readable writeable dd 0,0,0,RVA kernel_name,RVA kernel_table dd 0,0,0,RVA user_name,RVA user_table dd 0,0,0,0,0 kernel_table: ExitProcess dd RVA _ExitProcess dd 0 user_table: MessageBox dd RVA _MessageBoxA dd 0 kernel_name db 'KERNEL32.DLL',0 user_name db 'USER32.DLL',0 _ExitProcess dw 0 db 'ExitProcess',0 _MessageBoxA dw 0 db 'MessageBoxA',0 section '.reloc' fixups data readable discardable Døm selv: Ligner C-versjonen mer på Python eller Assembly? Lenke til kommentar
dayslepr Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 ..kanskje du burde titte på hva C-versjonen genererer av (relevant, altså ikke boilerplate) ASM-kode....? ..men om man ikke engang fattet dét i utgangspunktet, er dette trolig bortkastet tid.. (eller et latterlig forsøk på trolling eller å "imponere" ) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå