Programación - U-tad

Fundamentos en la programación de videojuegos

La programación es el único medio que te permite comunicarte con tu PC para desarrollar un videojuego. ¿Quieres asomarte a los fundamentos? ¡Acompáñanos!

, , , , , , , , ,

La programación es la herramienta que nos permite dictarle a un ordenador las instrucciones que definen las reglas de un videojuego, la interacción y sus respuestas. ¡Aprender un lenguaje de programación válido es crucial para un equipo de desarrollo en cualquier proyecto!

Taller programación - U-tad

Descubre los fundamentos de los lenguajes de programación.

Para alguien ajeno al universo de la programación de computadores, el proceso mediante el cual indicamos a una máquina una serie de tareas a realizar puede parecer cosa de magia, un arcano insondable difícil de abordar. Sin embargo, se trata esencialmente de comunicarse con fluidez y precisión en unos términos y gramática que el ordenador pueda comprender e interpretar. En definitiva, un lenguaje. En este artículo veremos los fundamentos de la programación de computadores, los lenguajes de programación que se han distinguido como más útiles y poderosos, junto con los paradigmas que más se han estandarizado en el desarrollo de videojuegos.

 

Lenguajes y paradigmas

Como probablemente muchos sabrán, toda la información que un ordenador es capaz de manejar fluye a través de corrientes eléctricas por unos circuitos, que según su voltaje, representarán unos o ceros. Cómo un programador puede dictarle a una máquina –que sólo entiende estas sucesiones de unos y ceros– que realice una determinada tarea es, en realidad, algo elemental. En este taller de U-tad nos centramos en los principales paradigmas de los lenguajes de programación que se han utilizado a lo largo de la Historia para desarrollar videojuegos, los principios fundamentales de cada uno de ellos, y cómo han ido evolucionando con el paso de los años.

 

Código máquina y ensamblador

El lenguaje denominado código máquina contiene una serie de instrucciones y datos que son directamente interpretables por el procesador de un ordenador. Los procesadores disponen de instrucciones, como por ejemplo devolver el resultado de sumar dos valores. Si el procesador recibe la secuencia de unos y ceros que se corresponde con esta instrucción, entonces interpretará los siguientes unos y ceros como los valores a sumar. La cuestión que nos queda es, ¿cómo podríamos representar un determinado valor decimal, por ejemplo el valor “9”, con esta serie de unos y ceros llamada código binario?

Lo que se hace es interpretar cada bit (cada “1” o “0”) como una determinada potencia de dos –en función del orden en que se leerá– y luego se suman todas estas potencias. Si estuviésemos manejando un código binario de 4 bits (es decir, cada valor está compuesto de cuatro dígitos de unos y ceros), el valor máximo que se puede representar es:

23 + 22 + 21 + 20 = ¿…?

En efecto, el valor que resulta es 15 en su forma decimal. Para representar un determinado valor, se suman las potencias de dos correspondientes a las posiciones donde hay unos en el valor que recibe el procesador. Por ejemplo, el valor 9 se representaría de la siguiente forma: 1001

Es decir, 23 + 0 + 0 + 20 = 8 + 1 = 9.

Código máquina - Programación

¿Imaginas qué difícil sería decir las cosas en código binario? Los lenguajes de programación han permitido una comunicación viable y eficaz.

Lo que ocurre es que, para un programador, subdividir la tarea que quiere que el ordenador realice en instrucciones y datos introducid0s en código binario es un engorro descomunal propenso a errores. Ante la necesidad de agilizar la tarea apareció el lenguaje ensamblador. El ensamblador nos permite escribir las instrucciones y datos como texto, que luego se traduce a código máquina mediante una herramienta. Por ejemplo, si en ensamblador tenemos una instrucción llamada “ADD” (addition), será traducida a la secuencia de ceros y unos que representa la instrucción “suma”.

 

El código máquina no resultaba un medio ágil; para programar fue necesario crear lenguajes de programación que permitieran traducir instrucciones a código máquina desde un nivel superior

El ensamblador, al permitirnos codificar directamente las instrucciones del procesador, es increíblemente rápido, y fue utilizado como el lenguaje de programación para videojuegos por excelencia durante la época de los 8 y los 16 bits (ZX Spectrum, NES, Super NES, etc.).

 

La aparición del BASIC

El BASIC es toda una familia de lenguajes de programación orientada a fines académicos por su facilidad de uso. El primer BASIC surgió a mediados de los años 60, en la versión que terminó por llamarse Darmouth BASIC, pero su uso se extendió con los ordenadores personales de finales de los 70 y principios de los 80. La mayoría de aquellos aparatos incluyeron una versión del lenguaje BASIC para que los usuarios domésticos pudiesen realizar programas sencillos sin conocimientos de programación. Como se dice, una de sus características es su extremada sencillez. Un programa sencillo podría ser el siguiente:

10 PRINT “HOLA MUNDO”

20 GOTO 10

La primera instrucción imprime en una línea de la pantalla el mensaje “HOLA MUNDO”, y la segunda instrucción vuelve a la línea numerada como 10. El resultado es un programa que imprime el mensaje en pantalla continuamente, sin finalizar nunca. El utilizar números para identificar cada instrucción fue algo muy extendido en los diversos lenguajes BASIC de la época.

Pese a su sencillez, el BASIC no fue casi utilizado en el sector profesional debido esencialmente a su mayor lentitud frente al código ensamblador. Mientras que en ensamblador nuestro programa se traduce al código máquina correspondiente, en BASIC lo habitual era que nuestro programa no fuese ejecutado directamente por el procesador, sino por otro programa llamado intérprete. La tarea del intérprete es la de ir leyendo cada línea del fichero –o dirección de memoria– donde está nuestro programa, generar las instrucciones de código máquina equivalente, y pasárselas una a una al procesador en forma binaria. Evidentemente este proceso ralentiza la ejecución de un programa.

Hoy en día siguen existiendo dialectos avanzados inspirados por BASIC, como Visual Basic .NET, BlitzMax, o Monkey X, que mantienen del BASIC su sencillez, aunque incorporan paradigmas de programación de otros lenguajes más avanzados.