Przygotowuję się do stażu jako programista gier w znanej na całym świecie firmie produkującej gry. Gdy przeszukałem ich witrynę w poszukiwaniu niezbędnych wymagań, pokazało mi to:
Dodano zaletę
- Znajomość DirectX / OpenGL.
- Silna znajomość matematyki 3D i fizyki.
- Visual Studio IDE dla rozwoju C ++.
- Programowanie systemu i koncepcje systemu operacyjnego.
Co dokładnie rozumieją przez programowanie systemu i koncepcje systemu operacyjnego?
Czy powinienem studiować programowanie w systemie Windows? A może powinienem iść do programowania w Linuksie (co oznacza, że chcą, żebym poznał ważne pojęcia). A może to coś zupełnie innego?
terminology
career
Dhannanjai
źródło
źródło
Odpowiedzi:
„Programowanie systemu” (lub „programowanie systemu”) zwykle oznacza programowanie na niższym poziomie abstrakcji niż (na przykład) programowanie gry. Programowanie rozgrywki polega zwykle na budowaniu rzeczywistej mechaniki gry i funkcji, które użytkownik może zobaczyć, podczas gdy programowanie systemów polega raczej na budowaniu ram, na których pracują programiści.
Może to oznaczać grafikę, ładowanie i przesyłanie zasobów, audio, zarządzanie pamięcią, operacje na plikach, interfejsy API abstrakcji platformy i tak dalej. Szczegóły są dość zróżnicowane, a ponieważ w branży gier nie ma standardów dotyczących stanowisk pracy, podobnie nie ma standardów nazw domen programistycznych. W jednym studiu może się okazać, że „programowanie systemów” oznacza wszystko, co wymieniłem powyżej. Z drugiej strony może się okazać, że rozróżniają „programowanie grafiki” jako oddzielną domenę i nazywają każde inne zadanie nieprogramowania „programowaniem systemów”. W jeszcze innym przypadku mogą w ogóle nie używać tego terminu i po prostu nazywają to „programowaniem silnika”.
Ponieważ jest to domena niższego poziomu i zazwyczaj wymaga bezpośredniego połączenia z interfejsami API specyficznymi dla platformy dla wszystkich platform, na których budowana jest gra, znajomość tych platform będzie pomocna, podobnie jak znajomość bardziej ogólnej domeny (np. , koncepcji systemu operacyjnego, bez względu na to, jak działa konkretny system operacyjny, na przykład czym jest pamięć wirtualna lub jak działają wątki, jak działa buforowanie IO itp.).
źródło
Odpowiedź Josha jest naprawdę dobra, ale pomyślałem, że rzuciłem kilka kul o zespole Systems, w którym pracuję. Nie pracuję na systemach, ale dużo z nimi pracuję. Obowiązki zespołu systemów są bardzo różne w zależności od firmy.
Nasz zespół ds. Systemów odpowiada za wiele rzeczy:
Znajdzie się tutaj duża wiedza na temat domen Windows i Linux, a także wiedza z fizyki, logiki gry podstawowej i zarządzania pamięcią niskiego poziomu. Zespoły ds. Systemów będą zazwyczaj zaangażowane przynajmniej częściowo w każdy obsługiwany system operacyjny, ponieważ większość ich projektów opiera się na każdym systemie operacyjnym na dość niskim poziomie.
Niektóre rzeczy, które mogą należeć do zespołu „Systemów”, które dzielimy na osobne zespoły (ale nasz zespół Systemów nadal bardzo mocno wchodzi w interakcje):
źródło
Programowanie systemów jest bardzo dobrze zdefiniowane, ale firmy starają się dostosować je do swoich potrzeb. Jeśli używasz lub piszesz wywołania systemowe, programujesz system. Wywołania systemowe to funkcje zapewniane przez jądro lub sterowniki przestrzeni użytkownika. Obejmuje to OpenGL, ponieważ jest to zasadniczo sterownik.
źródło
Dodatkowe zalety wymienione powyżej dotyczą głównie programowania silnika gry, gdy jest to konieczne, a zatem wymaga użycia interfejsów API niskiego poziomu. Programowanie systemów wymaga od Ciebie wykonywania połączeń do dźwięku systemu operacyjnego, zarządzania procesami, manipulacji plikami, połączeń sieciowych i tak dalej ...
źródło
Ponieważ odnoszą się one do Visual Studio, programowanie systemu odnosi się do pisania programów specjalnie dla systemów operacyjnych Windows, co oznacza: syscalls systemu Windows (na przykład nie ma łańcucha fork-exec), konta użytkowników, gdzie umieścić określone dane użytkownika, modele udostępniania danych w okna Wyszukaj, na przykład, jak możesz sprawdzić bieżącego użytkownika w Visual C ++ lub jak rozpocząć nowy proces
Pojęcia dotyczące systemu operacyjnego, odnoszą się do planowania, abstrakcji plików, wątków, przestrzeni użytkownika itp. Os dev wiki i fora mogą być dobrą lekturą
Uwierzytelnianie użytkownika odbywa się na przykład w obu sekcjach, ponieważ Windows jest systemem operacyjnym dla jednego użytkownika, który ma znacznie głębszą integrację zarządzania użytkownikami i interfejsu użytkownika w jądrze.
Msdn jest bazą wiedzy dla wszystkich rzeczy związanych z programowaniem api, bibliotek itp. Systemu Windows https://msdn.microsoft.com/
Przepełnienie stosu dla faktycznego kodowania, jeśli utkniesz.
źródło