Burdjia

Fecha Abril 2013, 2 entrada(s)

Feed Rss, Atom

Allegro.pas 5.0 alpha 1

Después de este hiatus ocasionado por problemas técnicos, vuelvo a la carga.

La semana pasada decidí publicar el estado actual de la versión 5 de Allegro.pas.  Todavía está muy verde, pero es bastante más estable que cuando lo utilicé para mi entrada del 2nd. PGD Challenge.  Tanto es así que estoy pensando en publicar una versión precompilada del juego, algo que no pude hacer en su momento.

Este Allegro.pas 5.0 Alpha 1 tiene las siguientes características:

Hay que tener en cuenta que todavía está en desarrollo, por lo que hay cosas de la biblioteca Allegro que todavía no soporta, y tampoco incluye la documentación completa.  Aun así, si quieres probarla puedes descargarte el paquete en este enlace.

Etiquetas: Pascal

Categorías: Allegro.pas, Programación, Proyectos, Videojuegos

Chovinismo informático

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.

Categorías: Artículos, Programación