domingo, 1 de abril de 2018

Como transformamos un PROGRAMA en UNOS y CEROS | Niveles de abstracción

PacMan
Figura 1
Seguramente habrás oído que los ordenadores solo entienden unos y ceros (1 y 0). Esto es rotundamente cierto, todos los ordenadores almacenan tanto la información como los programas que ejecutan mediante pulsos eléctricos, bits,  en celdas de memoria. Se puede interpretar en general la existencia de un pulso como un uno, 1, y la ausencia de este como un cero, 0; y mediante estos dos números, el álgebra de Boole y el sistema binario (osea, teoría matemática) podemos realizar cualquier operación algebraica habitual. Esto queda muy bonito sobre el papel, pero ahora viene una cuestión fundamental: ¿qué tiene que ver que podamos sumar 2+2 mediante un ordenador con que corramos videojuegos tan complejos como los que hay hoy en día? La respuesta es la existencia de los niveles de abstracción.


Figura 2
Lo primero que tenemos que tener en cuenta para poder entender el concepto de los niveles de abstracción es algo de lo que se nos suele advertir habitualmente: quien mucho abarca poco aprieta. Irremediablemente una sola persona no tiene la capacidad de conocer absolutamente todas las ramas de la ciencia y su interrelación, necesita basarse en el trabajo de otras personas. Veamos esto con un ejemplo: imagina que quieres viajar a Nueva York. Obviando la compra de los billetes, la planificación del viaje y demás, lo único que tenemos que hacer es presentarnos en el aeropuerto a la hora que nos indica la aerolínea, facturar el equipaje y subir al avión. Cuando el personal nos avise, abandonaremos el avión para entrar al aeropuerto a esperar a nuestro equipaje en las cintas, cogeremos el mismo y saldremos del aeropuerto, estando ya en Nueva York, si hemos completado todos los pasos correctamente. Lo relevante y curioso de todo esto es que a nosotros no nos importa que ruta haya seguido el avión durante el viaje,ni su nivel de combustible, ni el estado del tráfico aéreo durante el vuelo... ni tan siquiera si nuestro equipaje a volado en el mismo aparato que nosotros o no. Nos da igual. ¿Por qué? Porque en nuestro nivel de abstracción, el de la interfaz de pasajero, un viaje en avión consiste en las instrucciones que hemos seguido, todo funciona. Sin embargo esto no habría sido posible sin el trabajo de los pilotos, el personal de cabina, los controladores aéreos, etc, cada uno con su propio nivel de abstracción, su propia visión de lo que es un viaje en avión.
Es decir, una abstracción es el proceso por el cual dividimos un problema complejo en problemas más pequeños, niveles abarcables para alguien especializado en los mismos, con una característica fundamental: un nivel de abstracción no tiene porqué saber como funciona otro por dentro, basta con que sepa como relacionarse con el mismo. Conclusión: divide et impera, divide y vencerás. Particularicemos ahora nuestro vuelo al caso de un ordenador cualquiera:

La potencia de cálculo de un ordenador se la otorga su procesador. Este es capaz de realizar operaciones básicas con los bits de los que hemos hablado inicialmente. Por ejemplo, para un ordenador la suma de 2+2 se traduce de manera teórica como 10+10 = 100. Un procesador, generalmente, realiza operaciones muy simples, de las que cualquier persona aprende en primaria: sumar, restar, multiplicar, operaciones lógicas etc. El potencial que hay en estas acciones es que los fabricantes de procesadores, como Intel o AMD, introducen en sus circuitos la capacidad de interpretar una serie ordenada de 1s y 0s como la operación que tienen que realizar. Esto quiere decir que si mediante un dispositivo de entrada, como pudiera ser el teclado, introducimos una secuencia de 1s y 0s de una determinada manera, podemos indicar al procesador que haga una suma de 2+2. Aquí nace la programación del ordenador.
Figura 3: Lenguaje ensamblador
Esto, como es obvio, es poco práctico, por lo que inicialmente se hace un lenguaje entendible por nosotros que un programa traducirá a 1s y 0s, un lenguaje en el que podamos codificar las acciones básicas del procesador, el lenguaje ensamblador. Este es el primer nivel de abstracción, el lenguaje de programación de nivel bajo, llamado de conjunto de instrucciones. Se dice de nivel bajo porque el idioma que usa el lenguaje ensamblador es muy parecido al que emplea el procesador y muy lejano al que usa el humano. Este nivel bajo es incómodo, si un procesador puede hacer cosas muy sencillas, nosotros tendremos que trabajar con esas cosas sencillas para hacer algo complejo, tedioso; por lo que mediante diversas técnicas los informáticos son capaces de elevar el lenguaje, agrupando instrucciones de lenguaje ensamblador y creando un sistema de traducción a este lenguaje de bajo nivel, la compilación. Esta elevación del lenguaje consiste en hacer que podamos programar el ordenador mediante una sintaxis, un léxico y una gramática muy parecida a la que estamos acostumbrados a usar. De esta manera surgen los lenguajes de programación de nivel alto, especializados para determinadas tareas y con los que podemos escribir programas tan complejos como simulaciones matemáticas, videojuegos con gráficos 3D o paginas web y que al final, irremediablemente, acaban traduciendose al idioma del ordenador, los unos y ceros, sin que nosotros lo sepamos ni lo hagamos manualmente.

RELACIONADO:
-Cómo funciona Internet
-Dónde está el límite de la computación


Bibliografía y referencias:
-Anexo instrucciones Intel x86: https://es.wikipedia.org/wiki/Anexo:Instrucciones_x86
-Abstracción: https://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)
-Figura 1: https://puregaming.es/seccion-retro-pacman/
-Figura 2:http://viralizzer.com/panel/205677/news/mira_un_dia_de_trafico_aereo_en_una_visualizacion_asombrosa_eng
-Figura 3: https://es.dreamstime.com/foto-de-archivo-libre-de-regal%C3%ADas-c%C3%B3digo-fuente-del-ensamblador-image37852485

No hay comentarios:

Publicar un comentario