Nunca he entendido lo que significaba la programación del sistema. La definición habitual dada es "... hacer algo cercano al Os o extender las características del Os ...".
¿Usar la API de Windows directamente en lugar de algunas bibliotecas para decir que la E / S de archivos hace que sea programación del sistema? ¿Estaba escribiendo programación del sistema operativo Android? Si escribo algo que expondría el kernel de Linux a través de una consola como una aplicación en Android, ¿estoy haciendo programación del sistema? Si estoy escribiendo software para controlar una lavadora, ¿estoy escribiendo programación del sistema?
Soy un principiante en programación y esto me confunde sin fin. Por favor explique contrastando con "programación de aplicaciones"
fuente
Respuestas:
Personalmente me gusta la definición de Wikipedia :
fuente
Hay varias preguntas que puede hacerse para practicar al decidir esa pregunta.
troff
han sido portados a prácticamente cualquier sistema con pocos cambios, por lo que son aplicaciones, a pesar de que están ubicadas en la parte inferior de la cadena de herramientas que la gente suele usar. El sistema de archivos en el que TeX escribe su salida, por ejemplo, UFS o VFAT, es un caso límite. Usted pudo puerto de un sistema de archivos de un sistema operativo diferente si era totalmente impresionante, pero por lo general la gente simplemente se apoderan de ideas impresionantes y escribir su propio sistema de archivos para su propio sistema operativo. Eso hace que el software del sistema de sistemas de archivos.Para sus preguntas, escribir el sistema operativo Android fue definitivamente una programación de sistemas. Escribir un programa que use llamadas API de Windows es la programación de aplicaciones. No es tan portátil como lo sería si usara bibliotecas multiplataforma como SDL u OpenGL, pero en principio se puede portar, es un código de terceros y se ejecuta en el espacio del usuario. Una aplicación de consola que expone el estado del kernel de Linux es un experimento mental interesante. Definitivamente diría que involucra la programación de sistemas, ya que tendrías que saber mucho sobre la estructura de Linux (ten en cuenta que "Linux" es propiamente solo el núcleo, no la distribución) para escribir, ¡y probablemente incluso para usarlo!
fuente
En resumen: escribir software que amplíe o mejore el funcionamiento de un sistema operativo, como controladores, actualizaciones de utilidades del sistema para sistemas operativos o incluso sistemas operativos nuevos.
Principalmente implica la gestión de la memoria; Operaciones de E / S en el sentido más amplio de la palabra, como redes, acceso a archivos y administración de dispositivos; gestión de procesos (multitarea, administración de procesos, etc.); métodos de interacción del sistema de usuario <-> (tanto dentro como fuera) y administración de usuarios. Básicamente, todo lo que forma parte del sistema operativo que no es una aplicación es la programación de sistemas.
fuente
Usar la API de Windows directamente fue, en un momento, una forma común de escribir aplicaciones para Windows. Entonces no, eso no es programación de sistemas.
La programación de sistemas no es solo "cercana al sistema operativo", es algo esencial para el funcionamiento central del sistema informático. Así que escribir un sistema operativo es programación de sistemas. Escribir controladores de video, controladores de sistema de archivos, controladores de red para ese sistema operativo es la programación de sistemas. Escribir un compilador para una combinación particular de lenguaje / chipset es la programación de sistemas.
fuente
Normalmente, se refiere a "cosas de bajo nivel que los usuarios finales no técnicos no saben que existen o no saben muy claramente que están usando o qué hacen".
Algunos ejemplos que a menudo se considerarían programación del sistema:
creación de distribución, es decir, creación de imágenes de usuario.
Esto normalmente implica la selección de la biblioteca estándar C, el sistema init y los componentes básicos del usuario como un shell.
Sistemas de programación se hace a menudo en lenguajes compilados nivel más bajo sin recolección de basura automática como C o montaje, y tienden a un acceso menos sistema común llama a menudo a través de las interfaces POSIX C .
Estoy manteniendo un tutorial práctico que cubre varios temas de programación del sistema aquí .
fuente
Al definir esto, me mantendría alejado de cualquier detalle técnico por completo. Entonces se vuelve fácil.
Una aplicación permite al usuario hacer algo útil con alguna pieza de tecnología. Por lo tanto, la programación de aplicaciones está dirigida a proporcionar funciones a un usuario, de forma bastante directa.
La programación del sistema, por otro lado, sentaría las bases para hacer posible la programación de aplicaciones. Ofrece funciones para el programador de aplicaciones en lugar de para el usuario.
Esta definición se mantendrá, pero es una cuestión de perspectiva, contexto y roles. Para un programador de computadoras, las herramientas de programación son aplicaciones. Para un usuario final no tienen sentido, solo están fuera de la imagen.
fuente
En resumen, la programación del sistema en comparación con la programación de aplicaciones es que el SP maneja el software del sistema operativo para trabajar con recursos de hardware y el AP maneja la actividad de los usuarios finales.
fuente