Jobbar ni med C/C++? Vad gör ni och vad eftersöks?

Permalänk

Jobbar ni med C/C++? Vad gör ni och vad eftersöks?

Hej,

Jag är väldigt nyfiken vad ni kodar i erat yrke som C och/eller C++ programmerare.

Vad är det man bör vara duktigt på; ex templates, pekare, binära/hexadecimala talsystemet?

Hur ofta förekommer trådning (threads) i er kod; behöva man vara grym på det?

Vilken version C++ använder ni? Vad ska man öva på, och vad kan vara vettigt att nischa sig på idag?

Vilka bibliotek tycker ni är viktiga att lära sig in och ut; ex Qt, chrono, STL?

Det blev många frågor, hoppas ni finner viljan att svara på någon!

Permalänk
Medlem

Jobbar med C på atmega328p och stm32 mikrokontrollers med RTOS.

Tror jag var den första som implementerade pekare i vår kod, men ogillade starkt hur de hade använt 8 bit-shift för att uppnå pekare++, men det funkade ju att köra utan pekare. Man bör ju ha koll på hur hexadecimal och binärt reflekterar tal i minnet, t.ex. att 0xff är en byte full av 1or mer än att man vet att 0x200 = 512, och hur stora tal du kan få plats med i en byte, 10-bit, att en byte är 8 bitar osv.

Något man bör ha koll på är t.ex. att pekare _kan_ vara "farligt" om man inte gör rätt.

RTOS har som en typ av scheduling time slicing för att köra flera uppgifter parallellt, man bör ha koll på när man ska och inte ska låsa, och inte låser tråden i onödan.

Som ny utvecklare så måste man vara flexibel eller vänta på rätt jobb, så beror helt på dig, vad du vill jobba med eller om du är öppen. Men du bör åtminstone kunna grunderna bra för C, om du vill hålla på med C++ bör du kunna objektorienterad programmering ganska bra.

Men det är också mycket runt som kan vara helt nytt eller olikt hur du gjort när du sitter ensam.
Kan du git, rebase, merge, fixa merge conflicts. De kan använda ett annat verktyg för att fixa reviews än pull requests. Vet du vad jenkins är, docker? Kan du skriva tester för din kod, vet du vad CI betyder osv. Make, Cmake.

Vi har även en kontroller som kör Linux med Qt, men den sidan har jag inte mycket koll på.

Om du jobbar med mikrokontrollers så bör man kunna lite kommunikationsstandarder också så som UART, SPI, I2C osv.

Du kommer nog få svar från andra som har helt olika upplevelser från vad jag har också.

Permalänk
Skrivet av swesen:

Jobbar med C på atmega328p och stm32 mikrokontrollers med RTOS.

Tror jag var den första som implementerade pekare i vår kod, men ogillade starkt hur de hade använt 8 bit-shift för att uppnå pekare++, men det funkade ju att köra utan pekare. Man bör ju ha koll på hur hexadecimal och binärt reflekterar tal i minnet, t.ex. att 0xff är en byte full av 1or mer än att man vet att 0x200 = 512, och hur stora tal du kan få plats med i en byte, 10-bit, att en byte är 8 bitar osv.

Något man bör ha koll på är t.ex. att pekare _kan_ vara "farligt" om man inte gör rätt.

RTOS har som en typ av scheduling time slicing för att köra flera uppgifter parallellt, man bör ha koll på när man ska och inte ska låsa, och inte låser tråden i onödan.

Intressant !! Jag tycker jag kan hantera det binära talsystemet bra, inklusive bitwise operators. Men måste erkänna att jag aldrig tänkt på att använda bit-shift för att uppnå pekare++, hur ser det ens ut? Jag får nog öva lite på hexadecimala talsystemet då!

Citat:

Men det är också mycket runt som kan vara helt nytt eller olikt hur du gjort när du sitter ensam.
Kan du git, rebase, merge, fixa merge conflicts. De kan använda ett annat verktyg för att fixa reviews än pull requests. Vet du vad jenkins är, docker? Kan du skriva tester för din kod, vet du vad CI betyder osv. Make, Cmake.

Vi har även en kontroller som kör Linux med Qt, men den sidan har jag inte mycket koll på.

Git kan jag, jenkins och docker har jag hört talas om men aldrig använt. Jag kollade upp CI, men hade du skrivit "continuous integration" så hade jag fattat. Jag har faktiskt spenderat onödigt mycket tid på att lära mig Make, CMake och Premake - så hoppas jag kommer få använda något av dem.

Citat:

Om du jobbar med mikrokontrollers så bör man kunna lite kommunikationsstandarder också så som UART, SPI, I2C osv.

Jag har ingen aning om vad det är; de enda protocols jag kan har med networking att göra. Är det något du har erfarenhet av att koda, eller används färdiga bibliotek för det (networking)?

Permalänk
Medlem
Skrivet av Jonathan-dev:

Intressant !! Jag tycker jag kan hantera det binära talsystemet bra, inklusive bitwise operators. Men måste erkänna att jag aldrig tänkt på att använda bit-shift för att uppnå pekare++, hur ser det ens ut? Jag får nog öva lite på hexadecimala talsystemet då!

Sammanfattat så kan man säga att vi ville spara variabler i olika storlekar i en byte array i permanent minne.

Koden de hade liknade:

uint8_t storage[1024] = {0xff}; void store(uint16_t address, uint64_t data, uint8_t size){ for(uint8_t i = 0; i < size; i++){ storage[address + i] = (uint8_t)data; data >>= 8; } }

Det gör att vi endast sparar de lägsta 8 bitarna i ett tal, sen flyttar hela talet 8 bitar till höger vilket gör att de första bitarna nu är bitar 9-17.

Citat:

Git kan jag, jenkins och docker har jag hört talas om men aldrig använt. Jag kollade upp CI, men hade du skrivit "continuous integration" så hade jag fattat. Jag har faktiskt spenderat onödigt mycket tid på att lära mig Make, CMake och Premake - så hoppas jag kommer få använda något av dem.

Ledsen för CI, men du kommer få förkortningar kastade på dig i arbetslivet också

Citat:

Jag har ingen aning om vad det är; de enda protocols jag kan har med networking att göra. Är det något du har erfarenhet av att koda, eller används färdiga bibliotek för det (networking)?

Det kan handla om att koda lösningarna själv, ofta finns bibliotek, men man kanske behöver ha lite koll på slav adresser eller andra saker som är inblandat för att koda om datan man ska skicka eller ta emot. Eller skapa ett kompatibelt API.

Permalänk
Medlem

Jag jobbar som spelutvecklare och skriver mest C++.

Skrivet av Jonathan-dev:

Vad är det man bör vara duktigt på; ex templates, pekare, binära/hexadecimala talsystemet?

Jag skulle inte säga att man måste vara grym på det, men du behöver ha grundläggande kunskaper. Dvs du behöver förstå vad "std::vector<Foo>" faktiskt är men att kunna använda tex "std::enable_if" fullt ut är absolut inget krav. Hur bekväm med pekare du behöver vara beror på område men du behöver iaf förstå vad det är. Om du inte är helt bekväm med trippelpekare är det i 99% av fallen lugnt ändå Binära/hexadecimala talsystemet är väl egentligen inte något krav men jag skulle vara rätt skeptisk till att anställa en programmerare som inte vet det eftersom det är så pass grundläggande kunskap.

Skrivet av Jonathan-dev:

Hur ofta förekommer trådning (threads) i er kod; behöva man vara grym på det?

Eftersom både PS5 och Xbox SX har 8 HT-cores så är det så många vi använder Sen är det verkligen inte alla som behöver sätta upp hur allt ska trådas men du måste absolut har grundläggande kunskap om synkroniseringsprimitiver, dead-locks, atomära operation osv.

Skrivet av Jonathan-dev:

Vilken version C++ använder ni?

Lite flytande men minst C++14 och oftast inte den senaste.

Skrivet av Jonathan-dev:

Vad ska man öva på, och vad kan vara vettigt att nischa sig på idag?

Det som branchen du vill in i använder Vilket språk man använder för spel är rätt ointressant idag. Vi anställer folk som bara skrivit C# förut och dom lär sig oftast C++ rätt snabbt. Samma sak åt andra hållet.

Skrivet av Jonathan-dev:

Vilka bibliotek tycker ni är viktiga att lära sig in och ut; ex Qt, chrono, STL?

stl är väl det som är mest troligt att du kommer stöta på, men inte ens det är någon garanti. Spelbranchen har en förkärlek för egna bibliotek och om du skriver embedded så har det inte funnits minne för det innan så jag skulle tro att det är rätt ovanligt. Jag skulle säga att det viktigaste är att du hittar något du tycker är tillräckligt roligt för att du vilja fortsätta.

Permalänk
Skrivet av grovlimpa:

Jag jobbar som spelutvecklare och skriver mest C++.

Jag skulle inte säga att man måste vara grym på det, men du behöver ha grundläggande kunskaper. Dvs du behöver förstå vad "std::vector<Foo>" faktiskt är men att kunna använda tex "std::enable_if" fullt ut är absolut inget krav. Hur bekväm med pekare du behöver vara beror på område men du behöver iaf förstå vad det är. Om du inte är helt bekväm med trippelpekare är det i 99% av fallen lugnt ändå Binära/hexadecimala talsystemet är väl egentligen inte något krav men jag skulle vara rätt skeptisk till att anställa en programmerare som inte vet det eftersom det är så pass grundläggande kunskap.

Eftersom både PS5 och Xbox SX har 8 HT-cores så är det så många vi använder Sen är det verkligen inte alla som behöver sätta upp hur allt ska trådas men du måste absolut har grundläggande kunskap om synkroniseringsprimitiver, dead-locks, atomära operation osv.

Lite flytande men minst C++14 och oftast inte den senaste.

Det som branchen du vill in i använder Vilket språk man använder för spel är rätt ointressant idag. Vi anställer folk som bara skrivit C# förut och dom lär sig oftast C++ rätt snabbt. Samma sak åt andra hållet.

stl är väl det som är mest troligt att du kommer stöta på, men inte ens det är någon garanti. Spelbranchen har en förkärlek för egna bibliotek och om du skriver embedded så har det inte funnits minne för det innan så jag skulle tro att det är rätt ovanligt. Jag skulle säga att det viktigaste är att du hittar något du tycker är tillräckligt roligt för att du vilja fortsätta.

Coolt!

Hur är den branschen i övrigt? Svårt att få jobb, bra lön, mycket crunch?

Du sa att spelbranchen har en förkärlek för egna bibliotek, men hur är det med själva spelmotorn? Är det något ni skriver själva eller använder ni typ Unreal, Unity...Godot?

Även om jag kan det binära/hexadecimala talsystemet, så har jag egentligen aldrig använt det hexadecimala talsystemet i kod per se. Det verkar som att jag får färska upp minnet där och använda det mer när jag kodar (?)

Vad jobbar du med som spelutvecklare? Gameplay?

Permalänk
Medlem
Skrivet av Jonathan-dev:

Jag har ingen aning om vad det är; de enda protocols jag kan har med networking att göra. Är det något du har erfarenhet av att koda, eller används färdiga bibliotek för det (networking)?

SPI/SMBus och I2C är protokoll för seriekommunikation mellan delenheter (mestadels i alla fall), inuti förhållandevis små/enkla/billiga system. UART är seriekommunikation och används mest ut/in från en svagare enhet till en PC (enligt min amatörmässiga erfarenhet). De protokollen är vanliga i elektronikprylar, en vanlig konsumentrouter kan använda alla tre internt/externt. I lite större system, typ bilar, är CAN vanligt, både för intern kommunikation och kommunikation med omgivningen. Inget av de ovanstående används på ett mer normalt datornätverk (ethernet/IP/TCP).

Permalänk
Medlem
Skrivet av Jonathan-dev:

Coolt!

Hur är den branschen i övrigt? Svårt att få jobb, bra lön, mycket crunch?

Jag gillar den även om den har blivit lite tråkigare på senare år eftersom den tekniska utvecklingen går så mycket långsammare nu. Men det är kul med en arbetsplats där i princip alla är spelnördar och att få jobba med så olika personer. Att lösa svåra tekniska problem samtidigt som man samarbetar tätt mer kreativa personer är en utmaning ibland men roligt Idag skriker nästan alla företag efter folk så det är inte omöjligt så länge du har intresse och har något att visa upp. Eller så kan du gå en KY (typ futuregames eller game assembly). Lön är rätt varierande men ingångslönen för en junior utvecklare är helt klart lägre än andra brancher. Som mer senior är den mer konkurrenskraftig. Sen beror det på vad man prioriterar. Jag tar hellre ett jobb jag verkligen ser fram emot att gå till på söndagkvällen över några extra tusenlappar i månaden. Det är inte jättemycket crunch idag på dom lite större företagen, iaf dom seriösare. Sen kör det ju alltid ihop sig på något sätt innan release så lite övertid har nog alla

Skrivet av Jonathan-dev:

Du sa att spelbranchen har en förkärlek för egna bibliotek, men hur är det med själva spelmotorn? Är det något ni skriver själva eller använder ni typ Unreal, Unity...Godot?

Beror på företag men det går mer och mer mot unreal eller unity eftersom det är svårt att motivera kostnaden för en in-house-motor. Här kan du förresten läsa om motiveringen till EA:s egna STL: https://github.com/electronicarts/EASTL/blob/master/doc/FAQ.m...

Skrivet av Jonathan-dev:

Även om jag kan det binära/hexadecimala talsystemet, så har jag egentligen aldrig använt det hexadecimala talsystemet i kod per se. Det verkar som att jag får färska upp minnet där och använda det mer när jag kodar (?)

Det är mer att det är bra att inte bli förvirrad om du ser kod i stil med "(x >> 8) & 0xff"

Skrivet av Jonathan-dev:

Vad jobbar du med som spelutvecklare? Gameplay?

Jag jobbar med AI, dvs typ gameplay.

Permalänk
Skrivet av grovlimpa:

Jag gillar den även om den har blivit lite tråkigare på senare år eftersom den tekniska utvecklingen går så mycket långsammare nu. Men det är kul med en arbetsplats där i princip alla är spelnördar och att få jobba med så olika personer. Att lösa svåra tekniska problem samtidigt som man samarbetar tätt mer kreativa personer är en utmaning ibland men roligt Idag skriker nästan alla företag efter folk så det är inte omöjligt så länge du har intresse och har något att visa upp. Eller så kan du gå en KY (typ futuregames eller game assembly). Lön är rätt varierande men ingångslönen för en junior utvecklare är helt klart lägre än andra brancher. Som mer senior är den mer konkurrenskraftig. Sen beror det på vad man prioriterar. Jag tar hellre ett jobb jag verkligen ser fram emot att gå till på söndagkvällen över några extra tusenlappar i månaden. Det är inte jättemycket crunch idag på dom lite större företagen, iaf dom seriösare. Sen kör det ju alltid ihop sig på något sätt innan release så lite övertid har nog alla

Beror på företag men det går mer och mer mot unreal eller unity eftersom det är svårt att motivera kostnaden för en in-house-motor. Här kan du förresten läsa om motiveringen till EA:s egna STL: https://github.com/electronicarts/EASTL/blob/master/doc/FAQ.m...

Det är mer att det är bra att inte bli förvirrad om du ser kod i stil med "(x >> 8) & 0xff"

Jag jobbar med AI, dvs typ gameplay.

Kul att höra! Jag har varit inne på att söka till branschen, men det kändes osäkert av någon anledning. Kör du på distans eller bor du i någon av de större städerna, för det verkar ju vara där (Gbg, Malmö, Stkhlm) företagen/jobben finns?

AI verkar intressant och har en givande framtid. Jag hade dock kanske fokuserat på procedural content generation, men det kanske tillhör AI?

Har du några tips på hur man tar sig in i spelbranschen? Behöver jag släppa ett spel på Steam? Göra en egen spelmotor? Måste jag kunna Unreal/Unity bra innan jag söker jobb? Vad är det som eftersöks? Har man ens en chans att få in en fot som Junior?