Una computadora (o un celular, que no es más que una computadora chiquita) es una maravilla técnica desde el punto de vista del hardware. Miles de millones de pequeñas piezas, funcionando con conceptos matemáticos y físicos relativamente simples, son capaces de hacer cosas increíblemente complejas. Pero nada de esto sirve de nada sin software. Y no habría software sin programadores detrás. Programador o programadora es quien programa, pero… ¿qué es programar?
Para responder esta pregunta es primero necesario entender que las computadoras pueden parecer inteligentes pero (aún) no lo son realmente. Solo entienden un lenguaje muy específico y rígido, que consiste en una gramática de tan solo unos cientos (en el mejor de los casos) de verbos que le indican qué hacer. Estos verbos, llamados instrucciones, nacen del diseño propio del CPU, de la estructura de transistores que lo conforman. O sea, no se pueden cambiar: no pueden aprender verbos nuevos.
Programar, entonces, significa hacerse entender con la computadora. Usando su limitado lenguaje, decirle lo que queremos que haga. Implica traducir una acción del lenguaje humano al de la computadora. Puede decirse entonces que aprender a programar es, en muchos sentidos, como aprender un lenguaje nuevo. Sólo que este lenguaje es el de una especie diferente a la humana, con una estructura mental que no siempre es similar a la nuestra. (Siguiendo con la analogía hasta el absurdo, ayuda, claro, el que el humano haya creado esa especie).
Algunas cosas son fáciles de traducir. La computadora entiende muy bien las matemáticas y sabe mucho de lógica. Sabe sumar, restar, dividir y comparar números rápidamente y con mucha precisión. Decirle a una computadora que haga una cierta cuenta complicada suele ser más fácil que contarsela a otro ser humano.
Pero con otras cosas no es tan fácil. Algo tan simple como “quiero que me digas si en esta imagen hay perros” es increíblemente difícil para que una computadora lo entienda. Lograr escribir esa pregunta en lenguaje de la maquina, tan simple como parece, implica años de estudio y programación. De hecho, aún no lo logramos del todo.
Las matemáticas no son lo único que las computadoras entienden fácilmente. También son muy buenas repitiendo. Si saben hacer algo una vez, lo saben hacer un millón de veces. Y, al menos mientras tengan baterías, no se cansan. A esto se le llama loop : decirle a la máquina “seguí haciendo esto mientras se cumpla cierta condición”. Vale aclarar que hay una razon por la cúal se usa la palabra inglesa. Traducir de lenguaje máquina a lenguaje humano sería muy difícil si, además, tenemos que traducir a todos los lenguajes humanos, los programadores se pusieron de acuerdo en usar inglés. Así también ese "mientras" se convirtió en "while". Estos loops son muy utilizados en programación. Es una forma de aprovechar las capacidades lógicas de una computadora y su increíble velocidad para estas "sencillas" tareas. Si una tarea compleja se puede reducir a una serie repetitiva de tareas simples, probablemente se le pueda decir a una computadora cómo hacerlo.
Siempre que uno aprende realmente un nuevo lenguaje, empieza a pensar un poco en ese lenguaje. Y los programadores no son una excepción. Y, si hay pasión de por medio, ¡un buen programador comerá, dormirá y programará while alive!
Si bien el lenguaje con el que tenemos que hablarle a un procesador lo define su construcción, este generalmente está muy alejado del humano. Resulta entonces más fácil construir un lenguaje intermedio, que acerque el lenguaje máquina al humano. Estos son los llamados lenguajes de programación.
Lenguaje de programación no hay uno solo, incluso para un solo tipo de procesador. Existen muchos lenguajes diferentes, orientados a diferentes objetivos. A veces un programador prefiere facilidad de escritura, para desarrollar un programa donde la velocidad de ejecución no es muy importante, en el menor tiempo posible. Otras veces, lo que importa es que se ejecute lo más rápidamente posible, por más de que esto implique más tiempo de programación. C, C++, Java, Python, Fortran, son ejemplos de lenguajes de programación usuales.
Suele ser el caso que una vez que uno aprende un lenguaje en particular, aprender otro se hace más simple. Las estructuras de fondo son similares y, lo más importante a la hora de aprender a programar, la lógica de la computadora es la misma siempre. La mayor diferencia es la sintaxis, las palabras clave y cómo estructurarlas para cada instrucción.
Es útil entonces, para tener un primer vistazo de un lenguaje de programación nuevo, inspeccionar un ejemplo simple, que haga algo conocido. Habitualmente, este es el programa “Hello world”.
Originado a principios de 1970 por Brian Kernighan como ejemplo para primero el lenguaje “B” y luego para el lenguaje “C”, es un tradicional programa cuya única función es imprimir (hola mundo) en alguna salida visible por el programador. Es muy común encontrar el programa ejemplo hello world escrito en muchos lenguajes, como introducción a la sintaxis de estos. Su utilidad radica en que, aunque simple de entender, aborda muchos conceptos importantes y son un buen puntapíe inicial con el cual empezar a aprender otro lenguaje.