2010-11-05 14 views
5

El ir a hablar pdf 2009 tiene un comentario para explicar por qué se les ocurrió el idioma ir:¿Qué significa un 'lenguaje de sistemas'?

 
No new major systems language in a decade. 

¿Cuál es el significado del lenguaje sistemas?

  • ¿Es un lenguaje que se supone que se ejecuta en el sistema de destino mediante la generación de binarios nativos?
  • ¿Es un lenguaje que puede construir un sistema operativo por sí mismo?

Puedo ver C#/Java es `no 'un lenguaje de sistemas, y C/C++ es.

Respuesta

10

Es una distinción tosca e informal, pero la idea es que haya "lenguajes de programación de aplicaciones" dirigidos a programadores que desarrollen aplicaciones comerciales englobadas y "lenguajes de programación de sistemas" dirigidos a programadores que programan herramientas para otros programadores (compiladores, etc.) y software de bajo nivel como núcleos del sistema operativo, controladores de dispositivos, etc.

En resumen, la mayoría de los lenguajes (inventados recientemente, de todos modos) están diseñados para facilitar el desarrollo de software para el usuario con algún dominio no computacional --- finanzas, ingeniería, etc. Los lenguajes de programación de sistemas son aquellos, como C, FORTH, Go, etc. que están destinados o al menos son adecuados para la programación en el dominio de la informática.

Estos, a menudo, pero no siempre, cuentan con una compilación de código nativo, sistemas de tipo suelto que permiten un extenso "control" y acceso no administrado a la memoria a través de punteros o una construcción equivalente.

+0

Ciertamente no veo por qué la memoria no administrada debería ser una característica aquí. Puede tener memoria administrada Y punteros. –

+1

@ Matthieu M .: correcto, pero la característica clave aquí fue el acceso a la memoria no administrada, no los punteros. Piense en los controladores de dispositivos, núcleos de sistema operativo, etc .-- en algún momento necesita la capacidad de leer y escribir en ubicaciones de memoria arbitrarias. Además, cualquier lenguaje administrado por memoria que permita punteros (es decir, un tipo aritmético que represente ubicaciones de memoria) impondrá algunas comprobaciones de tiempo de ejecución importantes, que no es exactamente lo que piensa la mayoría de la gente cuando piensa en "punteros". –

3

Look here? Disculpe si se trata de un enlace comercial, pero realmente esto debería ser todo lo que necesita. A menos que estés pidiendo algo más más específico.

Una razón por la que C# definitivamente no es un lenguaje de sistemas es su dependencia de .NET.

+0

¿Qué sucede si [un subconjunto de programación de sistemas] .NET formaba parte del kernel (solo otro paso de arranque)? ;-) Además, técnicamente, C# no requiere .NET (C# es solo una especificación de lenguaje: VS/.NET es una implementación, incluidas las bibliotecas útiles, y Mono es un compilador/tiempo de ejecución competidor). –

+0

sí ambos puntos buenos –

Cuestiones relacionadas