Lenguaje de bajo nivel

De Wikipedia, la enciclopedia libre
(Redirigido desde «Lenguajes de bajo nivel»)
Ir a la navegación Ir a la búsqueda

Un lenguaje de programación de características bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se utiliza este tipo de lenguajes para programar tareas críticas de los sistemas operativos, de aplicaciones en tiempo real o controladores de dispositivos.

Complejidad vs dificultad[editar]

Los lenguajes de bajo nivel como ser el lenguaje ensamblador puede ser más difícil que los lenguajes de alto nivel debido a que está más íntimamente relacionado con las características técnicas del hardware. Además estos suelen carecer de abstracciones de mayor nivel. No es posible una abstracción fuera de lo estipulado para el conjunto del microcódigos del microprocesador de un ordenador. Por otro lado, es más fácilmente traducible a lenguaje de máquina, tarea que realiza esencialmente un compilador.

De menor a mayor nivel de abstracción respecto del hardware es posible clasificar los lenguajes de programación de la siguiente manera:

  1. Lenguaje de máquina: Está formado por los 1s y 0s que ejecutará directamente la Unidad central de proceso (CPU). Al visualizar este lenguaje en un editor de texto plano parecerá sin sentido (caracteres basura). Muchos de ellos serán caracteres no imprimibles. Estos 0s y 1s representan literalmente instrucciones y datos a ser procesados.
  2. Lenguajes ensambladores (en inglés assembler): También denominados nemotécnicos o nemónicos, son un primer nivel de abstracción. No son ya programas ejecutables directamente por el ordenador, sino textos de código fuente inteligibles por humanos que necesitan de alguna herramienta (esencialmente un compilador) para su traducción a lenguaje de máquina que el CPU pueda ejecutar. Sus instrucciones suelen ser una denominación abreviada de la instrucción máquina que simbolizan, y tienen una correspondencia casi directa (uno a uno) a las instrucciones de máquina que representan. El código resultante de la compilación del lenguaje ensamblador genera un código de máquina binario ejecutable.
    Son instrucciones que ensamblan los grupos de conmutadores necesarios para expresar una mínima lógica aritmética. Están íntimamente vinculados al hardware. Algunas de estas instrucciones pueden ser por ejemplo MOV para mover un dato de un lugar a otro, o ADD para sumar dos valores. Por norma general están disponibles a nivel firmware, cmos o chip set. Estos lenguajes están orientados a procesos. Los procesos se componen de tareas. Contienen tantas instrucciones como la arquitectura del hardware así haya sido diseñada. La arquitectura CISC contiene muchas más instrucciones a este nivel, que la RISC.
    Los otros lenguajes que completan la clasificación no serían ya lenguajes de bajo nivel.
  3. Lenguajes de medio nivel: Son aquellos que, basándose en los juegos de instrucciones disponibles (chip set), permiten el uso de funciones a nivel aritmético, pero a nivel lógico dependen de literales en ensamblador. Estos lenguajes están orientados a procedimientos. Los procedimientos se componen de procesos.
    • Ejemplos: C, Basic. De mayor nivel pero aún así considerables de nivel medio: C++, Fortran, Cobol, Lisp.
  4. Lenguajes de alto nivel: Son aquellos que permiten una máxima flexibilidad al programador a la hora de abstraerse o de ser literal. Permiten un camino bidireccional entre el lenguaje máquina y una expresión casi oral entre la escritura del programa y su posterior compilación. Estos lenguajes suelen estar orientados a objetos, a eventos o a funciones, pudiendo estos combinarse. A su vez estos pueden ser compilados o interpretados.

Interacción máquina[editar]

En este tipo de lenguajes se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle, además, está completamente orientado a la máquina.

  • Adaptación - Máxima entre programación y aprovechamiento del recurso de la máquina.
  • Velocidad - Máxima al contar con un acceso directo a los recursos, sin capas intermedias.
  • Portabilidad - Mínima por estar restringido a las especificaciones del fabricante.
  • Abstracción - Mínima por depender completamente de la técnica del hardware.
  • Uso - Requiere de la máxima atención y de una organización estructurada sobre la base de los planos del hardware y del objetivo del software.
  • isomorfismo - Conceptualización de los datos de la información, que se complementaran

Primera generación[editar]

El lenguaje de programación de primera generación (por sus siglas en inglés: 1GL), es el lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto es raro que una persona lo use directamente.

Segunda generación[editar]

El lenguaje de programación de segunda generación (por sus siglas en inglés: 2GL), es el lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones).

Véase también[editar]