programming-languages - qué - tipos de lenguaje de alto nivel
Lenguaje de nivel bajo, medio y alto, ¿cuál es la diferencia? (12)
Bajo nivel significa más cerca de la máquina, y por lo tanto más difícil y más potente. Cuanto más alto nivel obtienes, más retirado de la máquina e "parecido al inglés" obtienes, pero pierdes una gran parte de la potencia y funcionalidad que conlleva el poder controlar los minuciosos detalles de la máquina. Los idiomas de nivel superior generalmente también tienden a protegerlo más y tienen muchas más precauciones y controles, mientras que los idiomas de nivel inferior le confían, por así decirlo, y le permiten jugar bajo su propio riesgo.
He escuchado estos términos describiendo idiomas antes, como C no es un lenguaje de bajo nivel, C ++ es un nivel medio y Python es un lenguaje de alto nivel. Entiendo que tiene que hacer algo con la forma en que se compila el código y cómo está escrito. Pero lo que quiero saber es ¿qué define un idioma en una de esas 3 categorías? ¿Son estas categorías absolutas, o simplemente una idea general que utilizan los programadores para describir los idiomas entre sí?
C es el lenguaje de nivel medio BECOZ podemos usar código en lenguaje ensamblador solo un pequeño puntero de diferencia lo hace poderoso (si el puntero elimina en c lo considerará en bajo nivel) Su función portátil es medio lavel así que podemos decir que es un lenguaje de nivel medio.
De bajo a alto, puede categorizar los idiomas de la siguiente manera.
Código de máquina -> Lenguaje ensamblador -> Lenguaje compilado -> Lenguaje interpretado
Recuerde que estas no son definiciones absolutas en blanco y negro, sino tonos de gris. Esto es más una pauta que una regla.
Piense en el código de máquina como una larga cadena de 1s y 0 entendidos por la plataforma nativa. Considera esta tu línea de base ... el "nivel" más bajo que puedas tener.
El lenguaje ensamblador podría considerarse una representación simbólica de esto. Creo que hay una asignación de 1 a 1 entre las instrucciones del código de ensamblaje y las instrucciones del código de máquina. Este es tu lenguaje de bajo nivel.
Java y C ++, por ejemplo, son ambos lenguajes compilados, pero muchos considerarían que C ++ es un lenguaje de nivel inferior que Java porque expone el acceso de bajo nivel al sistema, mientras que Java se ejecuta en un entorno protegido (la máquina virtual). Recuerde que un lenguaje compilado se compila (convertido, si se quiere) a código de máquina antes de la ejecución. C también es un lenguaje compilado, pero se consideraría un nivel más bajo que Java y C ++.
Por nuestro bien, diremos que C y C ++ son lenguajes de bajo nivel porque ofrecen (relativamente) poca abstracción del hardware y la administración directa de la memoria. En realidad, caen en algún lugar entre bajo y medio, como verá pronto.
Llamaremos a los lenguajes de nivel medio Java y C # (.NET) porque tienen administración de memoria automática (recolección de basura), muchas abstracciones de alto nivel (objetos de IE ... pero C ++ admite objetos. ¿Ves por qué se considera que la escala ser vagamente definido?)
Con un lenguaje interpretado, el intérprete reside en la memoria y lee el código fuente directamente. Estos son lenguajes de alto nivel. Python, Perl, Javascript y PHP son ejemplos de lenguajes de alto nivel.
El término lenguaje de nivel medio es uno que nunca he escuchado.
"Bajo" y "Alto" se refieren a qué tan "cerca" de la máquina está en su programación. El nivel más bajo sería el código de máquina (binario). El siguiente (y aún considerado bajo) es el ensamblador. Los lenguajes de nivel superior involucran más simbolismos y construcciones que se supone que están más cerca de lo que los humanos normalmente piensan. C (y algo C ++) tiene una reputación como algo híbrido de nivel bajo / alto porque tiene muchas construcciones que están en idiomas de alto nivel, pero también tiene instrucciones (por ejemplo, cambios) que son idiomas de bajo nivel pero a menudo no en idiomas de nivel superior. .
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 cantidad pequeña o inexistente de abstracción entre el lenguaje y el lenguaje de máquina; debido a esto, los lenguajes de bajo nivel a veces se describen como "cercanos al hardware". Un lenguaje de bajo nivel no necesita un compilador o intérprete para ejecutar; el procesador para el que se escribió el lenguaje puede ejecutar el código sin utilizar ninguno de estos .
En comparación, un lenguaje de programación de alto nivel aísla la semántica de ejecución de una arquitectura de computadora de la especificación del programa, haciendo que el proceso de desarrollo de un programa sea más simple y comprensible.
Los idiomas de nivel medio se interponen entre los dos anteriores
Los idiomas de bajo nivel están muy cerca del lenguaje de máquina que puede ser binario o RTL. Difícil de escribir y muy rápido de ejecutar. Puede interactuar con el hardware y el lenguaje de programación de alto nivel es muy fácil de escribir, pero se puede ejecutar después de la compilación.
Muy bajo nivel: Código de máquina
Nivel bajo: Ensamblador, Forth
Nivel medio: C, C ++, la mayoría de los lenguajes de programación del sistema
Nivel medio / alto: D, Go, lenguaje de programación del sistema recolector de basura
Nivel alto: Java, C #, la mayoría de los idiomas interpretados
Incluso nivel superior: dialectos Lisp
Nivel más alto: SQL, lenguajes de programación declarativos
Si hay algo más que agregar, dígame.
No son absolutos Todos son relativos a los otros idiomas que se usan en la industria en ese momento. Por ejemplo, hubo un momento en que el montaje se consideraba de nivel medio.
El ''nivel'' es esencialmente una medida de qué tan abstraído está el programador de las operaciones reales basadas en hardware. En un lenguaje de bajo nivel, puede que tenga que preocuparse por las ubicaciones reales de la memoria, mientras que en un nivel alto simplemente crea variables y deja que el SO maneje la memoria.
Una CPU normal procesa instrucciones de 32 o 64 bits. En la forma más simple, piense en esto como 32 1''s y 0''s seguidos, eso es lo que el procesador realmente interpreta y ejecuta. Escribir esto directamente (código de máquina) sería el ''nivel más bajo''.
Sí, son solo términos generales. Tiene que ver con la abstracción y lo cerca que estás de lo que la computadora realmente está haciendo.
Aquí hay una lista de lenguajes de programación que van desde muy bajo hasta muy alto nivel:
Machine Code probablemente podría considerarse el lenguaje de programación de nivel más bajo.
El lenguaje ensamblador está al nivel de decirle al procesador qué hacer. Todavía hay un paso de conversión hacia el código de máquina.
C es un paso adelante del ensamblador, porque puedes especificar lo que quieres hacer en términos ligeramente más abstractos, pero aún estás bastante cerca del metal.
C++ hace todo lo que C puede hacer, pero agrega la capacidad de abstraer cosas en clases.
Java / C# hace cosas similares a C ++ de una manera, pero sin la oportunidad de hacer todo lo que puede hacer en C (como la manipulación del puntero en el caso de Java [gracias Joe!]). Sin embargo, tienen recolección de basura, que tienes que hacer manualmente en C ++.
Python / Ruby tienen un nivel aún más alto, y te permiten olvidarte de muchos detalles que necesitarías especificar en algo como Java o C #.
SQL es incluso un nivel más alto (es declarativo). Solo di "Dame todos los elementos de la tabla ordenados por edad" y te resultará la forma más eficiente de llevar esto a cabo por ti.
Una vez que agrega un espectro de niveles de un lenguaje de programación, agrega matices a la definición. Claramente, el código de máquina y el ensamblaje dependen de la máquina. C y C ++ en teoría son independientes de la máquina, pero en verdad eso no es universal. En C cosas como la alineación NECESITAN tenerse en cuenta y siempre se puede administrar la pila en C y en el subconjunto C de C ++) mediante un puntero y una variable inicializada única, si estás lo suficientemente loco, de modo que (x86) la rsp nunca se usa Entonces C, sí, es de nivel medio. Todo lo demás es de alto nivel, algo de súper alto nivel.
bajo nivel = tiempo de desarrollo largo + archivo ejecutable muy rápido
nivel alto = tiempo de desarrollo más corto + archivo ejecutable más lento
el nivel medio está entre los dos
es todo relativo ... el "nivel" refleja la cantidad de abstracción.