jueves, 21 de agosto de 2008

Historia de lo cotidiano, XI: Compilar


"Compilar es una forma extraña de darle sentido a una palabra.

Si me preguntasen por lo que estoy haciendo en estos momentos, mientras escribo esto, diría Estoy compilando, y como mínimo cabría hacerse una pregunta: Compilando el qué.

Hasta hace unos años, el común de los mortales, excluyendo de esta comunidad a los seres vivos distintos del hombre, creía en la palabra compilar del mismo modo en que yo creo en la palabra tortilla cuando me apetece una tortilla o el papa en encíclicas cuando le apetece hablar en nombre de Dios. Es decir, que para todo el mundo compilar era eso que el diccionario daba en definir como allegar o reunir, en un solo cuerpo de obra, partes, extractos o materias de otros varios libros o documentos. Esto fue así hasta la expansión de los ordenadores como electrodomésticos cotidianos y, a día de hoy del todo imprescindibles, en los hogares, en las fábricas, en los colegios, en las oficinas, en los parques, en las montañas –tanto las altas como las bajas–, en los restaurantes de alto nivel, en las charcuterías y hasta en los sistemas de control de los grandes aceleradores de partículas (Fermilab y LHC), pues los pequeños se pueden manejar a pelo sin necesidad de ordenadores con tan sólo la fuerza de palanca de un brazo fornido con el que apretar tuercas y desenroscar tuercas.

En esta hipérbole de la tecnología surgió, sobre todo en los años 80, un concepto crucial para poner orden y mejorar las condiciones de acceso a los ordenadores (versión no arcaizante: computadores), como es la programación.

Mucha gente me ha preguntado por dicho concepto y no es algo sencillo de explicar ya que uno no encuentra las palabras coloquiales adecuadas con las que darse a entender ante un ignorante. Así, siempre comienzo hablando de ordenadores, y de componentes –digo: ésos circuitos verdes y bla bla…-, y continuo hablando de dos niveles: el que entienden los componentes (que podría llamarse ensamblador) y que se basa en conceptos puramente físicos, y luego el lenguaje enriquecido, que es lo que se entiende por programación.

Los nombres de los lenguajes de programación que, como ya he dicho, no se ponen en contacto directo con los circuitos y los chips y los multiplexores y los condensadores que pueblan las entrañas de un ordenador, son nombres curiosos. Existen nombres tan crípticos como C o su evolución C++, que parecen tótems, o al menos a mí me lo parecen, porque con una sola letra abarcan un mundo tan gigantesco que nadie es capaz de concebir un avión funcionando, o una ecuación diferencial compleja resuelta por un modelo matemático, o una caja registradora abriéndose, si no fuese gracias al uso de esta sigla y su implicación. Otros nombres posibles: Java, Pascal, Fortran, SQL, ADA, Perl, HTML…

La gente normal le da al botón del ordenador para encenderlo, con ánimo de ver las típicas ventanitas, los rótulos a los que nos acostumbramos, y poder mandar mensajes a conocidos, ver videos de diversa índole, escuchar música o programar. Y en la mayoría de las ocasiones, por no decir todas las veces que esto pasa, nadie repara en lo que va por debajo, en la pléyade de expresiones como las siguientes (ver más abajo), que hacen que nadie haya de hablar idiomas diferentes que el del sentido común para manejar un ordenador. Por eso cuando queremos abrir un archivo, le damos a Abrir. Y cuando queremos cerrar un archivo, le damos a Cerrar. Y nadie se preocupa de cómo hay que decirle a las partes físicas: esos pedacitos diminutos de silicio, y germanio, y galio, y seleniuros, y demás semiconductores; cómo se han de comportar para que un archivo se abra o se cierre.

Hay noches en las que me despierto y recito poemas a media voz. Me recreo en la pronunciación de los puntos y comas cuando programo en Java.

[…]
public String OrdenarTrazado(Hashtable DatosLlamada) {
Hashtable DatosTrans = new Hashtable();
Hashtable DefSalida = new Hashtable();
Hashtable SalidaA3WB01CO = new Hashtable();
if (!SalidaA3WB01CO.get("ERROR").toString().startsWith("OK")) {
return "Error~" + SalidaA3WB01CO.get("ERROR").toString();
}
return "OK";
}
private Hashtable ProcesarEntradaOrdenarTrazado(HttpServletRequest peticion) {
Hashtable Resultado = new Hashtable();
Resultado.put("orden", cc.SpacePad(peticion.getParameter("P0").substring(1, peticion.getParameter("P0").length() - 1), 11));
}
[…]


De todo el esfuerzo necesario para hacer entender a los pedacitos de silicio y germanio que pinten una ventanita o que reproduzcan tal canción, el mayor de todos es el pensar en términos de verdad/falsedad cada uno de los pasos que se van a dar. Por eso, programar es como tener ante ti un laberinto de esos que aparecen perdidos por entre las revistas de crucigramas y que se suelen resolver teniendo memoria visual. La diferencia es que aquí, en esto de programar, la clave está no en ver la salida del laberinto, sino en pensar como si no supieras nada y le intentases explicar álgebra a un mono.

Compilar se convierte en última instancia en el verbo del remate, en el gol de rabona, por decirlo con un símil.
Por ejemplo, ahora, mientras termino este texto, voy al editor de texto que uso para compilar mi programa de java y observo con gusto que el resultado ha sido:

>Exit code: 0

que significa que todo está correcto y que si luego las cosas no van bien no será porque las haya expresado mal, sino porque están mal pensadas. Pero eso ya será otro problema.


Compilar: 2. tr. Inform. Preparar un programa en el lenguaje máquina a partir de otro programa de ordenador escrito en otro lenguaje."
J. L. Pomona.

2 comentarios:

M.Hausmann dijo...

quiero tu voz en mi oreja.suenas a poeta.

a ver si me culturizas a tu compi, y nos vamos los tres a ver peliculas.asi conocemos a sus churris.

y tu texto 3 de los Urales es bonito.

M.Hausmann dijo...

estoy escuchando tu cd y recordando los Urales, que es la conjuncion de tu viaje y el mio de un modo tan hermoso que no creo que consiga olvidarlo.