Hay un lenguaje llamado COBOL

Soy un escritor. Reivindico mi pertenencia a un subconjunto de la raza humana que escribe. Pero no soy un escritor típico, porque en regla general no son los seres humanos los que leen lo que escribo. Sino maquinas.

Dicho asi suena como si yo fuese un mago. Y en el siglo 21, es un poco asi: escribo programas para computadoras, tambien conocidos en la jerga como «software».

Literalmente, la palabra «software» significa «lo blando», o «cosa blanda». La palabra la inventaron los yanquis, en contraposicion o yuxtaposicion a lo que ellos denominan «hardware». Esta ultima palabra ya se usaba desde la revolucion industrial, probablemente desde antes, para denominar la chatarra, lo ferreo, lo metalico, las maquinas como la de tejer o el tren.

Los simbolos de las dos primeras revoluciones industriales, las de Hobsbawm, eran llamadas comunmente «hardware».

En la tercer revolucion industrial, aparecio el «software», lo intangible, lo etereo, y lo pelotudo que me siento tratando de explicar esto usando palabras tan idiotas. Sigamos.

He aqui la verdad, la que mi abuela nunca supo (por razones que seran obvias, espero): un programa se escribe, asi como un escritor escribe su novela. En ambos casos se usa un teclado (aunque dudo que Hemingway hubiese escrito programas con su Remington del ’32), y el resultado final se lee de izquierda a derecha, en lineas que se suceden de arriba para abajo.

Siempre me pregunte lo que seria la programacion si los arabes no hubiesen detenido sus investigaciones matematicas, por ejemplo despues de inventar los numeros arabigos, o despues de publicar aquel best seller de Al-Khowarizmi en el siglo 11. Escribiríamos los programas de derecha a izquierda?

Lo que quedo del buen señor Al-Khowarizmi fue su nombre, que derivo en la palabra «algoritmo», que es una palabra complicada para designar recetas de cocina.

Decia, entonces, que escribir un programa es como escribir un libro. Claro que no es usted quien lee el libro en cuestión. En realidad usted hace doble clic en un dibujito en su pantalla y no ve lo que yo he escrito; usted «ejecuta» el programa, y en realidad, en su pantalla usted ve una pelicula.

Porque en realidad, lo que uno escribe como programador se parece mas a guiones de cine que a otra cosa. Hay personajes, accion, suspenso, drama, persecuciones y emociones, todas sucediendo entre usted y lo que ve en la pantalla.

Pantalla que le devuelve una version edulcorada de lo que sucede, en realidad, en el interior de su computadora. Y no me venga con las imagenes de «Tron» o «Matrix», porque en realidad, la cosa es mucho mas violenta, como una mezcla de «Full Metal Jacket» con «Dumb and Dumber» y «When Harry Meets Sally». Y una pizca de «Madagascar», sobre todo la parte con los pinguinos milicos. No le miento.

Es tan violenta que hasta nosotros mismos, los programadores, usamos lenguajes que no son los de la computadora. Porque la computadora necesita que le traduzcamos lo que le decimos; imaginese que el lenguaje de la maquina es tan intricado que solo algunos iniciados lo conocen. Por ahi los ha visto usted en algun documental sobre el tema; unos barbudos californianos convencidos de que el mundo empezó el 1ro de enero de 1970.

En la jerga, al proceso de traduccion le decimos «compilacion», porque es como juntar muchos exitos de Eddy Mitchell en un disco y no morir en el intento. Si no saben quien es Eddy Mitchell, no saben que suerte tienen. Basicamente, al compilar el programa escrito por nuestras manos llenas de sudor, cafe y caspa, se obtiene un «algo» dificil de definir, pero que aparentemente se asemeja a una serie de unos y ceros, y que la computadora comprende lo suficientemente bien como para fallar al primer error que encuentra, y asi mostrarnos una ventanita de «dialogo» (que palabra mas optimista, cuando lo unico que se le puede contestar es «ok», «cancel», «retry» o «abort»), que es la version computadorizada de mandarnos a freir churros, o, al menos, a preparar otra taza de cafe antes de empezar todo de vuelta.

Y al lenguaje propio de la maquina, le decimos «assembler» o «ensablador», porque son los ladrillos ultimos con los que se ensamblan estos juegos de Lego diabolicos en los que nos encontramos.

A los lenguajes que se «compilan», se les pone unos nombres muy originales, y la verdad es que hay centenas, miles de lenguajes distintos. Si usted piensa que aprender idiomas es tedioso, gran parte de nuestra vida y de nuestro trabajo de programador consiste en, justamente, aprender nuevos idiomas todo el tiempo.

Pero ojo, que no es solamente el idioma, sino sus dialectos locales, con sus «patois» y sus expresiones tipicas de cada region.

Igual, no nos quejemos tanto, ya que no son idiomas tan complejos como los humanos: en regla general un lenguaje de programacion no cuenta mas de 40 o 50 palabras, y tienen, en regla general, estructuras gramaticales que se asemejan muchisimo entre si; aprender un nuevo lenguaje de programacion despues de que se aprendio el primero toma, en promedio, un par de semanas, y obviamente, la practica ayuda a reducir esos tiempos.

Los lenguajes de programacion se especializan: los hay para todos los gustos y colores. Algunos son buenos para calculo estadistico, otros son mejores para dibujar. Algunos son ideales para mandar cohetes al espacio, otros sirven para conectarse a Facebook o Twitter.

Y hay una gran mayoria que pueden, con mayor o menor dificultad, ser usados para cualquier cosa.

Por ejemplo, hay un lenguaje que se llama COBOL; el nombre es una sigla que significa literalmente «lenguaje comun orientado a negocios». Tiene varias particularidades que lo hacen indicado para trabajar en un ambitos bancarios: es verborragico a muerte y SE ESCRIBE TODO EN MAYUSCULAS. Por ejemplo, en COBOL se le dice a la compu

ATENCION ACA ARRANCA PROGRAMA
CARGAME EL CODIGO EN MEMORIA PARA ESCRIBIR TEXTO
ABRI CONEXION CON LA BASE DE DATOS
VOY A ESCRIBIR ALGO ATENTI CATALINA
ESCRIBI EN LA PANTALLA «QUE HACELGA»
AHORA EL PROGRAMA ESTA POR TERMINAR
AVISEN A ADMINISTRACION QUE YA NOS VAMOS
UN SALUDO A MI VIEJA QUE ME ESTA MIRANDO.

Otros lenguajes son menos vistosos. Por ejemplo, en Assembler el mismo programa es mucho mas dificil de escribir, y basicamente consiste en decirle al chip Pentium que tenes en la compu que haga lo mismo, pero mas complicado:

prep memori
guard «que hacelga»
ponr texto, memoria
prep pantalla
escr variable
tfuiste

Los lenguajes de programacion llevan puesta la neurosis de su creador. Cuanto mas esquizofrenico el inventor, mas estravagante el lenguaje. Y la esquizofrenia es moneda corriente en nuestra industria. Creanme, estar muchas horas delante de una computadora no es inocuo.

Por ejemplo, uno de los casos emblematicos de lenguaje esquizofrenico es uno llamado «Python», que fue creado por un holandes que era fanatico de los Monty Python. La consigna de base del lenguaje es que «existe una sola manera de hacer las cosas correctamente» (no es broma), la cual, obviamente, parte del punto de vista miope e irracional de su autor. No voy a dar un ejemplo de este lenguaje porque es tan aberrante como popular. Pareciera que a muchos programadores les encanta dejar de pensar; la verdad es que, conociendo a muchos fanaticos de Python, no me extrana.

Obviamente, al decir esto me expongo a insultos, amenazas de muerte, reuniones del Ku Klux Klan delante de mi casa, o peor aun, autos con megafonos tocando temas de Pimpinela presentados por Mateyko por doquier.

Porque de la misma manera que los lenguajes de programacion llevan en si el germen de la psicosis de su creador, tambien aglutinan a su alrededor a verdaderas «tribus», cuyos enfrentamientos hacen que un River-Boca se asemeje a una discusion de jubilados en una cancha de bochas en algun pueblo del Tirol.