No me extraña que la palabra “chovinismo” provenga del francés. No hace mucho me han encargado hacer un trabajito relacionado con el sistema de gestión de contenidos Spip, de origen francés. Al ser un sistema abierto y libre, se puede ver su código fuente, y todo él está escrito en francés.
Yo también suelo escribir código en castellano, pero últimamente me he fijado que he dado un giro hacia el inglés. En proyectos como Allegro.pas esto es comprensible, dado que es un producto destinado a una comunidad internacional concreta y el inglés es la nueva lingua franca; pero en otros proyectos de índole más personal también he usado el inglés más a menudo de lo que esperaba. Tras pensarlo un rato, he llegado a la conclusión de que es el propio lenguaje quien me ha llevado por ese camino.
Por ejemplo, un lenguaje como C o PHP, en el que la mayor parte de sus palabras clave son símbolos sin significado lingüístico (como “++”, “->”, “!=:”, “{“, etc) no parece que existan problemas sea cual sea el idioma elegido para describir las variables, funciones y objetos. La siguiente función de una utilidad de codificación por contraseña que hice hace el año pasado:
/* Realiza la codificación con la clave cargada en la memoria. */
int CodificaConClaveEnMemoria (void)
{
unsigned char *CarClave = NULL, Caracter;
CarClave = Clave;
while (LeeCaracter (Origen, &Caracter)) {
Caracter = (Caracter ^ (*CarClave)) & 0x00FF;
if (fputc (Caracter, Destino) != (int)Caracter) {
fprintf (stderr, "ERROR de salida (Caracter %d)\a\n\n", Caracter);
return FALSE;
}
if (*(CarClave++) == '\x00')
CarClave = Clave;
}
return TRUE;
}
Salvo unas cuantas palabras clave y funciones de biblioteca, el resto está en castellano y no parece llevarse muy mal.
Sin embargo, un lenguaje como Pascal, que uso con más frecuencia últimamente, en el que casi todas las palabras clave tienen significado o son abreviaturas (como “INC”, “BEGIN”, “AND”, etc) parece que no funciona tan bien, y que queda mejor escrito en inglés. Por ejemplo, el siguiente procedimiento extraído una de un editor de mapas en el que estoy trabajando desde hace tiempo:
(* Lee desde un archivo de disco. *)
PROCEDURE TMapa.LeeDe (NombreArchivo: STRING);
VAR
Archivo: AL_PACKFILEptr;
Firma, Ancho, Alto, X, Y: LONGINT;
BEGIN
Archivo := al_pack_fopen (NombreArchivo, AL_F_READ);
IF Archivo NIL THEN
TRY
{ Firma del archivo. }
Firma := al_pack_mgetl (Archivo);
IF Firma AL_ID ('MAP1') THEN
RAISE Exception.Create ('Unknown file format');
{ Tamaño del mapa. }
Ancho := al_pack_mgetw (Archivo);
Alto := al_pack_mgetw (Archivo);
{ Creamos el mapa. }
CreaNevoMapa (Ancho, Alto);
{ Casillas. }
FOR X := LOW (Mapa) TO HIGH (Mapa) DO
FOR Y := LOW (Mapa[X]) TO HIGH (Mapa[X]) DO
BEGIN
{ Índice }
Mapa[X, Y].Ndx := al_pack_mgetw (Archivo);
{ Valores extra. }
Mapa[X, Y].Val1 := al_pack_mgetw (Archivo);
Mapa[X, Y].Val2 := al_pack_mgetw (Archivo);
END;
FINALLY
al_pack_fclose (Archivo);
END
ELSE
RAISE Exception.Create ('Can''t open file "'+NombreArchivo+'" for reading.');
END;
No sé a vosotros, pero a mi me chirría un poco. Quizá sea, simplemente, porque no estoy acostumbrado. Aun así, tras haber visto Spip y su éxito estoy experimentando un poco este chovinismo con el proyecto del editor de mapas, a ver qué pasa.