Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

FRIKADAS: Juegos para aprender a programar en ensamblador

El lenguaje ensamblador es el más bajo nivel al que podemos llegar a la hora de programar.

Una computadora consta en esencia de un procesador, que es el cerebro de la máquina y que se comunica con la memoria y todos los demás dispositivos. Cada tipo (o "familia") de procesadores posee su propio conjunto de instrucciones (llamadas "instrucciones de lenguaje máquina") de bajo nivel para llevar a cabo o gestionar diversas operaciones, como leer o colocar un dato en memoria, realizar una operación aritmética o lógica, y cuestiones muy simples de ese estilo. Nada que ver con las operaciones que podemos hacer con los lenguajes y plataformas de "alto nivel" que usamos en nuestro día a día. Esas instrucciones no son más que conjuntos de ceros y unos que se le pasan directamente al procesador...

Una persona no puede programar usando solamente 0's y 1's. Sería una locura. Así que para tratar de simplificarlo y que fuese más sencillo se inventó el lenguaje ensamblador. Este lenguaje consta de una serie de palabras que representan cada una de esas operaciones sencillas que el procesador puede realizar. Gracias a él, en lugar de utilizar ristras inmanejables de ceros y unos, se pueden usar algunas palabras. Luego hay un programa "ensamblador" que traduce esas instrucciones en el código máquina que el procesador entiende.

No es una gran mejora pero supone la diferencia entre poder programar una máquina a bajo nivel o no poder hacerlo.

Uno podría pensar que el lenguaje ensamblador, siendo tan árido y complejo, no sería muy popular. Sin embargo si ves el conocido índice TIOBE de popularidad, en junio de 2017 ensamblador es el décimo lenguaje más popular de la lista, ¡por delante de Swift, Ruby, Go o Visual Basic!.

Ranking TIOBE Junio 2017

¿Cómo es posible?

Bueno, algunos hablan de la velocidad que puedes conseguir con ensamblador, pero quitando aplicaciones muy concretas esa posible ganancia no es apreciable. Pero sí es cierto que puede suponer una ventaja en muchas aplicaciones de bajo nivel en cuanto a tamaño del programa, eliminación de posibles fuentes impredecibles de inestabilidad o retardo, uso de instrucciones directas que no están disponibles en los compiladores de alto nivel... Por supuesto es indispensable para crear drivers, virus, criptografía avanzada dependiente del tiempo...

Más allá de que tengamos una aplicación práctica en la que utilizarlo, aprender al menos los rudimentos del lenguaje ensamblador puede ayudarnos a comprender muchas cosas sobre el funcionamiento de un computador:

  • Cómo ejecuta las instrucciones el procesador.
  • Cómo se representa y maneja la información en la memoria de los dispositivos.
  • Cómo se accede a los diversos dispositivos.
  • Cómo se establece la interacción entre el procesador y el Sistema operativo.

Es decir, bajo nivel, pero ayudándonos a tener los conceptos muy claros de modo que luego trabajar con lenguajes de más alto nivel nos resulte más simple y entendamos muchas cosas.

Aprender ensamblador no tiene que ser aburrido

Lo malo de aprender ese lenguaje es cómo abordarlo, pues es muy árido. Hay pocos libros (nuestro tutor Francisco Charte escribió algunos hace años, ya descatalogados), y muchos menos cursos. Y en cualquier caso, si no quieres meterte a fondo, solo aprender los rudimentos, es un poco "matar moscas a cañonazos".

Sin embargo existen otras opciones...

Quizá te sorprenderá saberlo, pero hace tiempo que existen algunos juegos que están especialmente diseñados para aprender ensamblador al mismo tiempo que nos divertimos.

A mí me sorprendió también cuando lo vi en la revista Spectrum del IEE de mayo. Me hicieron mucha gracia, me he acordado ahora y me apetece reflejarlos aquí, así que ¡vamos a ello!

Human Resource Machine

Human Resource Machine

El juego te pone en la piel de un trabajador de oficina que está entre dos cintas transportadoras. Por una de ellas llegan letras y números, y tú debes colocarlas en la cinta de salida pero cumpliendo unas determinadas reglas. Para ello te proporcionan dos elementos: el suelo (que actúa como un espacio temporal de memoria) y algunas operaciones que puedes realizar (las instrucciones). De entrada solamente tienes dos, pero a medida que superas niveles (y aprendes) aparecen más opciones.

Es muy original y con su planteamiento podrías jugar a él y no saber que estás aprendiendo ensamblador al mismo tiempo :-)

Disponible para Windows, Linux, Mac, en Steam y para la nueva Nintendo Switch por $9.99.

TIS-100 de Zachtronics

TIS-100

Este, más que un juego, es ya un simulador. Lo que simula es la interfaz de un microprocesador de los años 80.

La trama del juego es que has heredado un ordenador de los '80 que era de un tío tuyo. El chisme no funciona bien porque está corrompido. El objeto del juego es resolver ciertos puzles en ensamblador para recuperar algunas porciones de la memoria y descubrir el propósito original del aparato. Como interfaz tienes una pantalla de texto con varios nodos de procesamiento que se pasan mensajes unos a otros.

Este requiere más de tu parte para empezar y avanzar, pero la dificultad es más gradual y quizá engancha más una vez que arrancas con él. Eso sí, trae hasta manual de instrucciones, clavado a los que había hace 30 años (¡qué tiempos!).

Está disponible para Steam (Windows, Linux, Mac) por unos 6€ y para iPad por menos de 4 dólares.

Shenzhen I/O de Zachtronics

Shenzhen

De la misma casa que el anterior, este es más reciente (lanzado en noviembre del año pasado).

En esta ocasión eres un ingeniero electrónico occidental que decide irse al lugar en dónde se fabrica todo hoy en día: Shenzen, en China. Allí compras muchos componentes diferentes como memoria, micro-controladores y puertas lógicas y debes usarlos para ir construyendo diversos aparatos según los pedidos recibidos. Al igual que el anterior, unos componentes se comunican con los otros en función de las instrucciones que les vayas poniendo a cada uno. Cada componente tiene su propia hoja de especificaciones que debes leer para aprender a utilizarlo.

Palabras mayores, pero divertido :-)

Se puede conseguir para las mismas plataformas que el anterior a excepción de iPad.

En resumen

Si te gustan los juegos de "romperte la cabeza" y de paso quieres aprender los entresijos de cómo funciona un procesador, aquí tienes tres opciones estupendas que te darán horas de diversión en esta época veraniega.

Yo, el primero (Human Machine Resources), lo recomendaría incluso para personas jóvenes (¿12-14?) que tengan cierta predisposición para este tipo de pensamiento estructurado. Les ayudará a comprender mejor algunos conceptos, a desarrollar más su pensamiento lógico y ordenado, y quién sabe si quizá les abrirá una vocación profesional :-)

José M. Alarcón Aguín Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

Se ve interesante. Lo probaré. Gracias...

Responder

Indudablemente lo es.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.