Todo empezó con una condesa: una historia de la programación
Tags: programming, womenintech
Published: 2020-11-11 18:00:51

_Este artículo sirvió como las bases de una charla que dí sobre introducción a la programación en el primer Bootcamp Web de [Mujeres en Tecnología Córdoba](https://metcba.org), desarrollado en 2019._

Hace poco más de 175 años, poco menos de dos siglos, en la Londres de la era Victoriana, Augusta Ada King, más conocida como [Ada Lovelace](https://es.wikipedia.org/wiki/Ada_Lovelace), intercambiaba correspondencias con [Charles Babbage](https://es.wikipedia.org/wiki/Charles_Babbage) durante el desarrollo de un sistema de máquinas llamado **Analytical Engine** (que en español, sería algo asi como la "[Máquina analítica](https://es.wikipedia.org/wiki/M%C3%A1quina_anal%C3%ADtica)").

Este sistema de máquinas era el sucesor de un primer modelo llamado **Difference Engine** ("la [Máquina diferencial](https://es.wikipedia.org/wiki/M%C3%A1quina_diferencial)"), que serviría para resolver funciones polinómicas.

Ninguna de estas máquinas llego a construirse hasta casi un siglo después, porque la corona británica retiró su apoyo al proyecto.

Sin embargo, Ada escribió paginas y páginas en una publicación inocentemente llamada **Notes** ("Notas"), explicando su interpretación del funcionamiento de esta maquinaria. Y en estas notas, fue la primera en teorizar que se podían computar no sólo cálculos, sino algoritmos de cualquier tipo. Fue ella, justamente, la primera en escribir estos programas, en una época donde las tarjetas perforadas eran el avance científico-computacional del momento (alrededor de 1832).

Las cartas muestran discusiones al desnudo entre Ada y Charles, generalmente en el tono de "ella explicándole a Charles y exigiéndole la misma atención al detalle que ella poseía".

Casi dos siglos han pasado, y la _Encantadora de los Números_ (un apodo que Babbage acuñó para Lovelace) tuvo razón en muchas de sus predicciones.

En una de sus notas, escribe:

> "Esta maquinaria podría actuar sobre otras cosas además de números, si hubiese objetos cuyas relaciones fundamentales pudieran ser expresadas por la ciencia abstracta de las operaciones"

Pensemos en esto por un momento. ¿Qué cosas podemos hacer con un libro? Abrirlo. Cerrarlo. Guardarlo en un estante. Buscar una pagína en particular. Leerlo. Todas estas acciones son semejantes a las cosas que podemos hacer con un número: sumarlo, restarlo, multiplicarlo.

Esto nos permite establecer el siguiente enunciado:

> "Toda realidad es representable"

Esta oración representa uno de los principios de la programación, area en la que Ada Lovelace es considerada por muchos una pionera.

Tenemos ya entonces, varias preguntas, pero la más grande y urgente sería: **¿qué es la programación?**

## ¿Qué es la programación?

Hay múltiples maneras de abordar una definición sobre qué es la programación.

- Desde la **música**, podemos entender la programación como la orquestación de diversos instrumentos en una serie de patrones que cumplen una función específica en la armonía musical.
- Desde el **cine** o el **teatro**, la dirección e interpretación de un guión, llevada adelante con un grupo de actores relacionados, cada uno con su propósito.
- Desde la **gastronomía**, como la preparación par ala receta de una comida, un cóctel o un café.

¿Qué tienen en común todas estas actividades? **Todas involucran una serie de pasos a ejecutar, con un propósito determinado en un contexto particular.**

Esta serie de pasos a ejecutar es comúnmente conocido con el nombre de **programa**. También se lo conoce como rutina, script, secuencia de comandos. A su vez, cada uno de estos pasos puede llamarse, entre otras formas, **instrucción**.

## ¿Para qué sirve programar?

Dado que todo programa está diseñado para satisfacer una necesidad en particular o realizar una tarea específica, podemos asumir que programar es una forma de **automatizar** ciertas acciones que se vuelven rutinarias; es una manera de resolver problemas. Veamos algunos ejemplos de actualidad:

- **Necesitamos formas de comunicarnos en tiempo real.** WhatsApp, Messenger, Telegram y cuanta red social o aplicación de mensajería exista son ejemplos de programas.
- **Necesitamos recordar números de teléfono.** Prácticamente no existe teléfono que no incluya un programa (o aplicación) de "Agenda" o "Contactos".

Existen programas de variados tamaños o complejidades, desde una calculadora hasta la navegación de un transbordador especial, pasando por Candy Crush.

Aprender sobre esta actividad nos empodera a transformar la realidad desde un ejercicio mental que combina lo creativo con lo lógico. Es como armar rompecabezas, donde las piezas que tratamos de encajar son bloqueos de código que, integrados, conforman un programa.

## ¿Todo es un programa?

En un sentido, sí. Y las páginas web, por ejemplo, no son la excepción. Hoy por hoy, en la era de la hipercomunicación, Argentina lidera en el continente en materia de penetración de Internet, donde 9 de cada 10 personas está conectada a la red de redes. Es común hablar de búsquedas en Google, subir fotos a Instagram, participar en acaloradas discusiones en Twitter, por mencionar algunos ejemplos.

Todas estas actividades son llevadas a cabo a través de programas que interactúan con otros programas. El navegador es un programa; los resultados de una bíusqueda son la respuesta de otro programa. **Un sitio web, entonces, es un programa o conjunto de programas.**

## ¿Cualquiera puede programar?

Esta es una pregunta que se ha respondido muchísimas veces en la historia de la computación.

Podría enumerar cada uno de los casos, pero es mejor ir a la respuesta: **¡sí!** Cualquiera puede programar, con el debido entrenamiento y práctica.

Como con cualquier otra habilidad, hay personas a las que puede resultarle más fácil o más difícil. Es importante remarcar algo en este punto: **todas las personas aprendemos de distintas maneras**. 

Si te considerás una persona analítica, probablemente te guste resolver problemas siguiendo un método ordenado y lógico, descomponiéndolo en partes más pequeñas y simples. Por otra parte, si sos una persona intuitiva, vas a intentar encontrar respuestas a través de procesos más exploratorios, probando por ensayo y error, buscando soluciones alternativas.

Todo depende de los procesos cognitivos y de la manera que percibís e interactuás con el mundo. **Ninguna forma es mejor que otra.** Es más, los resultados más interesantes surgen de confiar en diversas metodologías de pensamiento.

Un mito muy común es que si no sabés matemática, no podés programar. **Esto es falso.** Ciertamente puede ser una herramienta útil, pero es sólo eso: una herramienta. Ayuda porque es una forma de ejercitar el pensamiento lógico-abstracto, pero sin duda no es la única.

Por esto, no te frustres si algo no sale a la primera. Aprender a programar es como aprender un idioma: ¡hay que practicar, practicar y practicar! Y, si lo hacés en buena compañía, ¡es más divertido!