Un lenguaje de programación del sistema es un lenguaje de programación utilizado para la programación del sistema ; Dichos lenguajes están diseñados para escribir software de sistemas , que generalmente requiere diferentes enfoques de desarrollo en comparación con el software de aplicación. Edsger Dijkstra se refiere 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 enfocarse en características genéricas para permitir que los programas escritos en el lenguaje usen el mismo código en diferentes plataformas. Ejemplos de tales lenguajes incluyen ALGOL y Pascal . Esta cualidad genérica generalmente tiene el costo de negar el acceso directo al funcionamiento interno de la máquina, y esto a menudo tiene efectos negativos en el rendimiento.
Los lenguajes del 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 tiempo que proporcionan conceptos de programación de alto nivel como la programación estructurada . Los ejemplos incluyen SPL y ESPOL , los cuales son similares a ALGOL en sintaxis pero sintonizados con sus respectivas plataformas. Otros son multiplataforma pero diseñados para trabajar cerca del hardware, como BLISS , JOVIAL y BCPL .
Algunos lenguajes se sitúan entre los dominios del sistema y de las aplicaciones, reduciendo la brecha entre estos usos. El ejemplo canónico es C , que se usa ampliamente para la programación de aplicaciones y sistemas. 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 era BCPL . Los lenguajes de programación del sistema 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 gestión de pantalla o E / S de monitor. 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 del sistema se escribió en lenguaje ensamblador principalmente porque no había alternativa, pero también por razones que incluyen la eficiencia del código objeto, el tiempo de compilación y la facilidad de depuración. Los lenguajes de aplicación como FORTRAN se utilizaron para la programación del sistema, 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 "tienen 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 estos fue ESPOL en mainframes Burroughs en aproximadamente 1960, seguido por Niklaus Wirth 's PL360 (primera escrito en un sistema de Burroughs como un compilador cruzado ), que tenía la sintaxis general de ALGOL 60 pero cuyos estados CPU directamente manipulado registros y memoria. Otros idiomas en esta categoría incluyen MOL-360 y PL / S .
A modo de 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 unirse juntos, el resultado se desplazó 8 bits a la izquierda, el resultado de eso se ordenó con el contenido del registro 6 y el resultado final se colocó en registro 9. [3]
Idiomas de nivel superior
Mientras que PL360 está en el nivel semántico del lenguaje ensamblador, otro tipo de lenguaje de programación del sistema opera a un nivel semántico más alto, pero tiene extensiones específicas diseñadas para hacer que el lenguaje sea adecuado para la programación del sistema. Un ejemplo temprano de este tipo de lenguaje es LRLTRAN, [4] que amplió Fortran con características para la manipulación de caracteres y bits, punteros y tablas de salto direccionadas directamente.
Posteriormente, se desarrollaron lenguajes como C, donde la combinación de características era suficiente para escribir software del sistema, y se podía desarrollar un compilador que generara programas de objetos eficientes en hardware modesto. Dicho 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 de hardware; El código ensamblador en línea , como la instrucción asm 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.
Lenguaje de programación del sistema (SPL) es también el nombre de un lenguaje específico en la serie de computadoras HP 3000 , utilizado para su sistema operativo HP Multi-Programming Executive (MPE) y otras partes de su software de sistema.
Idiomas principales
Idioma | Autor | Fecha de nacimiento | Influenciado por | Usado para |
---|---|---|---|---|
ESPOL | Corporación Burroughs | 1961 | ALGOL 60 | MCP |
PL / I | IBM , COMPARTE | 1964 | ALGOL, FORTRAN, algo de COBOL | Multics |
PL / S | IBM | 1960 | PL / I | OS / 360 |
PL360 | Niklaus Wirth | 1968 | ALGOL 60 | ALGOL W |
Pascal | Niklaus Wirth | 1970 | ALGOL W | Apollo Computer Aegis, Apple MacApp |
FELICIDAD | Universidad de Carnegie mellon | 1970 | ALGOL-PL / I [5] | VMS (porciones) |
C | Dennis Ritchie | 1972 | BCPL , B (lenguaje de programación) | La mayoría de los núcleos de los sistemas operativos , incluidos los sistemas similares a Unix |
NEWP | Burroughs | 1970 | ESPOL, ALGOL | MCP |
PL / 8 | IBM | 1970 | PL / I | AIX |
PL-6 | Honeywell, Inc. | 1970 | PL / I | CP-6 |
SYMPL | Centros para el Control y la Prevención de Enfermedades | 1970 | JOVIAL | Subsistemas NOS , la mayoría de compiladores, editor FSE |
C ++ | Bjarne Stroustrup | 1979 | C , Simula | Aplicaciones C ++ [6] |
Ada | Jean Ichbiah , S. Tucker Taft | 1983 | ALGOL 68 , Pascal , C ++ , Java , Eiffel | Sistemas integrados, kernels de SO, compiladores, juegos, simulaciones, CubeSat , control de tráfico aéreo, aviónica |
D | Marte digital | 2001 | C ++ | Varios dominios |
Nim | Andreas Rumpf | 2006 | Python , Ada , Lisp , Oberon , C ++ , Modula-3 , Object Pascal | Juegos, compiladores, kernels de SO, desarrollo de aplicaciones, sistemas integrados , etc. |
Oxido | Investigación de Mozilla [7] | 2010 | C ++ , Haskell , Erlang , Ruby | Servo , SO Redox |
Rápido | Apple Inc. | 2014 | C , objetivo-C , D , óxido | Desarrollo de aplicaciones macOS , iOS , watchOS y tvOS [a] |
Ver también
- La dicotomía de Ousterhout
- Lenguaje para el desarrollo de sistemas
- PreScheme
Notas
- ^ Swift utiliza el recuento automático de referencias
Referencias
- ↑ a b van der Poel, WL; Maarssen, LA, eds. (27 a 31 de agosto de 1973). Lenguajes de nivel superior orientados a máquina . Conferencia de trabajo IFIP sobre lenguajes de nivel superior orientados a máquinas (MOHL). Trondheim, Noruega: Federación Internacional de Procesamiento de Información. Actas publicadas en 1974.
- ^ a b Sammet, Jean (octubre de 1971). "Breve estudio de los lenguajes utilizados para la implementación de sistemas". Avisos ACM SIGPLAN . 6 (9): 1–19. doi : 10.1145 / 942596.807055 .
- ^ Wirth, Niklaus . "PL360, un lenguaje de programación para las computadoras 360". Revista de la ACM . 15 (1): 37–74.
- ^ Mendicino, Sam F .; Hughes, Robert A .; Martin, Jeanne T .; McMahon, Frank H .; Ranelletti, John E .; Zwakenberg, Richard G. "El compilador LRLTRAN". Comunicaciones de la ACM . 11 (11): 747–755.
- ^ 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 .
- ^ "Aplicaciones C ++" .
- ^ "Investigación de Mozilla" . 1 de enero de 2014.
enlaces externos
- Corbató, Fernando (6 de mayo de 1969). "PL / I como herramienta para la programación del sistema" . Datamación : 68–76 . Consultado el 23 de enero de 2012 .
- Lenguajes de programación del sistema
Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.