Jestem programistą, mam doświadczenie w C # (5 lat doświadczenia) wraz z kilkoma innymi językami.
Moja „wymarzona praca” polega na pracy w grach wideo jako programista.
Większość zadań wymaga znajomości C ++, którego obecnie nie mam (oprócz niektórych podstawowych).
Rozejrzałem się i większość dużych firm z branży gier wymaga czegoś od 3-5 lat wcześniejszego doświadczenia z C ++.
Moje pytanie brzmi - jaka byłaby dobra droga, aby dostać się do tego wymaganego poziomu doświadczenia, pochodzącego z C #?
Pomyślałem o kilku możliwych sposobach:
Uzyskaj więcej wiedzy na temat C ++ z książek. Bierz udział w projektach typu open source napisanych w C ++. Jaki byłby najlepszy sposób na naukę języka C ++ i posiadanie na nim praktycznego doświadczenia, szczególnie w branży gier?
źródło
Odpowiedzi:
Jako twórca gier moim głównym zmartwieniem w zatrudnianiu faceta z C # byłby brak wiedzy na niskim poziomie.
Rozważmy więc projekt, w którym praca wymaga optymalizacji niskiego poziomu, takiej jak zmiana układu danych klas lub przepisanie kodu, aby skorzystać z instrukcji SIMD. Weź grę typu open source w C ++, zoptymalizuj ją i opublikuj wzrost liczby klatek na sekundę w swoim CV.
Gdybym przeprowadzał z tobą wywiad, nie dbałbym o C ++ w twoim życiorysie, a bardziej o to, czy możesz odpowiedzieć na moje pytania do rozmowy kwalifikacyjnej na niskim poziomie C / C ++ /. Zajmę się niektórymi standardowymi pytaniami, z którymi możesz mieć problemy (ostrzeżenie: nie jestem ekspertem w C #):
źródło
Co powiedział Eric. Dodałbym również, aby uniknąć „nowego”, gdy nie jest to konieczne. Jest to bardzo powszechne w C #, ale uważane za złą praktykę w C ++ 11, a także wolniejsze niż przydzielanie stosu i bardziej niebezpieczne, ponieważ musisz ręcznie cofnąć przydział.
Byłbym też ostrożny ze starymi książkami, uczą starych praktyk. Osobiście wolę niezawodne fora / strony internetowe, stackoverflow / isocpp.
źródło
new
” nie jest naprawdę rozsądną rekomendacją. Używasz,new
gdy masz wskaźniki. Jeśliclass Derived : Base
, to aBase var = Derived();
jest nielegalne, aleBase *var = new Derived();
jest legalne. Potrzebujesz więc wskaźników, aby polimorfizm działał prawidłowo.Base var = Derived()
działałby , ale zostałby pocięty na plasterki i, bez wiedzy ciebie, zagubione informacjevar
. Aby rozwiązać problem krojenia, możesz użyć wskaźników.