Lenguaje de bajo nivel

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

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.
Other Languages
日本語: 低水準言語
srpskohrvatski / српскохрватски: Programski jezik niske razine
slovenščina: Nizkonivojski jezik
中文: 低级语言