Empezó como un juego y derivó en experiencia formativa. El adolescente que, en los años ochenta, desarrolla programas en su computadora personal descubre el poder de un tipo particular de pensamiento: hiperanalítico, comprometido con la simplicidad, lo explícito, lo bien estructurado y lo preciso.
| Comentario de Axel Arturo Barceló Aspeitia
Llama la atención que muchos de nuestros juegos involucren algún tipo de simulación. De niños jugamos a policías y ladrones, con muñecas y carritos, somos turistas de tablero con hoteles en Nigeria y Reino Unido, exploramos espacios virtuales en los videojuegos y construimos castillos en la arena. Desde chicos, pues, vivimos en un espacio mixto donde habitaban realidad y ficción, pero distinguimos a los autos de juguete de los verdaderos, a los personajes de la televisión de las personas ordinarias, a las divisas del Turista Mundial del dinero legítimo, a la violencia de nuestros videojuegos de la auténtica. Y, por supuesto, a la inteligencia artificial de nuestras computadoras de la inteligencia real.
A mí me tocó vivir la adolescencia en la década de los ochenta y, ya entonces, las computadoras ocupaban un lugar central en la cultura popular, especialmente por los videojuegos y películas basadas en ellos como Tron (Charlie Bean y Robert Valley, 1982) o Juegos de guerra (John Badham, 1983). La computadora personal aún no era un dispositivo que se viera en todas las casas, pero no eran raras las consolas de juego tipo Atari o Intellivision. Con mi hermano, también adolescente, juntábamos nuestros “domingos” para comprar revistas de computación y videojuegos, como Computer Games Magazine.
Después de mucho rogar, convencimos a nuestros padres de que nos compraran una computadora personal, una Commodore-64. La compramos de “fayuca” en Tepito. Como era fácil piratear los videojuegos, pronto tuvimos muchos de ellos. Pero, para mí, lo más interesante era que la computadora se podía programar. En BASIC (acrónimo de Beginners’ All-purpose Symbolic Instruction Code, o Código simbólico de instrucciones de propósito general para principiantes, en español). La versión de este lenguaje de programación que operaba en esa computadora contenía tanto expresiones en lenguaje natural, como las famosas partículas “if” y “then”, de la implicación material o expresiones alfanuméricas en código hexadecimal; es decir, expresiones numéricas en las que, además de los dígitos tradicionales, se usaban las primeras seis letras del alfabeto como dígitos extra. Así, el número que en base decimal expresamos como “138”, por ejemplo, en base dieciséis se escribía como “8A”.
Desde el principio me fascinó este lenguaje híbrido. Me encantaba programar y, pronto, mis padres se asustaron del tiempo que pasaba sentado frente a la computadora, absorto frente a líneas y líneas de código. En particular, me cautivaba el reto de convertir mis deseos (lo que quería que hiciera la computadora) en instrucciones perfectamente explícitas y ordenadas. Me gustaba esa necesidad de precisión y estructura. No había lugar para vaguedades u oscuridades. Simplemente, el programa corría o no corría; o, bien, hacía lo que le pedías o no lo hacía. No había lugar para medias tintas. Además, como las computadoras de ese entonces contaban con una cantidad muy limitada de memoria, era necesario tratar de reducir los algoritmos al menor número de instrucciones, lo más concisas posibles. Este imperativo de simplicidad también me seducía. Al final, aprendí del poder de presentar las cosas de manera simple, clara, explícita y bien estructurada.
Mi experiencia temprana con la programación afectó de manera profunda y permanente la forma en que miro al mundo y mi manera de hacer filosofía. En particular, desarrolló en mí el hábito del análisis cuidadoso y detallado. Me convenció de que uno no entiende plenamente un fenómeno si no es capaz de descomponerlo en sus componentes más simples y explicar de manera precisa y explícita cómo se engarzan unos con otros.
El lenguaje de la computación también me sirvió de propedéutico para aprender otros lenguajes y herramientas formales con las que ahora hago mi trabajo de investigación filosófica. Sobre todo, me ayudó a entender que analizar —a final de cuentas, eso es lo que hacemos al programar, especialmente en aquellas computadoras del siglo pasado— es, esencialmente, un ejercicio de representación.
La sintaxis artificial de los lenguajes de computación está diseñada ex profeso para que cada instrucción básica sea lo más simple y explícita posible. En ese sentido, los lenguajes de programación no son realmente lenguajes, como lo son el tsotsil o el vasco. Nuestra interacción con la máquina no es la de interlocutor: no nos comunicamos con ella.
Se ha dicho mucho que la máquina sólo sigue nuestras órdenes; pero, en mi experiencia, la computadora me servía, sobre todo, para poner a prueba mis capacidades de análisis. El que mi programa corriera significaba que había analizado correctamente la tarea, que había logrado descomponerlo correctamente en sus elementos básicos y había conseguido representarlos de manera explícita dentro de su exigente sintaxis artificial. En este sentido, no me admiraba de su “capacidad” para hacer lo que le había pedido, sino que sentía la satisfacción de haber logrado programarla para que lo hiciera.
Números, colores, sonidos
Este lenguaje mixto cambió, también, mi percepción del papel de los números en el lenguaje. En español, por ejemplo, usamos poco palabras como “cinco” o “diecisiete”; mucho menos, expresiones más complejas como “doscientos dieciocho mil quinientos cincuenta” o “tres dieciseisavos”. Un poco más comunes son palabras como “uno” o “mil”. Como sea, solemos usarlas para hablar de cantidades, para numerar cosas (los boletos de una lotería, las casas en una calle) o para medir algunas magnitudes (nuestra altura o talla de calzado).
Sin embargo, el potencial de representación de los números es mucho mayor. No es frecuente pensar, por ejemplo, que los colores serían algo que se pudiera representar numéricamente, algo que se puede contar o medir.
No obstante, los colores están estructurados de manera tal, que hay muchas ventajas en representarlos con números. La forma en que los denominamos, usando adjetivos como “verde” o “dorado”, es asistemática. Algunos colores ocupan mayor espacio dentro del espectro cromático que otros, todos tienen límites más bien arbitrarios, no hay un orden natural en las palabras que usamos para nombrarlos, etcétera.
Pero, al empezar a programar, tuve que aprender otra manera de representar los colores: un sistema numérico de coordenadas en el cual el 000000 correspondía al negro absoluto; el 000001, a un negro con un poco, muy poco, de azul; el 000002, un negro con un poco más de azul, y así hasta llegar al 0000FF (recuerden que el sistema numérico de mi computadora era hexadecimal) que correspondía al azul más puro, luego del cual los colores iban pasando del azul al verde, después al rojo y, finalmente, al blanco FFFFFF; sumando, en total, 16 millones 777 mil 215 tonos cromáticos.
Conocido como RGB hexadecimal (por las iniciales en inglés de sus colores primarios: rojo, verde y azul), este sistema hace explícitas las relaciones estructurales entre los diferentes colores del espectro cromático. Las relaciones de cercanía cromática entre los diversos tonos, que apenas se vislumbran en nuestro lenguaje natural, se vuelven evidentes en esta representación numérica. Sabes, por ejemplo, que, si la denominación de dos colores difiere solamente en sus primeros dos hexadígitos, como 2412C6 y A712C6, la única diferencia entre ellos es que uno es más rojo que el otro; o que si el número incluye sólo hexadígitos pequeños, como 332410, es más oscuro que uno de números altos, como 7F89AB.
Este sistema se puede aplicar no sólo a los colores, sino a casi cualquier otro sistema de propiedades. Por ejemplo, poco tiempo después de empezar a programar me interesé en la música electrónica, y aprendí a pensar en los sonidos como conjuntos de números o, para ser más precisos, conjuntos de parámetros.
De esta forma, pude modelar una nota musical como el conjunto de un tono, una duración, una velocidad, una intensidad, una dinámica, etcétera, cada uno de estos elementos representado como un número entre el cero y el 255; es decir, entre el 00 y el FF.
Por medio del sistema MIDI (siglas en inglés de Interconexión Digital para Instrumentos Musicales), aprendí a coordinar información que fluía de un aparato a otro y a generar piezas musicales más complejas. Comprendí que es posible programar música; es decir, que también es útil analizar los episodios sonoros bajo el mismo esquema de análisis utilizado durante mi corta experiencia programando: descomponerlos en sus componentes más simples y representar su estructura de manera explícita y exacta.
Actualmente, parte de mi trabajo consiste en ayudar a entender qué hace la Inteligencia Artificial (IA) y qué nos dice su “comportamiento” sobre nuestra propia mente.
Por supuesto, la IA ha evolucionado muchísimo desde aquellos años, y mi experiencia con el lenguaje de programación BASIC no es representativa de la interacción que tenemos ahora con ella. Sin embargo, a través de estos recuerdos quería mostrar cómo nuestra experiencia con tecnologías como las computadoras personales nos ayudan —o, por lo menos, a mí me ayudaron— a comprender el poder de un tipo particular de pensamiento: híperanalítico, comprometido con la simplicidad, lo explícito, lo bien estructurado y lo preciso.