No toda la programación es igual: conoce sus distintos niveles

Hoy en día existe muchos lenguajes de programación, algunos más fáciles y accesibles y otros más complejos. Sin embargo, las máquinas solo entienden un lenguaje: el binario. Programar en binario es algo inviable e imposible, sobre todo teniendo en cuenta la complejidad de las máquinas actuales. Sin embargo, hoy en día la informática tampoco ha evolucionado tanto como para poder programar usando lenguaje natural; nos encontramos en un punto medio, y dependiendo de lo cerca, o lejos, que estemos del lenguaje máquina podemos hablar de distintos niveles de programación: alto, medio o bajo.

Al final no importa (entre comillas) el lenguaje de programación que usemos, ya que todo tiene que pasar por un compilador que nos genere el archivo binario, el ejecutable, el cual es el que procesa la máquina. Sin embargo, dependiendo del tipo de programación que usemos, y la finalidad de nuestro proyecto, nos puede interesar más por usar un nivel de lenguaje u otro. ¿En qué se diferencian?

Programación de bajo nivel: hablando con la máquina

Programación de bajo nivel

La programación de bajo nivel es aquella cuyas instrucciones están muy cerca del lenguaje máquina. Los programas se diseñan para que funcionen con un hardware concreto, ya que las instrucciones están diseñadas para una arquitectura concreta. Si escribimos un programa en bajo nivel, y lo llevamos a otra máquina diferente, esta no lo reconocerá al no ser compatible con las instrucciones.

La principal ventaja de estos lenguajes de programación es su rendimiento. Al no tener que interpretarse ni compilarse nada, el código se ejecuta tal cual sobre el hardware, evitando intermediarios. Pero entre sus inconvenientes, además de la complejidad de los mismos, debemos destacar la incompatibilidad entre plataformas, teniendo incluso que volver a crear el programa de cero si queremos usarlo en otra máquina.

Los lenguajes de programación de bajo nivel interactúan directamente con el hardware, sin compiladores ni intérpretes adicionales, lo que nos permite conseguir un mejor rendimiento. Este era (por ejemplo) el tipo de programación que se usaba en las tarjetas perforadas. Las instrucciones se le mandan al equipo directamente en binario (primera generación), o usando un lenguaje algo más familiar, como el ensamblador (segunda generación), formado por abreviaturas como ADD, DIV o SUB. Hoy en día este tipo de programación solo se usa para mantener los sistemas de antaño, a nadie se le ocurriría crear un nuevo proyecto en lenguajes de bajo nivel.

Programación de medio nivel: acceso al hardware con lenguaje «natural»

Programación de medio nivel

Los lenguajes de nivel medio son también lenguajes muy antiguos, pero fueron los primeros que nacieron a raíz de la evolución de los de bajo nivel. Estos lenguajes se encuentran en el punto medio entre los lenguajes de bajo y alto nivel debido a que, aunque utilizan instrucciones relativamente sencillas y naturales, el programador tiene acceso al hardware igual que ocurre con el lenguaje de bajo nivel. De esta manera, los programas pueden acceder a los registros del sistema y el programador puede trabajar con direcciones de memoria.

Aunque se utiliza un lenguaje mucho más natural que el binario o el mismo ensamblador, al usar instrucciones sencillas y no necesitar complejos intérpretes, se consigue un rendimiento similar al de los programas escritos a bajo nivel.

Las ventajas de los lenguajes de este nivel es que son mucho más sencillos y naturales que los lenguajes de máquina, lo que permite crear programas complejos más rápido y sencillo. Además, al no estar en un nivel muy alto, la pérdida de rendimiento es mínima y tiene acceso a los registros del sistema y a los recursos del mismo (mediante punteros de memoria). Sin embargo, no permite la creación de estructuras dinámicas ni estar orientado a objetos o eventos.

C, por ejemplo, es el lenguaje de programación de nivel medio más representativo. Aunque generalmente se le considera de nivel alto, en realidad tiene características típicas de un lenguaje de bajo nivel, como poder usar letras como si fuesen números (no distingue), y el uso de punteros, imprescindibles para la implementación de hashes y algoritmos. Otro ejemplo de lenguaje de medio nivel es Basic.

Lenguajes de alto nivel: hablando con cierta naturalidad

Programación de alto nivel

Aunque a muchos lo de programar les suena a algo complicado, en realidad hoy en día es muy sencillo, y con unas nociones básicas cualquiera podría crear su propio programa. Esto es posible gracias a los lenguajes de programación de alto nivel, lenguajes que utilizan instrucciones claras usando un lenguaje natural.

Los lenguajes de alto nivel están pensados para poder ejecutarse sin problemas en cualquier máquina, independientemente del hardware que utilice. Esto es posible gracias a los compiladores y a los intérpretes que, normalmente, vienen incluidos de forma nativa en los sistemas operativos. Da igual que un programa esté programado en C++, en .NET, en Java o en Python, que si el código ha pasado por el compilador, y tenemos el intérprete necesario (como la máquina virtual de Java) podremos ejecutarlos en cualquier sistema operativo, use el hardware que use.

Estos lenguajes de programación están pensados, sobre todo, para trabajar con estructuras dinámicas de datos. Los lenguajes de medio y bajo nivel no pueden cambiar el tamaño de las estructuras mientras se ejecutan, lo que puede dar lugar a un consumo excesivo de recursos, o a problemas por falta de tamaño. Gracias a estas estructuras dinámicas, el programa se puede ajustar a las necesidades de cada sistema. Son lenguajes orientados a objetos, eventos o funciones.

Las ventajas de este tipo de lenguajes son la creación de un código mucho más natural y comprensible, un programa sirve para cualquier máquina y cualquier sistema, soporta paradigmas de programación y permite la creación de programas complejos con menos líneas. Entre sus inconvenientes, eso sí, debemos destacar una pérdida de rendimiento de los programas (ya que deben ser interpretados) y que, en algunos casos, dependen los programas de plataformas concretas.

Hay muchos lenguajes de programación de alto nivel. Podemos encontrar lenguajes muy específicos (como Fortran o Cobol) para realizar tareas concretas, o lenguajes genéricos como C#, C++ o Visual Basic que valen un poco para todo.

¡Sé el primero en comentar!