stringtranslate.com

Lenguaje de programación de sistemas

Un lenguaje de programación de sistemas es un lenguaje de programación utilizado para la programación de sistemas ; dichos lenguajes están diseñados para escribir software de sistemas , que generalmente requiere enfoques de desarrollo diferentes en comparación con el software de aplicación. Edsger Dijkstra se refirió a estos lenguajes como lenguajes de orden superior orientados a máquinas o mohol . [1]

Los lenguajes de programación de propósito general tienden a centrarse en características genéricas para permitir que los programas escritos en el lenguaje utilicen el mismo código en diferentes plataformas. Algunos ejemplos de estos lenguajes son ALGOL y Pascal . Esta cualidad genérica suele tener como consecuencia la negación del acceso directo al funcionamiento interno de la máquina, lo que suele tener efectos negativos en el rendimiento.

Los lenguajes de sistema, por el contrario, no están diseñados para la compatibilidad, sino para el rendimiento y la facilidad de acceso al hardware subyacente, al mismo tiempo que ofrecen conceptos de programación de alto nivel como la programación estructurada . Algunos ejemplos son ESPOL y SPL , ambos similares a ALGOL en sintaxis, pero adaptados a sus respectivas plataformas. Otros son multiplataforma, pero están diseñados para funcionar cerca del hardware, como BLISS , JOVIAL y BCPL .

Algunos lenguajes abarcan los dominios de sistemas y aplicaciones, y cubren la brecha entre estos usos. El ejemplo canónico es C , que se utiliza ampliamente tanto para la programación de sistemas como para la de aplicaciones. Algunos lenguajes modernos también hacen esto, como Rust y Swift .

Características

A diferencia de los lenguajes de aplicación, los lenguajes de programación de sistemas suelen ofrecer un acceso más directo al hardware físico de la máquina: un lenguaje de programación de sistemas arquetípico en este sentido fue BCPL . Los lenguajes de programación de sistemas a menudo carecen de funciones de entrada/salida (E/S) integradas porque un proyecto de software de sistema generalmente desarrolla sus propios mecanismos de E/S o se basa en funciones básicas de E/S de monitor o de gestión de pantalla. La distinción entre los lenguajes utilizados para la programación de sistemas y la programación de aplicaciones se volvió borrosa con el tiempo con la popularidad generalizada de PL/I , C y Pascal .

Historia

El primer software de sistemas se escribió en lenguaje ensamblador principalmente porque no había otra alternativa, pero también por razones como la eficiencia del código objeto, el tiempo de compilación y la facilidad de depuración. Se utilizaron lenguajes de aplicación como FORTRAN para la programación de sistemas, aunque por lo general todavía requerían que algunas rutinas se escribieran en lenguaje ensamblador. [2]

Idiomas de nivel medio

Los lenguajes de nivel medio "poseen gran parte de la sintaxis y las facilidades de un lenguaje de nivel superior, pero también proporcionan acceso directo en el lenguaje (además de proporcionar lenguaje ensamblador) a las características de la máquina". [2] El primero de ellos fue ESPOL en mainframes Burroughs en 1960 aproximadamente, seguido por PL360 de Niklaus Wirth (escrito por primera vez en un sistema Burroughs como compilador cruzado ), que tenía la sintaxis general de ALGOL 60 pero cuyas declaraciones manipulaban directamente los registros y la memoria de la CPU. Otros lenguajes de esta categoría incluyen MOL-360 y PL/S .

Como ejemplo, una declaración PL360 típica es R9 := R8 and R7 shll 8 or R6, lo que significa que los registros 8 y 7 deben combinarse mediante la operación AND, el resultado debe desplazarse 8 bits a la izquierda, el resultado de esa operación debe combinarse con el contenido del registro 6 y el resultado final debe colocarse en el registro 9. [3]

Lenguajes de nivel superior

Si bien PL360 se encuentra en el nivel semántico del lenguaje ensamblador, otro tipo de lenguaje de programación de sistemas opera en un nivel semántico más alto, pero tiene extensiones específicas diseñadas para que el lenguaje sea adecuado para la programación de sistemas. Un ejemplo temprano de este tipo de lenguaje es LRLTRAN, [4] que extendió Fortran con funciones para manipulación de caracteres y bits, punteros y tablas de saltos direccionadas directamente.

Posteriormente, se desarrollaron lenguajes como C, donde la combinación de características era suficiente para escribir software de sistema, y ​​se podía desarrollar un compilador que generaba programas de objetos eficientes en hardware modesto. Este tipo de lenguaje generalmente omite características que no se pueden implementar de manera eficiente, y agrega una pequeña cantidad de características dependientes de la máquina necesarias para acceder a capacidades específicas del hardware; el código ensamblador en línea , como asmla declaración de C, se usa a menudo para este propósito. Aunque se desarrollaron muchos de estos lenguajes, [1] C y C++ son los que sobrevivieron.

Idiomas principales

Véase también

Notas

Referencias

  1. ^ ab van der Poel, WL; Maarssen, LA, eds. (27–31 de agosto de 1973). Lenguajes de alto nivel orientados a máquinas . Conferencia de trabajo de la IFIP sobre lenguajes de alto nivel orientados a máquinas (MOHL). Trondheim, Noruega: Federación Internacional para el Procesamiento de la Información.Actas publicadas en 1974.
  2. ^ ab Sammet, Jean (octubre de 1971). "Breve estudio de los lenguajes utilizados para la implementación de sistemas". ACM SIGPLAN Notices . 6 (9): 1–19. doi : 10.1145/942596.807055 .
  3. ^ Wirth, Niklaus (1968). "PL360, un lenguaje de programación para las computadoras 360". Revista de la ACM . 15 (1): 37–74. doi :10.1145/321439.321442.
  4. ^ Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. (1968). "El compilador LRLTRAN". Comunicaciones de la ACM . 11 (11): 747–755. doi :10.1145/364139.364154.
  5. ^ Wulf, WA; Russell, DB; Haberman, AN (diciembre de 1971). "BLISS: Un lenguaje para la programación de sistemas". Comunicaciones de la ACM . 14 (12): 780–790. CiteSeerX 10.1.1.691.9765 . doi :10.1145/362919.362936. 
  6. ^ "Estudio de caso: BAE Systems Eurofighter Typhoon" (PDF) .
  7. ^ "¿Qué lenguajes de programación se utilizan para los equipos a bordo de los aviones?".
  8. ^ "TGVweb - el sistema de señalización TGV".
  9. ^ "Acorazado".
  10. ^ "M2OS. RTOS con soporte de tareas simples para pequeños microcontroladores".
  11. ^ "Jgrivera67/HiRTOS". GitHub .
  12. ^ "Modular Inc." www.modular.com . Consultado el 25 de marzo de 2024 .
  13. ^ "Proyectos de investigación de Mozilla". Archivado desde el original el 4 de enero de 2014.

Enlaces externos