Nunca he entendido lo que significa la programación del sistema. La definición habitual que se da es «… hacer algo cercano a los Os o ampliar las características del Os …».
¿El uso de la API de Windows directamente en lugar de algunas bibliotecas para decir el archivo i / o lo convierte en programación del sistema? ¿Estaba escribiendo la programación del sistema operativo Android? Si escribo algo que exponga el kernel de Linux a través de una aplicación similar a una consola en Android, ¿estoy programando el sistema? Si estoy escribiendo software para controlar una lavadora, ¿estoy escribiendo programación de sistema?
Soy un principiante en programación y esto me confunde muchísimo. Por favor, explique cómo contrastarlo con «programación de aplicaciones».
Comentarios
- Esta definición ha cambiado y los propios programadores del sistema no ‘ No parece estar seguro de una definición única hoy. Este problema generalmente surge cuando la gente debate sobre si el lenguaje X es conveniente para la programación del sistema …
- @Denys S é guret – Irónico si nadie puede ponerse de acuerdo qué » programación del sistema » es para empezar.
- Cita de Perl Cookbook – Capítulo 16. Gestión de procesos y Comunicación: » Este capítulo trata sobre cómo ejecutar comandos y conectar procesos separados. Se trata de gestionar su creación, comunicación y desaparición final. Se trata de programación de sistemas. »
Responder
Yo personalmente como la definición de Wikipedia :
La programación del sistema (o programación de sistemas) es la actividad del software del sistema de programación. La principal característica distintiva de la programación de sistemas en comparación con la programación de aplicaciones es que la programación de aplicaciones tiene como objetivo producir software que proporciona servicios al usuario (por ejemplo, procesador de texto), mientras que la programación de sistemas tiene como objetivo producir software que proporciona servicios al hardware de la computadora (por ejemplo, desfragmentador de disco ). Requiere un mayor grado de conocimiento del hardware.
Respuesta
Hay varias preguntas que puede hacerse para adquirir práctica al decidir esa pregunta.
- ¿El sistema se vendió originalmente sin este programa? Angry Birds puede ser una «aplicación asesina» para un teléfono inteligente (la razón por la que alguien lo compra), pero sigue siendo una aplicación de terceros escrita mucho después de que se introdujo el teléfono. Escribirlo habría sido programación de aplicaciones. Pero el controlador de pantalla del mismo teléfono inteligente es esencial para usarlo, por lo que habría sido programación de sistemas.
- ¿Se imagina portar el código a otra plataforma sin tener que reescribirlo en gran medida? TeX y
troff
se han adaptado a prácticamente cualquier sistema con pocos cambios, por lo que son aplicaciones, aunque se encuentran en la parte inferior de la cadena de herramientas que la gente suele utilizar. El sistema de archivos en el que TeX escribe su salida, p. Ej. UFS o VFAT, es un caso límite. Usted podría portar un sistema de archivos a un sistema operativo diferente si fuera totalmente asombroso, pero por lo general la gente simplemente toma ideas increíbles y escribe su propio sistema de archivos para su propio sistema operativo. Eso hace que el sistema de archivos sea software. - ¿La funcionalidad está implementada en el kernel o en binarios separados? (Los sistemas de archivos también ocupan un término medio aquí. Muchas partes de muchos sistemas de archivos son de hecho código del kernel, pero muchos tienen partes sustanciales en el espacio del usuario). Los controladores de visualización de gráficos pueden, en principio, ser componentes externos conectables, pero a menudo se implementan en el kernel o al menos con acceso directo privilegiado al kernel (o incluso al hardware). Eso sería programación de sistemas. Por otro lado, los juegos de computadora que usan la pila de visualización de gráficos son aplicaciones.
Para sus preguntas, escribir el sistema operativo Android fue definitivamente programación de sistemas. Escribir un programa que utilice llamadas a la API de Windows es programación de aplicaciones. No es tan portátil como lo sería si utilizara 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 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 kernel, no la distribución) para escribir, ¡y probablemente incluso para usarlo!
Respuesta
En resumen: software de escritura que amplía o mejora el funcionamiento de un sistema operativo, como controladores, actualizaciones de utilidades del sistema al sistema operativo » es o incluso sistemas operativos nuevos.
Se trata principalmente de 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.); usuario < -> métodos de interacción del sistema (tanto dentro como fuera) y administración de usuarios. Básicamente, todo lo que forma parte del SO que no es una aplicación es programación de sistemas.
Respuesta
Usando la API de Windows directamente fue, en un momento, una forma común de escribir aplicaciones para Windows. Así que no, eso no es programación de sistemas.
La programación de sistemas no es solo «cercana al sistema operativo» – es algo esencial al funcionamiento básico del sistema informático. Por lo tanto, escribir un SO es programación de sistemas. Escribir controladores de video, controladores de sistema de archivos, controladores de red para ese SO es programación de sistemas. Escribir un compilador para una combinación particular de lenguaje / chipset es programación de sistemas.
Respuesta
Normalmente, se refiere a «cosas de bajo nivel que los usuarios finales no técnicos no saben que existen o no saben muy claramente lo que están usando o lo que hacen «.
Algunos ejemplos que a menudo se considerarían programación de sistemas:
- sistemas operativos y controladores
- compiladores
- emuladores y d virtualización
-
creación de la distribución, es decir, la creación de imágenes del área de usuario.
Esto normalmente implica seleccionar la biblioteca estándar de C, el sistema de inicio y los componentes básicos del área de usuario como un shell.
La programación de sistemas a menudo se realiza en lenguajes de nivel compilado inferior sin recolección automática de basura como C o ensamblador, y tienden a acceder a llamadas de sistema menos comunes a menudo a través de Interfaces POSIX C .
Estoy manteniendo un tutorial práctico que cubre varios temas de programación del sistema aquí .
Respuesta
Al definir esto, me mantendría alejado de todos los detalles técnicos. 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 tiene como objetivo proporcionar características a un usuario, de manera bastante directa.
La programación del sistema por otro lado sentaría las bases para hacer posible la programación de aplicaciones. Ofrece funciones al programador de la aplicación en lugar de al 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, simplemente están fuera de la imagen.
Respuesta
En resumen, la programación del sistema en comparación con La programación de la aplicación es que el SP maneja el software del SO para trabajar con los recursos de hardware y el AP maneja la actividad de los usuarios finales.
Comentarios
- esto no ‘ No parece ofrecer nada sustancial sobre los puntos planteados y explicados en las 4 respuestas anteriores