Sistemas de programación , o la programación del sistema , es la actividad de programación [1] ordenador software del sistema . 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 directamente (por ejemplo, procesador de texto ), mientras que la programación de sistemas tiene como objetivo producir software y plataformas de software que brindan servicios a otro software. tienen un rendimiento limitado, o ambos (por ejemplo , sistemas operativos , aplicaciones de ciencia computacional , motores de juegos , automatización industrialy software como aplicaciones de servicio ). [1]
La programación de sistemas requiere un alto grado de conocimiento del hardware. Su objetivo es lograr un uso eficiente de los recursos disponibles, ya sea porque el software en sí es crítico para el rendimiento o porque incluso pequeñas mejoras de eficiencia se transforman directamente en ahorros significativos de tiempo o dinero.
Descripción general
Los siguientes atributos caracterizan la programación de sistemas:
- El programador puede hacer suposiciones sobre el hardware y otras propiedades del sistema en el que se ejecuta el programa y, a menudo, explotará esas propiedades, por ejemplo, utilizando un algoritmo que se sabe que es eficiente cuando se usa con hardware específico.
- Por lo general, se utiliza un lenguaje de programación de bajo nivel o un dialecto de lenguaje de programación para que:
- Los programas pueden operar en entornos con recursos limitados
- Los programas pueden ser eficientes con poca sobrecarga de tiempo de ejecución , posiblemente con una pequeña biblioteca de tiempo de ejecución o ninguna.
- Los programas pueden usar control directo y "sin procesar" sobre el acceso a la memoria y el flujo de control.
- El programador puede escribir partes del programa directamente en lenguaje ensamblador.
- A menudo, los programas de sistemas no se pueden ejecutar en un depurador . En ocasiones, se puede utilizar la ejecución del programa en un entorno simulado para reducir este problema.
La programación de sistemas es lo suficientemente diferente de la programación de aplicaciones que los programadores tienden a especializarse en una u otra. [ cita requerida ]
En la programación de sistemas, a menudo se dispone de recursos de programación limitados. El uso de la recolección automática de basura no es común y la depuración a veces es difícil de hacer. La biblioteca en tiempo de ejecución , si está disponible, suele ser mucho menos potente y realiza menos comprobaciones de errores. Debido a esas limitaciones, a menudo se utilizan la supervisión y el registro ; Los sistemas operativos pueden tener subsistemas de registro extremadamente elaborados.
La implementación de ciertas partes en sistemas operativos y redes requiere programación de sistemas, por ejemplo, implementar paginación ( memoria virtual ) o un controlador de dispositivo para un sistema operativo.
Historia
Originalmente, los programadores de sistemas escribían invariablemente en lenguaje ensamblador . Los experimentos con soporte de hardware en lenguajes de alto nivel a finales de la década de 1960 llevaron a lenguajes como PL / S , BLISS , BCPL y ALGOL extendido para sistemas grandes de Burroughs . Forth también tiene aplicaciones como lenguaje de sistemas. En la década de 1970, C se volvió omnipresente, ayudado por el crecimiento de Unix . Más recientemente, un subconjunto de C ++ llamado Embedded C ++ ha tenido algún uso, por ejemplo, se usa en los controladores del kit de E / S de macOS . [2]
Uso alternativo
Por razones históricas, algunas organizaciones utilizan el término programador de sistemas para describir una función laboral que se denominaría con mayor precisión administrador de sistemas . Esto es particularmente cierto en organizaciones cuyos recursos informáticos han estado históricamente dominados por mainframes , aunque el término incluso se utiliza para describir funciones laborales que no involucran mainframes. Este uso surgió porque la administración de mainframes de IBM a menudo implicaba la escritura de código ensamblador personalizado ( lenguaje ensamblador básico de IBM (BAL)), que se integraba con el sistema operativo como OS / MVS , DOS / VSE o VM / CMS . De hecho, algunos productos de software de IBM tuvieron contribuciones sustanciales de código del personal de programación del cliente. Este tipo de programación es cada vez menos común, pero el término programador de sistemas sigue siendo el título de trabajo de facto para el personal que administra directamente los mainframes de IBM.
Ver también
- La dicotomía de Ousterhout
- Lenguaje de programación del sistema
- Lenguaje de escritura
- Controlador de interrupciones
Referencias
- ^ a b "Panel: programación de sistemas en 2014 y más allá" . Microsoft . Consultado el 4 de diciembre de 2015 .
- ^ Apple Inc (14 de agosto de 2009). "Pautas de diseño del controlador de dispositivo del kit de E / S" . developer.apple.com . Apple . Consultado el 16 de septiembre de 2014 .
Otras lecturas
- Programación de sistemas por John J. Donovan