tutorial programming programacion lenguaje languages language examples descargar programming-languages low-level high-level

programming languages - programming - ¿Qué lenguajes de programación no son considerados de alto nivel?



ruby wikipedia (8)

En teoría de la informática, escucho y leo sobre idiomas de alto y bajo nivel todo el tiempo.

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

Así que tienes:

Nivel bajo

  • Ensamblador

Definitivamente no es de bajo nivel

  • do
  • BASIC
  • FORTRAN
  • COBOL
  • ...

Nivel alto

  • C ++
  • Rubí
  • Pitón
  • PHP
  • ...

Y si el ensamblador es de bajo nivel, ¿cómo podría poner, por ejemplo, C en la misma lista? Quiero decir: C es un nivel extremadamente alto en comparación con el ensamblador. Lo mismo incluso para COBOL, Fortran, etc.

  • Entonces, ¿por qué todos siguen mencionando los lenguajes de alto y bajo nivel si el ensamblador es realmente el único lenguaje de bajo nivel?

Como nivel bajo, agregaría:

  • .NET IL
  • Java JVM
  • Otros P-Code utilizados en entornos como VB6

En gran medida, las categorías de "nivel bajo" y "nivel alto" no son binarias, sino que son un continuo. Hay algunos lenguajes que son claramente de bajo nivel (ensamblaje, código de máquina), pero más allá de eso, en realidad solo hay "nivel superior" y "nivel inferior".

Como lo veo, los idiomas de "nivel inferior" requieren un código que se parece más a la arquitectura de la computadora, y los idiomas de "nivel superior" aceptan el código que se parece más a la estructura del problema. Pero con eso, los idiomas pueden ser de alto nivel para un problema y de bajo nivel para otro.


Encontraras eso

Muchas de las verdades a las que nos aferramos dependen de nuestro propio punto de vista.

Para un programador de C, Assembler 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 que programó la primera computadora con programa almacenado con 1s y 0s hubiera pensado que Assembler era un lenguaje de alto nivel. Todo es relativo.

(Cita del Regreso del Jedi )


Ensamblador binario de bajo nivel

ET IL Java JVM Otro P-Code usado en entornos como VB6

Definitivamente no es de bajo nivel

C BASIC FORTRAN COBOL Python Perl Pascal

Esquema de programación de alto nivel en C ++ Ruby Python PHP


Estás haciendo una pregunta relativamente subjetiva; Es una pregunta sobre terminología, vernáculo y perspectiva.

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

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

Cualidades que cuentan para la proximidad de una implementación al hardware:

  • El programador controla directamente el diseño de la memoria de los datos y tiene acceso en tiempo de ejecución a las direcciones de memoria de los datos.
  • Las operaciones matemáticas se definen en términos del hardware o se definen de forma flexible para adaptarse a los diferentes tipos de hardware.
  • Puede haber una biblioteca que proporcione asignación de memoria dinámica, pero el uso de la memoria dinámica es manual.
  • La gestión de la memoria durante la manipulación de cuerdas es manual.

Cualidades de Converse que cuentan para la abstracción de una implementación del hardware:

  • El programador no tiene acceso en tiempo de ejecución a la dirección de los 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 admite el tipo de Number que se convierte automáticamente de entero a punto flotante en lugar de desbordamiento de experiencia).
  • La administración de la memoria dinámica es manejada por el entorno, posiblemente a través del conteo de referencias, recolección de basura u otro esquema de administración de memoria automatizada.
  • La gestión de la memoria durante la manipulación de cadenas siempre está oculta para el programador y es manejada por el entorno.

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

  • Sintaxis declarativa, basada en la búsqueda. (por ejemplo, Prolog)

Con factores como estos en mente, revisaría el espectro que ha escrito de la siguiente manera:

Nivel más bajo:

  • Lenguaje ensamblador de la plataforma en cuestión.

Lenguajes de bajo nivel con control de flujo de nivel superior al de ensamblaje:

  • C, C ++
  • Pascal

Lenguajes de alto nivel:

  • FORTRAN
  • COBOL
  • Pitón
  • Perl

Idiomas de más alto nivel:

  • PRÓLOGO
  • Pitón
  • Esquema

Python aparece dos veces por intención: abarca una parte del espectro según cómo se escribe el código.


Según Wikipedia , los lenguajes de bajo nivel son el código de máquina y el ensamblaje.

De la fuente:

En informática, un lenguaje de programación de bajo nivel es un lenguaje de programación que proporciona poca o ninguna abstracción de la arquitectura de conjunto de instrucciones de una computadora. La palabra "bajo" se refiere a la pequeña o inexistente cantidad de abstracción entre el lenguaje y el lenguaje de la máquina; debido a esto, los lenguajes de bajo nivel a veces se describen como "cerca del hardware".

Luego, para responder:

Entonces, ¿por qué todos siguen mencionando lenguajes de alto y bajo nivel si ensamblador es realmente el único lenguaje de bajo nivel?

No sé quién es "todo el mundo", pero me atrevería a suponer que cuando los idiomas de alto nivel no eran tan comunes como lo son hoy en día, era más relevante hablar de nivel bajo en comparación con nivel alto (porque había una cantidad relativamente significativa de programadores que escribían código ensamblador). En los tiempos modernos es una distinción menos importante. Personalmente, rara vez escucho a las personas que usan estos términos, excepto para diferenciar entre ensamblaje o no (excepto en aquellos momentos en los que es posible que escuche a alguien criado en Python refiriéndose a C o C ++ como de bajo nivel, pero esto no es el espíritu de la definición original ).


Simplemente adivinando aquí, pero esto puede ser un caso de cambio de idioma, en el que la distinción entre idiomas de bajo y alto nivel está evolucionando lentamente en la mente de las personas hacia la diferencia entre los idiomas administrados y no administrados, los tipos mecanografiados y no tipificados. etcétera etcétera. (Al menos en la forma en que la gente usa la terminología).


El "nivel" de un idioma es un objetivo en movimiento. En 1973, PL / I fue considerado un lenguaje de alto nivel. Hoy en día, C es considerado (al menos por profesionales de la lengua) como un lenguaje de bajo nivel [ver nota al pie]. Algunas de las razones:

  • Expone representaciones de números a nivel de máquina.
  • Aritmética "entera" puede desbordar
  • No hay soporte real para cadenas, o al menos, las cadenas no son de primera clase
  • Gestión de memoria manual
  • Aritmética de direcciones
  • Inseguro

Un lenguaje de alto nivel puede incluir

  • Soporte para tipos enteros independientes de la máquina destino
  • La aritmética de enteros predeterminada nunca se desborda a menos que la máquina se quede sin memoria
  • Cadenas como valores de primera clase con, por ejemplo, concatenación incorporada
  • Gestión automática de la memoria sin aritmética de direcciones.
  • Seguro

Algunos candidatos como "idiomas de alto nivel" según esta definición podrían incluir Icon, Scheme, Smalltalk y algunos de sus lenguajes de scripting favoritos.

En la época en que yo era un joven erudito y los dinosaurios vagaban por la tierra, la gente se refería a Icon como un "lenguaje de muy alto nivel". Hace tan solo 15 años, incluso podría asistir a un simposio aprendido sobre idiomas de muy alto nivel. Pero ese término ya no se usa mucho.

¿Por qué todos siguen mencionando los idiomas de alto y bajo nivel?

A pesar de que la diferencia entre "alto" y "bajo" sigue cambiando, las distinciones como las que se enumeran anteriormente siguen siendo importantes. Y hay tanta distinción que las palabras "alto" y "bajo" pueden ser una taquigrafía útil. Pero no es tan útil: para un cínico, un lenguaje de alto nivel es uno que parece al menos tan poderoso como el que sea mi lenguaje favorito, y un lenguaje de bajo nivel es todo lo demás. En otras palabras, el "nivel" puede degenerar fácilmente en meros insultos.

Nota al pie: es difícil encontrar citas para la terminología utilizada en reuniones profesionales, especialmente cuando los profesionales no usan los términos "bajo nivel" y "alto nivel" porque no son tan técnicos. Pero danben preguntó sobre citas, y encontré una pareja:

PS No cuente demasiado con Wikipedia para obtener buena información sobre los lenguajes de programación, especialmente si la referencia de Wikipedia no cita referencias ni fuentes.