La Programación: El último juego de construcción


Los juegos de construcción consisten en una serie de piezas que se ensamblan de formas predeterminadas y que permiten hacer muchas formas o figuras. El común de estos juegos tienen limitaciones en el número de piezas, el tipo de estas y en las formas de ensamble. La programación de computadores es un juego de construcción que no tiene esas limitaciones, por eso es el último juego de construcción.

Licencia Creative Commons
La magia actual, la programación de computadores por Luis Alejandro Bernal Romero (Aztlek) se encuentra bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 2.5 Colombia.

Era la primera vez que recibía un regalo como esos, la caja azul mostraba un camión extrañamente cuadrado, y al abrirla encontré un montón de piezas. Mi papá al verlo lo tomó y comenzó a jugar con él, mientras yo anhelante esperaba y esperaba, y esperaba y esperaba… Es muy común que los padres jueguen con los juguetes de sus hijos pero este tenía algo especial que hacía que personas de muy distintas edades quisieran jugar en él. Había que armarlo y no solo eso, se podía armar muchas otras cosas con las mismas piezas. Era mi primer juego de construcción y me marcó de tal forma que actualmente me dedico a jugar y a enseñar a otros a jugar con el juego de construcción más fantástico, la programación de computadores [1].

¿Pero, qué es un juego de construcción? Comenzaré esta reflexión diferenciadolo de otros juegos parecidos — y también muy interesantes — los rompecabezas. Entonces, ¿qué diferencia un juego de construcción de un rompecabezas? Con los rompecabezas solo se puede hacer una única figura, o forma, según sean bidimensionales o tridimensionales. Por ejemplo, el clásico rompecabezas de piezas de cartón o Puzzle consiste en unir esas piezas de tal forma que configuren una única figura. También el Cubo de Rubik es un rompecabezas porque su objetivo es armar un cubo en el cual cada cara sea del mismo color, es decir, una única forma, claro, se podría crear un juego basado en el de Rubik que consistiría en armar patrones de colores en el cubo, pero esto ya sería un juego de construcción. También esos juegos chinos con piezas de madera intrincadas que al final conforman por ejemplo un cubo o un pequeño barril, son rompecabezas, O los que están muy en boga hoy en día que consisten en desentrelazar dos figuras, por ejemplo un anillo y un cordel con una esfera de madera, son rompecabezas, tienen una única solución.

Por su parte juegos como el Tangram en los cuales se pueden armar muchas figuras, alrededor de 16.000 según la Wikipedia en español, o el Cubo Soma con el que se pueden obtener figuras muy distintas, además del cubo en si, son juegos de construcción. El juego de LEGO [2] y las innumerables variaciones que hay sobre juegos de ladrillos, son juegos de construcción. Los juegos de nodos y conectores como Zometool [3] o Geomag [4] son también juegos de construcción. También los famosos mecanos de los que hay innumerables variaciones, son juegos de construcción.

Resumiendo, un juego de construcción es aquel cumple con las siguientes condiciones: Primera, tiene un conjunto de piezas. Segunda, hay unas formas predeterminadas de ensamblar las piezas entre si. Y la tercera, el número de formas distintas que se pueden construir con esas piezas debe ser grande.

Pero claro, eso no era lo que me importaba de niño, lo yo quería era hacer el edificio más alto; por lo menos más alto que yo. Pero siempre sucedía que se agotaban las piezas, entonces comenzaba a ahorrar y compraba más, y otra vez, no alcanzaban. Y cuando por fin tenía las suficientes y efectivamente armaba el edificio, se me ocurría otro proyecto para el cual necesitaba aún más piezas y reiniciaba el ciclo. Pensándolo bien, nunca hubieran sido suficientes para los proyectos, cada vez más complejos, que me inventaba. Esto quiere decir que el número de piezas de esos juego de construcción es finito (y generalmente insuficiente). Esta es la primera limitación de estos juegos de construcción.

Otra de las cosas que no se podía hacer, era definir nuevas piezas que el fabricante no hubiera diseñado con anterioridad. Por ejemplo, si requería una ventana estilo moderno, como las de aluminio de hoy en día, pues sólo existían las clásicas de los países nórdicos, con doble contraventana. No había forma de definir nuevos diseños de piezas, en este sentido estos juegos son también finitos. Y esta es la segunda limitación.

Eso con respecto a las piezas, pero con respecto a las formas de ensamble también hay limitaciones. Normalmente estas vienen definidas de antemano por como está diseñado el juego. En los juegos de ladrillos los botones en los ladrillos y los zócalos debajo de ellos definen las formas de ensamble. En los juegos de esferas y conectores definen también unas pocas formas. En los mecanos: las tuercas, los tornillos y los orificios de las piezas definen las posibilidades de ensamble. Es más, estas formas de ensamble definen las diferencias y potencialidades de los juegos de construcción; de hecho, definen su naturaleza. Los mecanos no serían mecanos sin algo como las tuercas y tonillos, el Lego no sería de tal sin los botones y los zócalos. Pero volviendo al tema, ninguno de estos juegos permite definir nuevas formas de ensamble. Y esta es la tercera limitación.

Estas limitaciones pueden ser parte de problemas interesantes de resolver, pues le añade complejidad al juego tenerlas, de hecho la ingeniería en general es un gran juego de construcción que trabaja en base a limitaciones, por ejemplo de presupuesto y de tiempo. Pero imagine el lector por un momento un juego de construcción en que no existen estas limitaciones. Uno en el cual el número de piezas es infinito, uno el cuál se pueden crear nuevos tipos de piezas y nuevas formas de ensamble. Nunca se acabarían las piezas para hacer cualquier proyecto, se podría construir ese edificio más alto que uno. Siempre se podría crear nuevos tipos de piezas según se fueran necesitando, las ventanas de aluminio y muchas otras. Y sobre todo se podrían definir nuevas formas de ensamble se acuerdo al proyecto, por ejemplo combinar los botones y zócalos con las los tornillos y tuercas como en el Lego Technic que es un mecano y un juego de ladrillos al mismo tiempo. Pero si se pudiera hacer esto en forma general este sería el último juego de construcción.

Y ese juego existe, es la programación de computadores. La primera vez que entendí lo que era programar un computador lo que pensé fue: Pero si esto es como un juego de armar en el que el número de piezas en infinito. Piéncelo por un momento amigo lector, si las instrucciones son las piezas uno puede poner cuantos condicionales, ciclos o asignaciones quiera o necesite, no hay límite. No tendríamos la primera limitación.

Pero además de tener piezas, para que la programación sea considerada un juego de construcción debe tener formas de ensamblar esas piezas entre si. Hay tres formas: la primera es la secuencia, en la cual una instrucción se pone a continuación de otra, por ejemplo un programa que consiste en leer dos número, después calcular su suma e imprimir su resultado, tres instrucciones en secuencia. La segunda es el anidamiento que consiste en poner una o varias instrucciones dentro de otra, como cuando se hacen ciclos. La tercera forma de ensamblar instrucciones, es el de ponerlas en paralelo, esto es, que un grupo de instrucciones se ejecuten al mismo tiempo; para ello hay muchos mecanismos como los hilos o la programación en paralelo propiamente dicha.

Y además es innegable que se pueden construir un número muy grande de programas combinando instrucciones con estas formas de ensamblaje. De hecho, el número debe ser mucho mayor que el de posibilidades de construcción de la mayoría de los juegos de construcción. Solo es mirar un poco en Internet para convencerse de la gran inmensidad de programas que se han construido, que debe ser una cantidad mucho menor de los que pueden construirse. O sea, que la programación no es un simple rompecabezas, es un juego de construcción con todas sus connotaciones.

Pero retomando las limitaciones, ya apunté que el número de piezas en la programación es infinito, pero no solo eso, se pueden crear nuevas piezas mediante mecanismos como los subprogramas o las clases, inclusive se tienen «librerías» completas de estas para que puedan ser utilizadas en la construcción de otros programas como si fueran instrucciones nativas del lenguaje. Como cuando se crea una librería de manejo de 3D, se tienen ahora nuevas instrucciones que permiten la construcción de programas con representaciones tridimensionales, por ejemplo para hacer juegos de disparar en primera persona. Esto capacita al lenguaje de programación, al juego de construcción, para hacer cosas que antes no podía. La programación es un juego extensible. Esto supera con creces la segunda limitación.

Esto si se examina un programa de computador como una secuencia de instrucciones, pero ¿si se tiene un panorama más general en el cual un programa son instrucciones y estructuras de datos? La encarnación más poderosa de las estructuras de datos, son las clases. Mediante ella se pueden definir el comportamiento y las características de un conjunto de objetos, estas son respectivamente las operaciones y los atributos. Por ejemplo se puede definir una clase triángulo, la cual tenga entre sus operaciones dibujar y entre sus atributos posición y longitud de los lados. En cualquier momento podemos usar esta clase para crear un objeto triángulo con una posición y dimensiones determinadas. La clase triángulo es una abstracción que puede usarse para crear cualquier triángulo específico. Es como si tuviéramos un juego de construcción en el cual podemos construir los moldes (las clases) y hacer cualquier pieza que se nos ocurra. Esto es más que superar las dos primeras limitaciones.

Además se pueden definir las formas como se conectan los diferentes objetos mediantes las relaciones. Podemos por ejemplo, hacer una ventana de aluminio mediante la agregación de sus distintas partes que pueden ser prismas que a su vez sean construidos por polígonos que en ultimas pueden estar constituidos por los triángulos que ya habíamos definido. Pero no solo podemos agregar objetos unos a otros, sino que podemos inventar cualquier tipo de relación entre objetos. Por ejemplo, podríamos inventar las clase persona y definir la relación estar casado. Sería como un juego en el cual podemos definir la forma en como se pueden ensamblar las distintas piezas y además darle nombre y significado, como si pudiéramos hacer moldes de ensambles. Supera la tercera limitación con creces.

Y eso que el tema de la herencia no se a tocado, como tampoco los otros paradigmas de programación, como el funcional, en los cuales las piezas y las formas de ensamble permiten otras posibilidades. Pero incluso desde estas otras visiones de la programación, esta se sigue comportando como un juego de construcción en el que se superan las limitaciones.

En general, la programación de computadores es el juego de construcción último, porque tiene un numero infinito de piezas, porque puede definir nuevos tipos a voluntad y crear nuevas formas de ensamble.

Notas

[1] Claro hay uno más fantástico aún, el lenguaje, pero ese es tema para otro artículo.

[2] LEGO es marca registrada de The LEGO Group

[3]Zometool es marca registrade de Zometool, Inc

[4]Geomag es marca registrada de Geomag Sa Ch-6862-Rancate Switzerland – Via alla rossa 1

Comments
6 Responses to “La Programación: El último juego de construcción”
  1. Offray Luna dice:

    Muy chévere el tono personal del escrito y las ideas en él. Se nota la fuerte influencia de la programación orientada a objetos para los ejemplos (aunque creo que sigue siendo un juego de construcción en otros paradigmas). Mi inquietud es: por qué en el Sur Global no expresamos también en código lo que decimos en prosa (como en este caso 😛 ).

    Saudos 😉

  2. u3dd dice:

    Para tus cuentas, Dios no es político, abogado, economista: Es programador!!

    Algún día el hombre, transido de dolor y tristeza por lo que han dejado aquellos, descubrirá la religión DeiOrietobrela y conocerá el paraíso de la ya obsoleta biblia judío-cristiana.

    Mientras tanto, sigamos programando y armando soberana propuesta mística.

  3. jasai dice:

    Excelente artículo ingeniero, gracias por inspirars(m)e.

Trackbacks
Check out what others are saying...
  1. […] los de Seymour Papert. Pero además es un juego de construcción como muestro en mi artículo: La Programación: El último juego de construcción. Pero también los sistemas de microcontrolador son juegos de construcción en el sentido de mi […]

  2. […] Esto permite, entre otras cosas, lograr ese gran objetivo de la Gobernanza de TI, que es la independencia de tecnología. De esa forma se puede realmente seleccionar al mejor dentro del principio de racionalidad del gasto. Y sobre todo, no seguir con una marca particular de software por que las dependencias hacen que se esté “casado” con él. En general, hace que los sistemas de la organización sean más flexibles, intercambiables y de bajo acoplamiento. Se parece más a un juego de construcción. […]



Deja un comentario