Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Programación Gráfica: Triturado Numérico

Solo puedes programar lo que la computadora puede hacer

Hace no mucho tiempo, mientras hacía de Troll en el sistema de preguntas y respuestas del Yahoo. Encotré la que probablemente sea la pregunta mas inteligente que alguien interesado en la programación de videojuegos puede hacer: ¿Como es posible que una computadora que solo puede leer y escribir números y hacer operaciones matemáticas muy básicas con ellos sea capaz de crear el mundo virtual de un videojuego con todos sus elementos? La respuesta es sencilla: No puede. Al menos no puede hacerlo de manera directa como muchos por ahí se imaginan. Los mundos, personajes, historias y todo aquello que creemos vivir cuando jugamos no son otra cosa que señales digitales procesadas que se mueven de un lado a otro pasando por el CPU. O como cierto escritor de videojuegos dijera alguna vez: “Cuando crees que están combatiendo contra ejércitos enteros lo único que haces es contemplar puntos de colores desde el sillón de la sala de tu casa”.

Esta reflexión no es la típica de tantos autodenominados “designers” que sin saber programar ni dibujar quieren su rebanada de esto de los videojuegos. De hecho esta nota puede ser bastante cruda o bastante alentadora dependiendo de cuanto les interese programar. Pues aquí se discute lo que sucede dentro de la computadora cuando hacemos esa cosa rara que llaman 3D.

Al escribir esto, recuerdo una declaración de cierto profesor de computación del que solia reirme mucho. Una de sus tantas frases célebres era que no le gustaba programar en Ensamblador “Porque cuando uno programa en ensamblador está limitado solo a lo que la computadora puede hacer” esta frase puede tener sentido hasta que uno se detiene a pensar en como hace entonces la computadora para hacer algo que se supone que no puede hacer. Aunque si vemos las cosas desde el punto de vista de alguien que no sabe nada de programación la frase no carece del todo de significado. Pero para eso tenemos que regresar a la primera pregunta con la que comienza esta nota.

Las computadoras, consolas de videojuegos, teléfonos y cualquier otro dispositivo electrónico programable no tiene idea de que lo que está ejecutando es un videojuego y es incapaz de diferenciarlo de una aplicación de cálculo de ingeniería o un software para reproducir contenido multimedia. Por dentro lo único que sabe es que tiene que ejecutar un montón de instrucciones que hacen cálculos repetitivos sobre una inmensa cantidad de datos. Y como ustedes están aquí porque les interesa la parte de la programación y no el retoque de botones de interfaces vamos a ver todo esto del modo como lo ven las computadoras. Pero antes de continuar veamos un concepto computacional conocido en el mundo de la ciencia como Number Crunching

Number Crunching
Hojas de Triturado Numérico

Number Crunching, que puede traducirse al español como “Triturado de Números” es cuando a una computadora se le dan unas cantidades enormes de números para que les aplique un conjunto de operaciones matemáticas y nos devuelva un resultado. Ese resultado puede ser tan sencillo como SI o NO, un número o una lista larga de valores, del mismo modo que existen máquinas que trituran enormes rocas para extraerles los metales o simplemente para pulverizarlas y convertirlas en cemento. El triturado numérico es habitual en la exploración del espacio, la economía, el pronóstico del tiempo y como veremos aquí también en la Programación Gráfica. En resumen, la programación gráfica es un ejemplo de la aplicación del triturado numérico. Y como tal vamos a tratarla aquí.

En fin, para no dar mas rodeos con el tema, lo que quiero anunciar es que este curso de programación gráfica para principiantes ya está llegando a un punto en el que aunque puede seguirse trabajando con lapiz, papel, calculadora y mucha paciencia ya estoy llegando a un límite en el que mostrar los cálculos hechos en una hoja de libreta que luego se fotografía resulta impáctico para ser presentado en una página de internet. Pues ocuparían demasiado espacio y serían muy difíciles de leer. Por lo que he considerado hacer algo para representar mejor este triturado numérico y a la vez enseñar un poco la manera como se hacen los cálculos gráficos en ensamblador.

Lo primero que voy a hacer es recurrir a una ventaja muy util que me ofrece este sistema de hospedaje de blogs y que nunca uso: La posibilidad de escribir ventanas de código con su propio formato. En estos recuadros uno puede escribir un texto y se le van a respetar el formato, y aunque existen otras formas de hacerlo esta parece ser la mas limpia y conveniente. Sin embargo, no basta con eso, es necesario definir un formato para presentar estos números.

Antes de explicarles que es esto del formato de triturado numérico quiero recordarles que estas hojas no son código de programación aunque están escritas de manera que sean facilmente adaptables al ensamblador. Ahora veamos de una en una.

Comentarios.-Una linea de comentarios comienza con un punto y coma ; y termina al final de la linea. Son solo para explicar lo que significan los números y no tienen nada que ver con los cálculos

; Este es un comentario de una linea

; Este otro comentario que puede
; abarcar mas de una linea

Etiquetas Las etiquetas son como el nombre de las variables y se usan para hacer referencia a los datos, y estos datos pueden ser desde sencillos números enteros hasta sofisticadas estructuras con muchos tipos diferentes de datos. Son palabras terminadas en dos puntos : y seguidas por las cantidades a las que apuntan. Para los que ya tienen experiencia en programación piensen en estas como variables.

;un ejemplo de etiquetas
; etiqueta_01 hace referencia al entero 64

etiqueta_01: 64

Enteros y FlotantesLos números que lleven punto decimal en alguna parte son números flotantes, es decir que pueden tener partes no enteras como 3.14 o -17.31. La inmensa mayoría de los cálculos gráficos se trabajan en punto flotante en punto flotante. Mientras que los enteros no tienen punto en ninguna parte y aunque no se usan para cuestiones 3D si se necesitan para cuestiones de la logica del programa.

;ejemplo de valor flotante o real

valor_flotante: 123.45


;ejemplo de valor entero

valor entero: 123

Escalares y Vectores

Las etiquetas pueden hacer referencia a valores individuales o a secuencias de números. Cuando tenemos un número solo se dice que es un escalar y cuando se tiene una secuencia de valores tenemos un vector. Por lo regular se trata de valores flotantes pero aquí podemos trabajar también con enteros. Las matrices son un caso escalar de vector que aunque es lineal se expresa en renglones separados para leerlo mejor.

; un escalar es un número solo mientras un 
; vector es una secuencia de números

escalar: 1.0
vector:  1.2, 2.3, 3.4, 4.5

matriz:  0.0  1.0  2.0  3.0 
         4.0  5.0  6.0  7.0
		 8.0  9.0 10.0 11.0
		12.0 13.0 14.0 15.0

En fin, este cambio lo hago porque se acerca el final de la serie de programación gráfica para principiantes, deben de quedar solo alrededor de 10 notas y unas cuantas prácticas, y para estas prácticas vamos a necesitar estas hojas de triturado numérico para poder mostrar de manera detallada como se trabajan los números involucrados en programación gráfica. Y regresando una vez mas a la pregunta original sobre como una computadora que solo puede procesar números puede ejecutar un videojuego, confirmamos una vez mas que no puede hacerlo. Los mundos de aventura de los videojuegos son creados por los artistas digitales y los programadores solo hacen que esos mundos, personajes e historias puedan ser vividas por los gamers en sus computadoras. Un trabajo un tanto frio, pero eso no impide que algunos programadores, si no es que todos, sueñen sus propias ideas para videojuegos que por su propia cuenta quieran implementar.

Anuncios

febrero 12, 2012 - Posted by | Uncategorized | , , ,

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: