Pregunta

En la teoría de la informática que escucho y leo acerca de los lenguajes de alto nivel y de bajo nivel de todos los tiempos.

Sin embargo, yo no entiendo por qué esto sigue siendo relevante ya que no hay ningún lenguajes de bajo nivel (relevantes), excepto ensamblador en uso hoy en día.

Así se obtiene:

Bajo nivel

  • Ensamblador

Sin duda no es de bajo nivel

  • C
  • BASIC
  • FORTRAN
  • COBOL
  • ...

de alto nivel

  • C ++
  • Rubí
  • Python
  • PHP
  • ...

Y si es ensamblador de bajo nivel, ¿cómo se pone, por ejemplo, C en la misma lista. Es decir: C es extremadamente alto nivel en comparación con el ensamblador. Igual incluso para COBOL, Fortran, etc.

  • Entonces, ¿por qué todo el mundo mencionar alto y bajo nivel de idiomas si ensamblador es realmente el único lenguaje de bajo nivel?
¿Fue útil?

Solución

De acuerdo con Wikipedia , los lenguajes de bajo nivel son código de máquina y de reunión.

A partir de la fuente:

  

En informática, un bajo nivel   Lenguaje de Programación es una programación   lenguaje que proporciona poca o ninguna   abstracción desde un equipo de   set de instrucciones arquitectura. La palabra   "Baja" se refiere a la pequeña o   inexistente cantidad de abstracción   entre el lenguaje y la máquina   idioma; debido a esto, bajo nivel   lenguas a veces se describen como   siendo "cerca del hardware."

A continuación, a la respuesta:

  

Entonces, ¿por qué todo el mundo mencionar alto y bajo nivel de idiomas si ensamblador es realmente el único lenguaje de bajo nivel.

No sé que "todo el mundo" es, pero me atrevería a decir que detrás cuando lenguajes de alto nivel no eran tan comunes como lo son hoy, era más pertinente hablar de bajo nivel alto vs. nivel (porque había una cantidad relativamente importante de los programadores escribir código ensamblador). En los tiempos modernos es una distinción menos importante. En lo personal, rara vez escucho a las personas que usan estos términos, excepto para diferenciar entre el conjunto o no (excepto para aquellas ocasiones en las que se pueden oír a alguien criado en Python refiriéndose a C o C ++ como de bajo nivel, pero esto no está en el espíritu de la definición original ).

Otros consejos

Usted encontrará que

  

muchas de las verdades que se aferran a depender de nuestro propio punto de vista.

Para un programador de C, ensamblador es un lenguaje de bajo nivel. Para un programador de Java, C es un lenguaje de bajo nivel y así sucesivamente.

Sospecho que la gente de la programación rel="noreferrer"> de programa almacenado primera

(Cita de retorno del Jedi)

Usted está haciendo una pregunta relativamente subjetivo; que es una pregunta acerca de la terminología, que vernácula, y la perspectiva.

Por ejemplo, es un Lisp de alto nivel o un lenguaje de bajo nivel? ¿Qué pasa si la aplicación se ejecuta en una máquina Lisp?

A menudo, cuando las personas intentan construir un espectro de nivel bajo a alto nivel, lo que están tratando de cuantificar es un grado de "cercanía con el hardware", en contraposición con el grado de "abstracción".

Cualidades que cuentan hacia la cercanía de una implementación de hardware:

  • El programador controla directamente el diseño de memoria de datos y tiene acceso en tiempo de ejecución a las direcciones de memoria de datos.
  • Las operaciones matemáticas se definen en términos del hardware o vagamente definidos con el fin de ajustarse a diferentes tipos de hardware.
  • No puede ser una biblioteca que proporciona asignación dinámica de memoria, pero el uso de la memoria dinámica es manual.
  • Gestión de la memoria durante la manipulación de cadenas es manual.

El inverso cualidades que cuentan hacia la abstracción de una implementación del hardware:

  • El programador no tiene acceso en tiempo de ejecución a la dirección de datos (referencias en lugar de punteros).
  • Las operaciones matemáticas se definen en términos específicos no vinculados a hardware específico. (Por ejemplo, ActionScript 3 soportes del tipo que auto-convertidos del número entero a punto flotante en lugar de la experiencia de desbordamiento Number.)
  • Gestión de memoria dinámica es manejado por el medio ambiente, posiblemente a través de recuento de referencias, la recogida de basura, u otro esquema de gestión de memoria automática.
  • Gestión de la memoria durante la manipulación de cadenas siempre se oculta desde el programador y manejado por el medio ambiente.

Otras cualidades puedan hacer que un lenguaje muy abstracto en comparación con el hardware en el que se ejecuta:

  • declarativa, basada en la sintaxis de búsqueda. (Por ejemplo Prolog)

Con este tipo de factores en mente, me gustaría revisar el espectro de haber escrito la siguiente manera:

nivel más bajo:

  • El lenguaje ensamblador de la plataforma en cuestión.

idiomas de bajo nivel con control de flujo de nivel más alto que el montaje:

  • C, C ++
  • Pascal

Los lenguajes de alto nivel:

  • FORTRAN
  • COBOL
  • Python
  • Perl

Los lenguajes de alto nivel:

  • PROLOG
  • Python
  • Esquema

Python aparece dos veces por la intención -. Que abarca una porción del espectro en función de cómo se escribe el código

A medida que baja el nivel, yo añadiría:

  • .NET IL
  • Java JVM
  • Otro P-código utilizado en entornos como VB6

El "nivel" de una lengua es un objetivo en movimiento. En 1973, PL / I era considerado un lenguaje de alto nivel. Hoy en día, se considera C (al menos por los profesionales de la lengua) como un lenguaje de bajo nivel [véase la nota]. Algunas de las razones:

  • expone representaciones a nivel de máquina de números
  • "Entero" lata de desbordamiento aritmético
  • No hay soporte real para cuerdas, o por lo menos, las cadenas no son de primera clase
  • Gestión de la memoria manual
  • Dirección aritmética
  • inseguro

Un lenguaje de alto nivel podría incluir

  • Soporte para tipos de enteros independiente de la máquina de destino
  • aritmética de enteros por defecto nunca se desborda a menos que la máquina se queda sin memoria
  • Cuerdas como valores de primera clase con, por ejemplo, la concatenación construido en
  • gestión de memoria automática sin aritmética de direcciones
  • seguro

Algunos candidatos como "lenguajes de alto nivel" de esta definición pueden incluir iconos, Esquema, Smalltalk, y algunos de los lenguajes de programación favoritos.

En el día cuando era un joven estudiante y los dinosaurios vagaban por la tierra, la gente se refiere a un Icono como " muy lenguaje de alto nivel". tan recientemente como hace 15 años incluso se podría asistir a un simposio aprendido en nivel muy alto Idiomas. Pero ese término no se utiliza mucho más.

  

¿Por qué todo el mundo mencionar alto y bajo nivel de idiomas?

A pesar de que la diferencia entre "alta" y "baja" sigue cambiando, distinciones como los mencionados anteriormente siguen siendo importantes. Y hay muchos distinción que las palabras "altas" y "bajas" puede ser un atajo útil. Pero no tan útil a un cínico, un lenguaje de alto nivel es una que se parece al menos tan poderoso como lo que mi favorito es el idioma, y ??un lenguaje de bajo nivel es todo lo demás. En otras palabras, el "nivel" puede fácilmente degenerar en mera insultos.

Nota: Es difícil encontrar citas de la terminología utilizada en las reuniones profesionales, especialmente cuando los profesionales no utilizan los términos "bajo nivel" y "alto nivel" porque no son tan técnico. Pero danben preguntó acerca de citas, y me encontré con un par:


P.S. No cuentan demasiado en Wikipedia para una buena información sobre los lenguajes de programación, sobre todo si la referencia de Wikipedia no cita referencias o fuentes

puramente una suposición, pero esto puede ser un caso de la lengua de cambio, por lo que la distinción entre langauges de bajo y alto nivel está evolucionando lentamente en las mentes de la gente en la diferencia entre gestionan con y sin administrar-idiomas, mecanografiado y sin tipo-idiomas etc.etc. (Al menos en la forma en la gente está utilizando la terminología).

En gran medida, de "bajo nivel" y de "alto nivel" no categorías binarias sino que son un continuo. Hay algunas lenguas que son claramente de bajo nivel (montaje, código de máquina), pero más allá de que en realidad sólo hay "nivel superior" e "inferior nivel".

A mi entender, "bajar de nivel" lenguajes requieren código que se parece más la arquitectura de la computadora, y los idiomas "de alto nivel" Aceptar código que se parece más a la estructura del problema. Pero con eso, las lenguas pueden ser de alto nivel para un problema y de bajo nivel a otro.

bajo nivel Binario Ensamblador

ET IL Java JVM Otro P-código utilizado en entornos como VB6

Sin duda no es de bajo nivel

C BÁSICO FORTRAN COBOL Pitón Perl Pascal

Alto Nivel C ++ Rubí Pitón PHP PRÓLOGO Esquema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top