Me estoy preparando para una pasantía como programador de juegos en una empresa de desarrollo de juegos de renombre mundial. Cuando busqué en su sitio web los requisitos previos necesarios, me mostró esto:
Ventaja añadida
- Conocimiento de DirectX / OpenGL.
- Fuerte dominio de las matemáticas y la física en 3D.
- Visual Studio IDE para el desarrollo de C ++.
- Programación del sistema y conceptos del sistema operativo.
¿Qué quieren decir exactamente con programación del sistema y conceptos del sistema operativo?
¿Debería estar estudiando la programación de Windows? O debería ir con la programación de Linux (lo que significa que quieren que conozca los conceptos importantes). ¿O es algo totalmente diferente?
terminology
career
Dhannanjai
fuente
fuente
Respuestas:
"Programación del sistema" (o "programación de sistemas") significa la programación realizada en un nivel de abstracción más bajo que (por ejemplo) la programación del juego. La programación del juego generalmente se trata de construir la mecánica real del juego y las características frontales que un usuario puede ver, mientras que la programación de sistemas se trata más de construir los marcos sobre los que trabajan los programadores de juegos.
Esto podría significar gráficos, carga y transmisión de recursos, audio, administración de memoria, E / S de archivos, API de abstracción de plataforma, etc. Los detalles varían bastante, y debido a que no hay estándares para los títulos de trabajo en la industria de los juegos, tampoco hay estándares para los nombres de los dominios de programación. En un estudio, puede encontrar que "programación de sistemas" significa todo lo que enumeré anteriormente. En otro, puede encontrar que distinguen la "programación de gráficos" como un dominio separado y llaman a todas las demás tareas que no son de programación de juegos "programación de sistemas". En otro más, es posible que no usen el término en absoluto y simplemente lo llamen "programación del motor".
Dado que es un dominio de nivel inferior, y generalmente implica una interfaz más directa con las API específicas de la plataforma para las plataformas para las que se está construyendo el juego, será útil tener conocimiento de esas plataformas, así como tener conocimiento del dominio más general (p. Ej. , de los conceptos del sistema operativo sin tener en cuenta cómo funcionan los sistemas operativos específicos, como qué es la memoria virtual o cómo funcionan los subprocesos, cómo funciona el almacenamiento en búfer de E / S, etc.
fuente
La respuesta de Josh es realmente buena, pero pensé que arrojaría algunas viñetas sobre el equipo de Sistemas donde trabajo. No trabajo en sistemas pero trabajo mucho con ellos. Las responsabilidades de un equipo de sistemas varían mucho de una compañía a otra.
Nuestro equipo de sistemas está a cargo de muchas cosas:
Aquí hay muchos conocimientos de dominio de Windows y Linux, así como muchos conocimientos de Física, lógica de juegos básicos y gestión de memoria de bajo nivel. Los equipos de sistemas generalmente estarán involucrados al menos en alguna parte en cada sistema operativo compatible, ya que la mayoría de sus proyectos se encuentran en cada sistema operativo en un nivel bastante bajo.
Algunas cosas que podrían caer dentro de un equipo de "Sistemas" que dividimos en equipos separados (pero nuestro equipo de Sistemas aún interactúa bastante):
fuente
La programación de sistemas está muy bien definida, pero las empresas intentan extenderla a sus necesidades. Si está utilizando o escribiendo llamadas de sistema, está haciendo programación de sistemas. Las llamadas al sistema son las funciones que proporciona el núcleo o los controladores de espacio de usuario. Esto incluye OpenGL, ya que es básicamente un controlador.
fuente
Las ventajas adicionales enumeradas anteriormente son principalmente para la programación del motor del juego cuando es necesario, por lo que implica la utilización de API de bajo nivel. La programación de sistemas aquí espera que sepa cómo hacer llamadas al audio del sistema operativo, la gestión de procesos, la manipulación de archivos, las llamadas de red, etc.
fuente
Dado que hacen referencia a Visual Studio, la programación del sistema se refiere a escribir programas específicamente para los sistemas operativos de Windows, lo que significa: llamadas al sistema de Windows (por ejemplo, no hay una cadena fork-exec), cuentas de usuario, dónde colocar sus datos específicos de usuario, modelos de intercambio de datos en Windows Busque, por ejemplo, cómo puede comprobar el usuario actual en Visual C ++ o cómo iniciar un nuevo proceso
Conceptos del sistema operativo, consulte programación, abstracción de archivos, hilos, espacio de usuario, etc. El wiki y los foros de os dev pueden ser una buena lectura
La autenticación de usuario se encuentra, por ejemplo, en ambas secciones, ya que Windows es un sistema operativo de un solo usuario, que tiene una integración mucho más profunda del núcleo de la administración de usuarios y la interfaz de usuario.
El msdn es la base de conocimiento para todas las cosas de programación de Windows apis, bibliotecas, etc. https://msdn.microsoft.com/
Stackoverflow para la codificación real si está atascado.
fuente