Fue en mi primera clase de Introducción a las Ciencias de la Computación cuando me enfrenté a la misma pregunta que lleva el título de este post: ¿Qué son las Ciencias de la Computación?

Aunque tenía una idea medianamente correcta sobre lo que implica llamarse computólogo, no puedo decir que entendía completamente el concepto. Y aunque no creo tener la suficiente experiencia (ni de cerca) para poder contestar esa pregunta, considero que al menos puedo vislumbrar a donde me dirijo estudiando esta carrera.

Primero que nada, no vendría mal un poco de contexto sobre mí. Actualmente me encuentro estudiando el primer semestre de la carrera en Ciencias de la Computación, en la Facultad de Ciencias de la UNAM. El cómo llegué aquí no es una historia muy interesante. No puedo ver un momento clave en mi pasado que me haya hecho decidir presentar mi examen de admisión, o algún momento de iluminación en el que se me haya revelado que debía estudiar esto. Fue más bien algo progresivo; una cadena de eventos que he vivido hasta llegar aquí.

Desde muy pequeño puedo recordar encontrarme fascinado por las computadoras. Mi padre tenía una computadora de escritorio en su trabajo, donde algunas veces llegué a pasar el tiempo cuando lo acompañaba. No eran más que juegos y alguna que otra página educativa con lecturas para niños (aprendí a leer muy pequeño, gracias mamá). Haciendo memoria, creo que ahí fueron mis primeros acercamientos a una computadora. He tenido la fortuna de vivir en una época y con una familia donde jamás ha sido muy raro tener un equipo de cómputo en casa.

No obstante, muchas personas tienen acceso a una computadora sin mostrar tendencias a esta área. Probablemente mis primeras incursiones en la computación donde comencé a ver a un ordenador como algo más, fue cuando descubrí que podía hacer presentaciones en PowerPoint y a dibujar en Paint. Desde entonces me ha interesado muchísimo ver qué tanto puedo explotar una computadora como una herramienta para crear algo mío. Era alrededor del año 2006, y no pensaba en que me dedicaría a esto al crecer. Simplemente era un pasatiempo: utilizar la paquetería de Microsoft Office era realmente cool; no olvidemos que andaba de moda Ares, donde podías descargar toda la música que quisieras; y además fui de los pocos bendecidos de mi generación que llegaron a utilizar MSN antes de que muriera, y tuve mi correo Hotmail antes de ser Outlook.

Luego tuve uno de los regalos que más me marcaron en mi vida. Fue una navidad, por ahí del año 2013 cuando mi papá me regaló mi primera laptop. Era una Compaq CQ45 que aún tengo por ahí acumulando polvo. Durante el primer año de tener esa computadora aprendí una inmensa cantidad de cosas que eran posibles gracias a esa máquina mágica. Aprendí a utilizar mucha paquetería de Adobe, descubrí que era posible crear una página web a mis corta edad y descargué muchos videojuegos piratas. Evidentemente descompuse mi computadora muchas más veces de las que me gustaría admitir, pero eso no fue completamente malo, pues eventualmente aprendí a repararla también.

Tenía más o menos 14 años cuando por primera vez probé Linux (obviamente usé Ubuntu), y más o menos por esas mismas fechas comencé a incursionar en la programación. Todavía recuerdo mi primer programa, un pequeño script que te pedía dos números como entrada y te permitía elegir una operación (suma, resta, multiplicación, y poco más) y listo, desplegaba el resultado.

Los próximos 4 o 5 años no pienso explicarlos pues hice de todo un poco. Aprendí más programación, tuve mi etapa de “hacker”, jugué a ser administrador de sistemas, armé una computadora, monté mi centro de entretenimiento con una Raspberry Pi, di una conferencia sobre introducción a la programación en Python… como dije, de todo un poco.

Por algunos años he tenido la idea de estudiar algo relacionado a la tecnología (y hoy en día sí que hay variedad de opciones), pero no fue sino hasta diciembre del 2018 que finalmente decidí que quería estudiar Ciencias de la Computación.

Para entonces ya conocía algunos lenguajes y tenía algo de experiencia en programación, nada formal pero suficiente para participar en algo llamado el Advent of Code. Para los que no lo conocen, el Advent of Code es un reto que dura todo el mes de diciembre, en donde debes resolver dos problemas cada día del mes con tu lenguaje de programación preferido. No terminé, y me quedé como a la mitad del mes. No obstante, algo que me dejó marcado fue que por primera vez tuve un acercamiento a la programación desde un punto de vista mucho más cercano a las matemáticas. Varios de los problemas requerían el utilizar algoritmos eficientes y estructuras de datos adecuadas para ser capaz de resolverlos, algo que no había hecho antes. Después de lograr implementar el algoritmo de “Summed-area table” y un Zipper en programación funcional, supe que me debía dedicar a esto de por vida.

Regresemos un par de meses atrás, y el profesor pregunta: ¿qué son las Ciencias de la Computación?

Es difícil dar una respuesta para que una persona promedio que no tiene un acercamiento al tema entienda qué es lo que hago, sin confundirme con un ingeniero en sistemas, un informático, o incluso un técnico en computación. Hasta ahora mi respuesta ha sido:

Estudio Ciencias de la Computación, soy algo así como un matemático que trabaja con las computadoras.

No me ha fallado esa respuesta. Es concisa y menciono 3 palabras clave que a muchos les dan miedo: Ciencia, Computación, Matemáticas. Es en serio: si quieren lucir inteligentes, sigan mi consejo y utilicen mi respuesta.

Sin embargo, quiero pensar que este blog lo van a leer más personas que mi familia y algunos amigos, por lo que creo que sería justo evitar presumir y mejor ahondar más en la respuesta a la pregunta que viene como título.

No estoy del todo mal cuando digo que soy un matemático. Y no pretendo ofender a los verdaderos matemáticos, pues estoy seguro de que hay muchos de ellos que se burlarían al ver mis demostraciones de álgebra, pero tampoco hay quien pueda negar que la computación está construida sobre un sólido cimiento matemático; y aún más, las Ciencias de la Computación en sus orígenes formales corresponden al trabajo de matemáticos en el estudio de algoritmos. Y he aquí una palabra clave: algoritmos.

Siendo un poco más precisos (y plagiando un poco a mi profesor de ICC), las Ciencias de la Computación se refieren al estudio matemático de algoritmos. Aquí comienzo a ser más honesto sobre lo que estudio y, más importante, sobre lo que me sedujo a estudiar esta carrera.

No tengo duda de que una persona puede aprender a programar sin tener la menor idea de las bases matemáticas que sustentan esta tarea. Sin embargo, yo quería ahondar un poco más; no quería quedarme en saber desarrollar un programa, sino que buscaba conocer qué es lo que viene detrás de esto. Tenía interés por estudiar el trabajo de los científicos que han trazado el camino de la tecnología actual.

Y todo lo anterior se reduce a algoritmos. Los computólogos debemos tener un conocimiento especial en algoritmos. Y aunque me gustaría mucho intentar definir lo que es un algoritmo en este post, creo que lo dejaré para otra ocasión pues, aunque su definición es muy concreta, considero que merece algo más que un párrafo para realmente entender las enormes implicaciones que los algoritmos tienen.

Pero de la forma en que lo he dicho hasta el momento, considero que no queda clara la diferencia entre un matemático y un computólogo. A final de cuentas, ¿acaso un matemático no estudia también algoritmos? En efecto lo hace, pero un computólogo va más allá. Un computólogo estudia un algoritmo como un modelo matemático que resuelve un problema, pero además estudia su implementación en la que, a mi parecer, es la más hermosa máquina alguna vez inventada: la computadora.

Este post no me bastaría para explicar la forma en que las computadoras han revolucionado a la raza humana. Sin duda alguna son las máquinas con mayor importancia en crearse hasta el momento, y probablemente nunca habrá un invento que tenga un impacto de la misma magnitud.

Aquí cabe mencionar, las Ciencias de la Computación no se llaman así porque utilicemos computadoras. De hecho, las Ciencias de la Computación existen desde antes de que existieran tales máquinas. Las computadoras obtienen su nombre a partir de las Ciencias de la Computación. Pero entonces, ¿de dónde viene la palabra Computación?

La Computación se refiere a lo computable. Es decir (de manera un tanto simplificada), a aquello que podemos obtener como resultado de algún algoritmo.

Ya hemos tocado algunos de los puntos más importantes en el asunto, entonces intentaré proveer una respuesta un poco menos ostentosa y más precisa de lo que son las Ciencias de la Computación:

Las Ciencias de la Computación son la rama de las matemáticas que se encarga del estudio de algoritmos, así como de su implementación con el auxilio de las computadoras.

Con mi corta experiencia en el tema, considero que es una definición suficientemente certera para compartir una idea general de lo que hace un computólogo.