Permalänk
Medlem

Lära sig C++ 2012

Hellu!
Det finns en hel uppsjö av resurser för att lära sig C/C++, men nu med nya standarden och åren som har gått så ställer jag mig lite frågande till i vilket ände jag egentligen ska börja? Jag kan de absoluta grunderna i C++ samt grundläggande OOP i Java.
C++ Primer Plus av Stephen Prata verkar ha fått helt ok kritik, är det nått att ha kanske? Eller är böcker öht överflödiga och de vettigare grejerna finns på det heliga internetz?
Jag vill ju liksom ha "hela" paketet även om jag förstår att det är lite omöjligt då jag antar att olika användningsområden skiljer sig rejält i hur saker utförs.

Permalänk
Medlem

Har inga böcker själv, men en någorlunda modern bok är nog bra att ha som referens och att bläddra i. För min del lär jag mig bäst genom att göra något mindre projekt, och löser problemen under vägens gång. Blir mkt mer motiverad då. Fast det är ju bra att ha lite översiktskunskap innan så man inte går i allt för många fällor.

Annars är cplusplus.com en jättebra sajt som kortfattat och enkelt förklarar grunderna (bland mycket annat). Det är oftast min första hållplats när jag letar efter grundläggande information/syntax etc.

Permalänk

Tyvärr är inte böckerna uppdaterade ännu för C++11, så det är lite segt att köpa en bok just nu (det kommer uppdaterade gissningsvis inom ett år). Iaf, så rekommenderar jag C++ Primer av Lippman. Bra bok med få fel. Alternativet om du är en grym C programmerare som skrivet tiotusentals rader C-kod innan är Stroustrups bok(C++ Programming language) Den är dock mycket svårare att komma in i och tar mycket längre tid att lära sig ifrån då den innehåller så mycket detaljer (bland annat om hur en C++ kompilator arbetar).

Visa signatur

Dator: i5-13600K, Asus Prime Z690-P, Noctua NH-D14, Kingston Fury Beast RGB 32GB DDR5-6000, Gigabyte RTX 4090 gaming OC, Seasonic Platinum SS-1000XP, Lian-Li Lancool 215, Samsung 980Pro 2TB M.2 NVME, Acer Predator XB323QKNV 4k 144Hz

Permalänk

Bok kontra internet är främst att du i boken får en färdig planerad resa. Du kan hitta guider på internet men oftast är det bara dokumentation om hur man utför en specifik sak.

Det är också mycket trevligare att läsa från bok än från skärm.

Jag skulle nog testa att sätta upp delmål som till exempel jag vill göra ett simpelt chat-program och sedan läser på om specifikt nätverk för att klara av det.

Skickades från m.sweclockers.com

Permalänk
Medlem

Eller så lär du dig inte C++ alls. Varför vill du lära dig just C++?

Permalänk

Om du kan grunderna så borde du kolla på STL: Containers (Standard Template Library: Containers).

Du skulle även kunna ta en titt på www.boost.org.

Det är Boost som C++ kommitten tittar när de väljer ut ny funktionallitet som kommer att införas i C++ STL. Om du istället skulle vilja ligga steget före;)

Permalänk
Medlem

Om du vill ha en bok kan jag verkligen rekommendera Professional C++
Den går på djupet och tar upp massor av godsaker från c++11

Permalänk
Medlem
Skrivet av tufflax:

Eller så lär du dig inte C++ alls. Varför vill du lära dig just C++?

Det området jag studerar i kommer förr eller senare kräva god kunskap inom C/C++ (datorgrafik och visualisering).
Finns det någon anledning till att jag INTE skulle lära mig C++?
Tack för tipsen hittils!

Permalänk

fredlovebot: Vilken metod lutar du mot?

Skrivet av erlc:

Om du vill ha en bok kan jag verkligen rekommendera Professional C++
Den går på djupet och tar upp massor av godsaker från c++11

"Appeals to experienced developers who are looking for a higher level of learning."

Jag uppfatta det som att han ville ha en nybörjarguide. Är du säker på att han klarar den? Hur är nivån?

Skickades från m.sweclockers.com

Permalänk
Medlem

Vet inte riktig vad du menar med metod.
Mer än en nybörjarbok så är jag ute efter något som är komplett. Som sagt, grunderna "kan" jag, men det hade inte skadat med en bok som faktiskt förklarar varför och går in på djupet. T.ex, en mattebok (tänk gymnasiekompetens) skulle kunna skriva nått i stil med "såhär löser du en diff.ekv av n-grad" utan att gå in på djupet om diff.ekv i sig, vilket gör det ganska meningslöst för att få en robust förståelse.
Det vill jag i största utsträckning undvika

Permalänk
Medlem

Prata-boken var utdaterad redan innan C++11 släptes. Jag har ingen direkt koll på "nybörjarböcker", men denna SO-tråd borde täcka in det mesta i bokväg.

Om du redan kan någon tidigare version av C++ tillräckligt bra går det nog klara sig utan någon bok, speciellt om du, som GainerPRO nämnde, redan använt t.ex. Boost. Wikipedia-artikeln om C++11 täcker nog det mesta av vad som är nytt, och Herbs något kortare sammanfattning Elements of Modern C++ Style är bra. Stroustrup har lite spridda notiser om olika saker också.

Angående någonslags referens så är cppreference.com mycket bättre än den tidigare föreslagna cplusplus.com (som inte ens verkar ha med C++11-saker). Men om allt annat misslyckas så är det nog standarddraften som gäller, ibland i kombination med "C++ Standards Committee Papers" (men standarden tenderar att vara ganska svårläst).

Hursomhelst, om du redan kan tillräckligt mycket C++ kan nog Meyers Overview of the New C++ i komination med några Google-sökningar vara tillräckligt. T.ex. är rvalue references ganska besvärligt och kan behöva några Google-sökningar extra. Men det går alltid att fördjupa sig i saker, t.ex. kan man vi första anblick tro det är svårt att ha en timmes lång talk om man initialiserar saker, eller för den delen, två timmar om lambdas. Eller kan man få för sig att skriva en bok om bara en delmängd av standardbiblioteket. När jag ändå håller på att ta med massor länkar kan jag passa på att nämna GoingNative 2012 också.

Att tänka på är att allt inte är implementerat i alla kompilatorer ännu heller.

Permalänk
Medlem

Tack för det utförliga svaret!
Jag borde förtydligat det i första inlägget, det handlar inte lika mycket om att lära sig den nya standarden utan snarare om att lära sig C++ på ett någorlunda modernt sätt. Det vore tråkigt att komma igång på allvar utan att inse att det man gör är helt passé eller i allmänhet bara dålig design/metodik.

Permalänk
Medlem

C++11 är egentligen inte mycket nytt som du kommer behöva i första taget, är bara småsaker som gör det ytterst fortare att koda, man kan ta genvägar.

Rekomenderar att ta en kurs på något universitet, finns några c++ kurser och är aldrig något problem att komma in. Jag har gått två c++ kurser på Uppsala universitet, distans. Troligen får du gå en fortsättningskurs.

http://www.uu.se/utbildning/utbildningar/selma/kursplan/?kpid...

Permalänk
Medlem

Var också sugen på att sätta mig in i alla C++11 features ordentligt förut och började läsa på, men det suget avtog snabbt när jag insåg att det inte finns någon kompilator som är i närheten av att vara komplett vad gäller stöd för allt det nya.

Klarar inte kompilatorn hela utvidgningen så får det vara för min del. Känns inte kul att jobba med någon halvfärdig betaversion.
Dessutom vill man ju inte att syntaxen plötsligt ändras i det man skrivit. Ett exempel på detta är Visual studios egen "for each" variant som skiljer sig från den gängse C++11 syntaxen.

Men som andra här skriver, C++11 tilläggen är mer finlir som man kan ha nytta av om man redan kan grunderna bra och vill skriva effektivare och snyggare program.

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Medlem
Skrivet av tufflax:

Eller så lär du dig inte C++ alls. Varför vill du lära dig just C++?

för att det utklassar alla andra språk när det gäller grafik

Ont om du vill hålla på med grafik så kan jag rekomendera den här snubbens guider
http://www.youtube.com/watch?v=0kpSiitk4eI&feature=bf_prev&li...
Riktigt bra guider för spel programmering

Permalänk
Medlem
Skrivet av JesperT:

Var också sugen på att sätta mig in i alla C++11 features ordentligt förut och började läsa på, men det suget avtog snabbt när jag insåg att det inte finns någon kompilator som är i närheten av att vara komplett vad gäller stöd för allt det nya.

Klarar inte kompilatorn hela utvidgningen så får det vara för min del. Känns inte kul att jobba med någon halvfärdig betaversion.

Om du menar läget nu så stämmer detta inte längre, t.ex. GCC stödjer ganska mycket.

Skrivet av JesperT:

Dessutom vill man ju inte att syntaxen plötsligt ändras i det man skrivit. Ett exempel på detta är Visual studios egen "for each" variant som skiljer sig från den gängse C++11 syntaxen.

Inte jätteallvarligt kanske, men eftersom att C++11-standarden nu är färdig och publicerad kommer detta inte hända längre.

Skrivet av JesperT:

Men som andra här skriver, C++11 tilläggen är mer finlir som man kan ha nytta av om man redan kan grunderna bra och vill skriva effektivare och snyggare program.

Mja, det är fortfarande C++ så klart, men man använder ändå alla nya saker hela tiden. Det märks kanske inte när man går från tidigare version -> C++11, men man saknar ganska mycket ganska snabbt om man istället går från C++11 till en äldre version.

Men om du menar är att det går att lära sig gamla C++ först, och sedan komplitera med de nya delarna efteråt utan allt för mycket besvär håller jag med.

Permalänk
Medlem
Skrivet av fredlovebot:

Det området jag studerar i kommer förr eller senare kräva god kunskap inom C/C++ (datorgrafik och visualisering).
Finns det någon anledning till att jag INTE skulle lära mig C++?
Tack för tipsen hittils!

För att C++ är onödigt komplicerat och det tar lång tid att få något gjort i det.

Permalänk
Medlem
Skrivet av fredlovebot:

Det området jag studerar i kommer förr eller senare kräva god kunskap inom C/C++ (datorgrafik och visualisering).
Finns det någon anledning till att jag INTE skulle lära mig C++?
Tack för tipsen hittils!

Jag har jobbat med datorgrafik som bl.a. utvecklare och kan med gott samvete säga att C/C++ är precis just vad som gäller, men det har du ju redan insett. Sen kan man argumentera om det är ett bra språk eller inte, men det är oväsentligt här. Man kan säga att det är ett bra språk för ändamålet iaf. Python används flitigt också, så kan rekommendera att kolla på det med. Men (vissa aspekter av) det kommer ganska naturligt när du kan C++. Vill du bli konkurrenskraftig kan det även vara klokt att kika på GPU-programmering, exempelvis med CUDA C eller OpenCL, och möjligen lite Fortran för att använda till vissa beräkningstunga moment.
Men det är nog bäst att ta en sak i taget kanske

Permalänk
Medlem

Målet är just CUDA och OpenCL
Jag är 100 sidor in i C++ Primer (Lippman), verkar bra hittills även om det inte är mycket som är nytt för mig än.