Permalänk
Medlem

Lära sig c++ på riktigt?

Behöver lite tips och råd för hur jag ska komma vidare i mitt kodande. Har under några års tid kodat lite på hobbynivå, gjort enklare appar till Ios i Swift, enklare webbapplikationer i React med NodeJS backend. Sista halvåret börjar det stå klart för mig att jag troligen kommer bli tvungen att byta bransch framöver, mycket pga Corona. Min plan är att börja läsa systemvetenskap eller datavetenskap nästa höst. Tänkte föregå det hela lite genom att börja programmera mer redan nu.

Fick tipset att börja med C++ för det är ”programmering på riktigt”, få förståelse för många koncept som sen gör det lättare att lära sig andra språk. Har följt en kurs från Stanford CS106L, samt nu läst boken ”Programming principles and practice using c++”, av Bjarne Stroustrup.

Tycker mig förstå grunderna rätt bra, kan göra enklare program med manuell minneshantering. Gjorde en egen implementering av ”linked list” förra veckan exempelvis.

Nu kommer dock problemet, nästa steg i c++ känns väldigt stort. Skulle vilja lära mig enklare nätverksprogrammering, då jag börjar tröttna på ”lokala” exempel på datorn med foo och bar osv.. Tittade lite på Boost Asio, blev ganska chockad över svårighetsgraden. Känns som ett helt annat syntax än det man lärt sig i ”grundkurserna”. Samma sak om man tittar på andras projekt på github, känns som om det är ett helt annat språk än det som lärs ut i böcker och grundkurser.

Har ni några tips på hur man kommer vidare från min nivå till nästa? Ni som redan gjort resan, hur lärde ni er C++ ”på riktigt”?

Kanske var dum som gav mig in på C++ spåret, men vill inte släppa det nu heller när jag lagt en del tid på det.

Permalänk
Medlem

Jag läste C++ andra året på Gymnasiet tillsammans med mina fyra klasskamrater. Jag kan säga direkt att C++ är väldigt speciellt.
Jag och en klasskompis hade sjukt svårt att lära oss detta språk medans min andra klasskompis fick nästan högsta betyg i C++.
Vill bara förmedla denna information så du vet vad du ger dig in på. PS. Jag har sett många tutorial och en del kurser om nätverksprogrammering som använder sig av Pythoon istället för C++. Du kanske vara kolla mer på det språket istället.

Permalänk
Medlem

Hej där! Kan inflika med att jag läser Datavetenskap och vi har inte läst C++ alls.
Vi har främst läst C, sedan Java, Python och JavaScript mot server samt webb.

Kan rekommendera C istället.

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem

Nätverksprogrammering är inte en del av C++ som sådant, så att lära sig nätverksprogrammering är inte att lära sig C++.
Däremot så är det däremot naturligtvis bra att kunna nätverksprogrammering, men kom ihåg då att mängder av detaljer är OS-beroende.
Så hur man "skall" skriva nätverksprogram i Windows är inte riktigt likadant som hur man gör i Linux vilket i sin tur skiljer sig från hur man gör i ytterligare andra system.

Permalänk
Medlem

Tack för svar, det är inte nätverksprogrammeringen i sig jag är intresserad av. Mer att jag behöver utveckla mig i någon riktning för att kunna göra något "på riktigt" med c++. Kanske är det QT jag ska titta på, men det känns väldigt specifikt.

Tanken är att det leda till något som är bra på CVt i framtiden, tänker att kunskaper i C++ är meriterande? Men steget från läroboksexempel på enkla program till "riktiga program" känns knepigt att ta.

Permalänk
Skrivet av magnusv:

Behöver lite tips och råd för hur jag ska komma vidare i mitt kodande. Har under några års tid kodat lite på hobbynivå, gjort enklare appar till Ios i Swift, enklare webbapplikationer i React med NodeJS backend. Sista halvåret börjar det stå klart för mig att jag troligen kommer bli tvungen att byta bransch framöver, mycket pga Corona. Min plan är att börja läsa systemvetenskap eller datavetenskap nästa höst. Tänkte föregå det hela lite genom att börja programmera mer redan nu.

Fick tipset att börja med C++ för det är ”programmering på riktigt”, få förståelse för många koncept som sen gör det lättare att lära sig andra språk. Har följt en kurs från Stanford CS106L, samt nu läst boken ”Programming principles and practice using c++”, av Bjarne Stroustrup.

Tycker mig förstå grunderna rätt bra, kan göra enklare program med manuell minneshantering. Gjorde en egen implementering av ”linked list” förra veckan exempelvis.

Nu kommer dock problemet, nästa steg i c++ känns väldigt stort. Skulle vilja lära mig enklare nätverksprogrammering, då jag börjar tröttna på ”lokala” exempel på datorn med foo och bar osv.. Tittade lite på Boost Asio, blev ganska chockad över svårighetsgraden. Känns som ett helt annat syntax än det man lärt sig i ”grundkurserna”. Samma sak om man tittar på andras projekt på github, känns som om det är ett helt annat språk än det som lärs ut i böcker och grundkurser.

Har ni några tips på hur man kommer vidare från min nivå till nästa? Ni som redan gjort resan, hur lärde ni er C++ ”på riktigt”?

Kanske var dum som gav mig in på C++ spåret, men vill inte släppa det nu heller när jag lagt en del tid på det.

Jag tror nog du kan ha nytta av rosettacode.org. De har uppgifter med olika svårighetsgrad.
För C och C++ tycker jag Linux och Raspberry Pi har många fördelar om man inte vill hålla på med allt typiskt för Windows.
Med Raspberry Pi 4 kan du välja 32 eller 64 bitar. För vissa program är skillnaden stor (mycket minneshantering!).

Permalänk
Medlem

Det svåraste med C++ tycker jag är att lära sig low-end programmera med alla bibliotek, som t.e.x. nätverk, OpenGL, Vulkan, DirectX (läs: lära sig och använda det som andra har gjort, såsom dokumentation och hur bibliotekens funktioner används för att initiera och utföra kommandon, som kan vara rätt komplexa, båda i antalet variabler och kommandon).

Grunderna är rätt lätta förstå sig på, dock är det subjektivt då jag hobbyprogrammerat C++ rätt länge.
Klasser, funktioner, variabler tycker jag är jätteenkelt, likaså minneshanteringen, och det är det första som man ska lära sig anser jag. T.e.x. minneshanteringen kan skilja sig åt mot andra språk, samt objekthanteringen.

Dock, utöver grunderna, är det mycket att lära sig ändå, och jag tror det appliceras även samma principer i många andra språk.

Man lär sig inte C++ under en dag, finns alltid något nytt att lära sig.

Visa signatur

[AMD 64 Winchester 3500+][Asus A8R-VMP (skitkort!)][Kingmax 4x512MB ram][Hitachi 160G SATA][Sapphire X1950XTX 512MB DDR4 PCIe][Soundblaster X-Fi Platinum][Nesteq NA 4501 450W][Hyundai L90D+ 19]

Permalänk
Medlem

Tack för bra svar, lite kluven hur jag ska göra. En av de saker som stör mig mest just nu är allt runt C++ med bibliotek, kompilering osv. Lagt många timmar på att få Boost biblioteket fungera med Cmake. Det gick tillslut, men känns som om jag kastar bort mer tid på allt runtomkring än själva kodningen.

Kanske är det bättre med tex C# av den anledningen?
När jag jobbat med JS eller Swift flöt allting på och jag kände mig produktiv.

Vad tror ni rent karriärsmässigt, är det någon mening med att kämpa på med C++ om jag siktar på att läsa systemvetenskap i framtiden? Tänker att många c++ jobb är riktade mot ingenjörer? Eller tror ni kan man få någon hävstång som systemvetare med grundläggande C++ kunskaper? Kanske får jag ut mer lärande och erfarenhet att redan nu byta till C# eller Java?

Permalänk
Medlem
Skrivet av magnusv:

Tack för bra svar, lite kluven hur jag ska göra. En av de saker som stör mig mest just nu är allt runt C++ med bibliotek, kompilering osv. Lagt många timmar på att få Boost biblioteket fungera med Cmake. Det gick tillslut, men känns som om jag kastar bort mer tid på allt runtomkring än själva kodningen.

Kanske är det bättre med tex C# av den anledningen?
När jag jobbat med JS eller Swift flöt allting på och jag kände mig produktiv.

Vad tror ni rent karriärsmässigt, är det någon mening med att kämpa på med C++ om jag siktar på att läsa systemvetenskap i framtiden? Tänker att många c++ jobb är riktade mot ingenjörer? Eller tror ni kan man få någon hävstång som systemvetare med grundläggande C++ kunskaper? Kanske får jag ut mer lärande och erfarenhet att redan nu byta till C# eller Java?

Fast rent karriärsmässigt så vet du inte vilken arbetsplats du kommer hamna på - och du vet då definitivt inte vilket språk du kommer arbeta med. Med största sannolikhet oavsett arbetsplats så kommer du arbeta med flera olika språk och säkerligen något du aldrig stött på tidigare.

Men det gör ingenting - det är otroligt lätt att sätta sig in i ett nytt språk (jmf med att lära sig sitt första språk dvs). Som sagt, jag har läst 1.5 år och vi har lärt oss flera språk. Det enda som var lite krångligt var när vi gick från ett procedurellt språk som C till ett objektorienterat likt Java, syntaxen var inte svår att lära sig utan snarare tankesättet då man får tänka annorlunda vid objektorienterat språk.

Om du nu skall gå en utbildning så kommer du lära dig allt du behöver lära dig där. Så skit i helt "vad jag behöver lära mig nu" utan fokusera snarare på att hitta något projekt du tycker är kul. Möjligt att det projektet är lämpat med något annat språk än C++, perfekt, då får du lära dig något nytt språk också. Oavsett projekt så kommer du få massa nyttiga kunskaper. Viktigaste är att det är kul så det faktiskt blir att du spenderar massa timmar med det.

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem
Skrivet av magnusv:

Tack för bra svar, lite kluven hur jag ska göra. En av de saker som stör mig mest just nu är allt runt C++ med bibliotek, kompilering osv. Lagt många timmar på att få Boost biblioteket fungera med Cmake. Det gick tillslut, men känns som om jag kastar bort mer tid på allt runtomkring än själva kodningen.

All runt omkring (byggverktyg, bibliotek, osv) är vad som tar mest tid att lära sig oavsett vilket språk man använder.

Lära sig ett programmeringsspråk är den enkla biten. Lära sig att programmera är den svåra biten, följt av att lära sig allt runt omkring.

Permalänk
Medlem
Skrivet av magnusv:

Tack för bra svar, lite kluven hur jag ska göra. En av de saker som stör mig mest just nu är allt runt C++ med bibliotek, kompilering osv. Lagt många timmar på att få Boost biblioteket fungera med Cmake. Det gick tillslut, men känns som om jag kastar bort mer tid på allt runtomkring än själva kodningen.

Kanske är det bättre med tex C# av den anledningen?
När jag jobbat med JS eller Swift flöt allting på och jag kände mig produktiv.

Vad tror ni rent karriärsmässigt, är det någon mening med att kämpa på med C++ om jag siktar på att läsa systemvetenskap i framtiden? Tänker att många c++ jobb är riktade mot ingenjörer? Eller tror ni kan man få någon hävstång som systemvetare med grundläggande C++ kunskaper? Kanske får jag ut mer lärande och erfarenhet att redan nu byta till C# eller Java?

Om du börjat koda i React och Swift tidigare så skulle jag säga att det naturliga valet att gå vidare med är att titta på Java/Kotlin. Om du däremot primärt vill få ett jobb inom programming så behöver du inte lära dig fler språk. Finns en stor efterfrågan på expertis inom React och JavaScript, finns de som bara jobbar med det. C++ är mer programmering på riktigt men det har sitt pris i komplexitet som du redan har erfarenhet av. Vet att många c++ programmerare skulle rekommendera andra språk för nya projekt om det är möjligt.