Cosas mías

June 30, 2007

Jack McDevitt: Henry James, This One’s For You

Brevísimo pero muy buen relato. Una editorial de segunda recibe un manuscrito que podría ser una obra maestra comparable a Guerra y Paz. El editor se pone en contacto con el autor y le ofrece un contrato para cuatro novelas más, que éste acepta.

Durante la comida de celebración el editor descubre que el libro fue escrito por un programa que el supuesto autor ha creado, y que apenas le costó unas horas tras un par de semanas de aprendizaje.

El editor, asustado porque un software va a acabar con el negocio editorial (y de paso los grandes genios de la literatura), empuja al autor en plena calle para que lo atropelle un autobús…

Simplemente delicioso.

A. M. Dellamonica: A Key to the Illuminated Heretic

Un cuentecillo insulso que narra los días previos a la batalla de 1430 en la que se supone se produjeron tres milagros en la persona de la santa Juana de Arco. Prescindible, deleznable y poco interesante.

June 29, 2007

Carol Thurston: El Ojo de Horus (El Amuleto)

Filed under: Lecturas

Realmente no entiendo la estúpida manía que tienen los traductores o las editoriales hispanas de cambiar los títulos de las novelas cuando estos son perfectamente traducibles. La excusa de que existe otro libro con el mismo título no me vale, ya que entonces la culpa sería de la editorial anterior, y si realmente existen en habla inglesa dos novelas con el mismo título, pues que existan tanto en castellano como en inglés. El título original es El Ojo de Horus y la versión en castellano se ha traducido por El Amuleto.

Por otro lado es un libro muy bello y muy dulce. Desde mi punto de vista demasiado sensiblero y emotivo, pero lo cierto es que la obra te coge bastante bien y parece ser que Carol Thurston tiene “ese” toque a la hora de escribir.

La trama es completamente rosa, una novela de amor ambientada en dos épocas, el antiguo Egipto y la actualidad. Dos chicas muy parecidas enamoradas de un hombre mayor. Un misterio que no es tan misterio. Una trama muy bien llevada hasta el final, y un final bastante bueno.

Ya tiene que ser bueno un libro rosa para que me guste… y este ha sido uno de ellos.

June 26, 2007

C++/CLI (II): Sobre referencias y referencias de seguimiento (tracking references)

Filed under: Programación

En C++ , cuando queremos que una variable sea modificada dentro de un método tenemos dos opciones: pasar su dirección de memoria y operar dentro del método con el puntero, o utilizar referencias.

Aunque en un principio las referencias y los punteros pudieran parecer equivalentes, no lo son, ya que existen diferencias bastante notables. Pero vayamos por partes.

Veamos el siguiente código:

void CambiaA(int *b)

{

(*b)++;

}

 

int main(void)

{

int a=5;

CambiaA(&a);

printf("%i",a);

return 0;

}

void CambiaA(int& b)

{

b++;

}

 

int main(void)

{

int a=5;

CambiaA(a);

printf("%i",a);

return 0;

}

Observamos que el código es casi idéntico. El bloque de la derecha trabaja con referencias, el de la izquierda con punteros, y ambos realizan la misma acción: sacar por pantalla el número 6, que se corresponde de instanciar una variable que llamamos a (es decir, crear un hueco en la pila de suficiente tamaño para guardar un entero) y guardar en su interior el valor 5. Tras la llamada al método, el contenido de a se incrementa en uno, pero mediante diferentes vías (el hecho de que un compilador serio de C++ generara prácticamente el mismo código no nos interesa, lo que nos interesan son los conceptos subyacentes).

El código de la derecha, aparte de ser más claro, es más económico en memoria (aunque posiblemente no en tiempo de compilación). Cuando entramos en CambiaA(), el compilador no crea ninguna variable nueva, sino que anota dónde está a en la pila y, al ejecutar la instrucción b++ incrementará directamente la casilla en donde se ha guardado a, aunque ahora se llame b (Otra vez queremos hacer notar que lo que realmente está ocurriendo es que el compilador cogerá de la pila el valor de a, lo meterá en un registro del micro, realizará el incremento y volverá a colocarlo en su lugar, pero repetimos que de momento sólo nos interesa el concepto).

En el código de la izquierda, la entrada en CambiaA() creará una nueva variable en la pila que es el puntero b, cuyo contenido será la dirección de memoria en donde esté guardado a. Y cuando incrementemos el valor de *b, estamos realmente mirando dónde apunta b y cambiando dicho valor.

La diferencia es sutil pero muy importante. En este ejemplo puede no verse claro, pero si el lector utiliza sobrecarga de operadores podrá comprobar cuán potentes son las referencias a la hora de trabajar con estas construcciones, ya que mediante su uso permiten devolver una referencia a la misma variable, ahorrando así memoria y acelerando las cosas.

Un consejo práctico a la hora de elegir qué utilizar, si un puntero o una referencia, es hacernos la pregunta de si la llamada al método que va a modificar el parámetro trabaja con asignación de memoria dinámica o no; es decir, si lo que estamos pasando está instanciado en el montículo, lo suyo es pasar un puntero, y si está instanciado en la pila, usaremos referencias. Evidentemente un es una regla estricta, sino simplemente un mero juicio de valor ante la duda.

Un uso práctico para las referencias es la devolución de resultados. Supongamos que queremos realizar una operación matemática cuyo dominio en el resultado puede ser cualquier valor de la variable a considerar, por lo que no podemos determinar a priori si el resultado obtenido es ese porque la operación se llevó a cabo satisfactoriamente o porque el cálculo se detuvo ahí. Podríamos utilizar una firma de método como la siguiente:

bool OperacionMatematica(Elemento &e);

De modo que la devolución de true nos indica que lo que hay en e es válido, y en donde Elemento puede ser cualquier construcción matemática (Aquí entramos en otro tema que genera bastantes discusiones, y es la decisión de lanzar una excepción en caso de error o devolver un valor como acabamos de hacer, pero no vamos a discutir eso ahora).

Esta característica también está disponible en C++/CLI con el nombre de referencia de seguimiento (o tracking reference en inglés). El concepto es el mismo, aunque la nomenclatura y sintaxis sean diferentes.

En C++/CLI una referencia se indica mediante el símbolo %, y su funcionamiento es básicamente el mismo. Realizando el código anterior en C++/CLI quedaría:

void CambiaA(int ^b)

{

^b++;

}

 

int main(array<String ^>^)

{

int a=5;

CambiaA(&a);

Console::WriteLine(a.ToString());

return 0;

}

void CambiaA(int% b)

{

b++;

}

 

int main(array<String ^>^)

{

int a=5;

CambiaA(a);

Console::WriteLine(a.ToString());

return 0;

}

Si observamos, los cambios son meramente cosméticos y estamos realizando las mismas acciones. Ahora disponemos en el código de la izquierda de referencias (en su equivalente al puntero nativo) y en el de la derecha de referencias de seguimiento (en su equivalente a la referencia nativa). Ya sé que la nomenclatura es un poco liosa al llamar referencia al manejador para las variables situadas en el montículo manejado y referencia de seguimiento al simple alias, pero es lo que hay.

Pese a lo que pudiera pensarse con el código de la izquierda, no hay ningún encajamiento ni desencajamiento, ya que al tener almacenada a en la pila, la llamada a CambiaA() simplemente modifica su valor. Vea si no el código MSIL generado para dicho método:

 

Pero vayamos un paso más en cuanto a C++/CLI. ¿Podemos pasar una referencia de seguimiento de una referencia? Pues claro que sí. Igual que en C++ podemos pasar la referencia de un puntero. Veámoslo.

using namespace System;

 

void CambiaSTR(String^ %str)

{

str="Hola Nuevo";

}

 

int main(array<String ^>^)

{

String ^cad="Hola Viejo";

CambiaSTR(cad);

Console::WriteLine(cad);

return 0;

}

void CambiaA(int* &b)

{

(*b)++;

}

 

int main(int argc, _TCHAR* [])

{

int *a=new int();

*a=5;

CambiaA(a);

printf("%i",*a);

return 0;

}

Aquí el bloque de la derecha volverá a devolver 6 como respuesta y el de la izquierda "Hola Nuevo", quedando la cadena "Hola Viejo" marcada para destrucción ("Hola viejo" es una cadena estática y está alojada dentro del ejecutable, en C++ simplemente no pasaría nada al perder la asignación de cad, pero en C++/CLI quizás la cadena se copie del segmento de datos al montículo manejado durante la carga del ensamblado. Realmente ignoro el comportamiento. En otro momento lo miraré).

Y cómo no, no es necesario llamar a un método o función para trabajar con las referencias:

using namespace System;

 

ref class Cosa

{

public:int a;

};

 

int main(array<System::String ^> ^args)

{

    Cosa ^c1=gcnew Cosa();

    c1->a=30;

    Cosa %c2=*cosa1;

    c2.a++;

    Cosa ^c3=%c2;

    c3->a++;

    Console::Write(c3->a.ToString());

    return 0;

}

class Cosa

{

public:int a;

};

 

int _tmain(int argc, _TCHAR* argv[])

{

    Cosa cosa;

    cosa.a=33;

    Cosa &rCosa=cosa;

    rCosa.a++;

    printf("%i",cosa.a);

    return 0;

}

June 24, 2007

Sobre leer libros

¿Qué programador no conoce a Charles Petzold?

Por si acaso, Charles Petzold es el padre del libro por excelencia sobre programación en Windows. Junto a Ritcher han sido los adalides de la formación de miles y miles de programadores bajo Windows cuando lo único disponible era un triste SDK que explicaba, no muy bien por cierto, los intríngulis del API de Win32, un compilador de C y El Petzold.

Petzold es un escritor profesional de informática, de hecho ahora escribe sobre C# y las nuevas tecnologías .NET, con mucho menor éxito y profundidad a mi entender.

Pero ha puesto una curiosa entrada en su blog sobre cómo leer un libro. De más está decir que un buen escritor ha de ser, en primer lugar, un mejor lector.

Y como tal nos da sus consejos, que son ciertamente válidos en este nuestro mundo altamente tecnificado. Entre otras cosas nos dice que no leamos en la misma mesa en donde tengamos el ordenador, ni siquiera en la misma habitación, que nos pongamos cómodos (pero no mucho) y que si sentimos la flaqueza de ir al ordenador a consultar algo sobre el libro, que resistamos la tentación o lo apaguemos.

Da muchos más consejos, todos ellos útiles y que en general yo sigo a rajatabla. En mi caso, con la fortaleza suficiente para resistir la tentación del ordenador, lo que suelo hacer es levantarme de vez en cuando -sobre todo en los fines de semana, en los que las tardes y noches están dedicadas casi por entero a la lectura- y mirar el correo y las noticias, para cambiar un poco de postura y descansar. Esa pausa también suele venir acompañada de una visita al frigorífico.

Pero en lo que no comulgo con él es en el tema de la lectura electrónica. Casi todas mis lecturas son electrónicas, es decir, el libro en sí está siendo leído en la pantalla de un UMPC a 800x480 o de una PDA a 640x480. Eso no quiere decir que el libro sea una burrada de esas modernas con enlaces y todo eso, no, sino que se trata de la edición electrónica del mismo libro que tengo en la mesa…

Por lo demás, comulgo con ruedas de molino con él.

De lo que no habla es del teléfono móvil y de los sistemas de mensajería on-line… Antes utilizaba el Skype para comunicarme con la empresa y algunos amigotes, pero tras un par de malas experiencias con dicho programa, entre ellas la de un spammer que no sé cómo, por mucho que lo bloquee, sigue apareciendo y enviándome basura, he decidido desinstalarlo y quedarme sólo con el Messenger que, ciertamente, cierro cuando me pongo a leer y me acuerdo de hacerlo. Lo que, por desgracia no puedo hacer, es apagar el móvil de la empresa, que por fortuna no suele sonar los fines de semana.

Ah, por cierto, la entrada de Petzold, en inglés, aquí.

Jules Verne: Héctor Servadac

Filed under: Lecturas, Verne, Jules

Junto a Viaje al centro de la Tierra quizás sea la más fantástica de todas las novelas de Verne, no obstante justificable dentro de los Viajes Extraordinarios, ya que sirve como excusa para contarnos cosas sobre astronomía; si en De la Tierra a la Luna y Alrededor de la Luna Verne no sale del sistema Tierra/Luna, en esta novela llega hasta Saturno, contándonos lo que se sabía en la época.

Entretenida, interesante, quizás un poco infantilizada como casi todas sus obras, el interés está centrado en el propio viaje en sí, cómo son capaces de sobrevivir al mismo.

También se ha comentado que es una de las obras más antisemitas de toda su producción; aquí nos presenta a Isaac Hakkabut , fiel estereotipo del judío avaro, prestamista y ladrón.

También toca de lleno otros temas típicos y tópicos, como la idiosincrasia del grupo español (que vende Ceuta a los ingleses), bailaores y gandules, así como los hijos de la Pérfida Albión, verdaderos estereotipos del inglés seco, rigorista y formalista, pagado de sí mismo. Pero también predominan los nacionalismos rusos y franceses.

Vamos, todo un dechado de corrección política y social, plenamente educador para los adolescentes medioseculares y finiseculares del XIX. Casi nada.

June 22, 2007

SFF 128-01 (2007) - Analog Science Fiction and Fact, Enero 2007

EDITORIAL: THE CHEESESTEAK NAZI, THE COLONEL, AND THE FOOD POLICE by Stanley Schmidt: Comienza hablando sobre un cartel aparecido en una tienda que dice que sólo se atenderá en inglés, la posible incorrección política de esto, junto a que si emigramos lo justo es que aprendamos el idioma del país de destino, para luego pasar a contar los problemas sobre la obesidad en los niños norteamericanos, los eufemismos empleados en llamar a dichos niños por su nombre porque también resulta un tema políticamente incorrecto, y finalizando con el problema actual del sistema médico en relación a la liberta de tener la salud que uno quiera, pero que afecta a los demás a través de dicho sistema, colapsando lo que si cada uno de nosotros nos cuidáramos más no debería colapsarse.

Emerald River, Pearl Sky by Rajnar Vajra: Lo que aparentemente comienza siendo un cuento de fantasía vemos que se va convirtiendo en un relato en el que la expresión "una ciencia lo suficientemente avanzada puede ser indistinguible de la magia" se revela con toda su fuerza. Unos supuestos magos que se reúnen en una ciudad para un concurso se convierten en unos humanos que han perdido su tecnología y que sólo pueden aprovechar sus restos. Es muy bueno porque al principio no sabes si se trata de una narración de fantasía que se ha colado sin darse cuenta en una revista de ciencia ficción dura… y también difícil de leer.

SCIENCE FACT: Shielding a Polar Lunar Base by Franklin Cocks: Campos de fuerza para repeler partículas, bases lunares en su polo sur, anillos de superconductores, o cómo podríamos montar un asentamiento en la luna protegido de las radiaciones externas con poco gasto energético.

THE FACE OF HATE by STEPHEN L. BURNS: Unos extraterrestres han llegado y se han ido, decidiendo estrellarse de nuevo con su nave antes que convivir con los desagradables humanos, un fotógrafo y la entrevista realizada varios años después a una mujer a la que inmortalizó en una expresión de odio hacia los extraterrestres. Qué lo motivó, etc.

RADICAL ACCEPTANCE by David W. Goldman: Una representación de todas las civilizaciones del universo se encuentra en la Tierra para estudiar la viabilidad de los humanos como raza candidata a la comunidad intergaláctica. Pero hay un problema: hemos ascendido sin ayuda de ninguna otra civilización hasta logros increíbles… para ser meramente unos monos apenas evolucionados. Por ello nuestras tareas serán, en primer lugar, reconocer ese hecho, y en segundo olvidarnos, no de los dioses, sino de los ángeles: nosotros somos buenos ya de por sí.

THE ALTERNATE VIEW: IMAGINATION Jeffery D. Kooistra: Una paja mental sobre la imaginación y la forma de utilizarla, mezclado con el terrorismo internacional y la venta de cacharros inútiles en los garajes…

Super Gyro by Grey Rollins: Un adolescente que trabaja en un establecimiento de comida rápida se ve envuelto en un atraco. Estamos en un futuro cercano en el que el paro presenta unas tasas alarmantemente altas, el genoma ha sido completamente descodificado y existen personas con características especiales. Cuando los atracadores matan a varios clientes, el chico decide actuar, se hace con los malos pero le disparan, aunque sin causar muchos daños. Al final consigue su propósito: ser famoso –aunque por poco tiempo- y hacerse con su encargada de la que está enamorado. Mainstream puro y duro.

Exposure Therapy by R. Emrys Gordon: Los estudios de la protagonista son lo más cercano a la xenopsicología que se pueden conseguir en la actualidad. Por ello la chica es llamada… para conversar con extraterrestres a través de un ansible que los propios extraterrestres han especificado ya que el proyecto SETI ha tenido éxito. Pero la forma de los "hombres verdes" es la de una serpiente… y ella siente pánico…

Special Feature: How To Write Something You Don’t Know Anything About by Richard A. Lovett: La siempre difícil tarea de escribir sobre algo que no se conoce, es decir, escribir ciencia-ficción. Una serie de reglas bien estudiadas para salir exitoso.

The Taste of Miracles by Kristine Kathryn Rusch: En una nave espacial un astronauta se imagina que está delante de una chica y que ésta le comenta las navidades en los tiempos heroicos del inicio de la astronáutica y no ahora, en el que el propio prota dirige un carguero entre Marte y la Tierra.

The Unrung Bells of the Marie Celeste by Richard A. Lovett: Este relato me suena mucho a otro muy similar de Asimov sobre el viaje hiperlumínico o FTL y el principio antrópico. En este caso el amigo se ve envuelto en poder decidir todos los pasos de su vida, pero decide acabar el viaje. Es el primero que se ve que decide eso, porque los demás que probaron antes que él han desaparecido sin dejar rastro.

If Only We Knew by Jerry Oltion: Otro cuento chorra. En este caso se trata de un tío que tiene una configuración interna muy extraña, como seis cámaras en el corazón. El tío se piensa que es un extraterrestre o que ha sido abducido, aunque al final se conforma y decide tener los hijos que en un principio se había negado a tener con su esposa.

Science Fact: After Gas: Are We Ready for the End of Oil? by Richard A. Lovett: ¿Cuánto petróleo queda? ¿Cuándo se acabará? Eso intenta responder el autor en este artículo, basándose en documentos de acá y de allá, así como una previsión de qué podrían ser sus sustitutos.

Double Helix, Downward Gyre by Carl Frederick: Si creo haberlo leído bien, es una chorrada de relato. Los EEUU han modificado su constitución para que la gente que tenga defectos de ADN sea "podada"; un padre descubre sus defectos, y la bofia va detrás de él y su hijo, pero este decide huir a Nueva Zelanda donde no existen esas reglas. Más Tío Sam fundamentalista.

NUMEROUS CITATIONS by E. Mark Mitchell: Quizás el único que valga la pena (junto con el final de Rollback) de toda la revista. Genial. Un POMM de relato largo. Alguien debería traducirlo, porque vale la pena. Un senador decide aprobar la inserción de implantes en los presos con condicional para que monitoricen y regulen sus actividades, no por el hecho de la mejora de las personas, sino para hacer dinero. El asunto va bien hasta que los implantes –conectados en red, con acceso a muchos datos-, deciden hacer intervenir a sus alojadores para salvaguardar la ley y el orden… pero resulta que no son corruptibles y empiezan a dar caña y a destapar más y más embrollos, lo que hace que el senador cambie de opinión, y los poderes fácticos deciden apagar la red y acabar con los implantes. Pero no lo consiguen y al final dichos implantes toman consciencia de sí mismos y deciden tomar el control para salvaguardar a la humanidad (es el caso de robot-bueno-se-revela). Muy recomendable.

ROLLBACK (Conclusion) by Robert J. Sawyer: Finaliza la novela, Sara consigue descifrar el mensaje (la clave era su propia encuesta, que cambió en último momento y la almacenada no era la que se envió). Sara permite que la amante de Donald viva con ellos, ya que ella no puede seguir el ritmo. Finalmente crían a los dos draconianos y terminan llevándolos de acá para allá como dos hijos más.

June 20, 2007

Valerio Manfredi: El Faraón del Desierto

Filed under: Lecturas, Historia

¿Qué pasaría si un arqueólogo se encontrara un yacimiento que invalidase las tres religiones occidentales, es decir, el cristianismo, el judaísmo y el islam? Pues eso le ocurre a William Blake. Como se puede observar, no es más que otra novela más de misterios sin resolver tan de moda ahora. La novela es entretenida, interesante, de un ritmo trepidante pero con varios serios problemas argumentales (independientemente de la seriedad y posibilidad de lo que se narra).

Independientemente de la incredulidad ante ciertas acciones de los personajes, al final nadie es quien nos pensamos que es; el problema es que este aspecto está muy mal llevado por parte del autor, con evidentes fallos argumentales y de trama.

Abundan los elementos confusos, se producen ciertos saltos argumentales bastante mal tratados, y la personalidad de los personajes es muy irregular, carente de continuidad psicológica.

El tema sobre ocultar el misterio hasta que el autor quiere revelarlo está bastante mal llevado, sobre todo cuando el que lo sabe desde casi un principio es quien más enrolla las cosas, pero no por su culpa, sino por la del autor, que cruza el comportamiento y los motivos de los dos protagonistas…

En fin, entretenida de leer, trepidante pero muy mal fundada (todo eso sin tener en cuenta los hechos argumentales, es decir, la calidad y categoría del misterio místico/mesiánico/religioso), que a fin de cuentas tiene su cosa, aunque al final se estropee con la vuelta de tuerca final.

June 18, 2007

J. R. R. Tolkien: Los Hijos de Húrin

Filed under: Lecturas

Gentes más sabias ya han dicho todo lo que hay sobre el libro aquí, aquí, y otra vez aquí. Comentar que no es más que una novelita de fantasía épica (sobre todo épica) orientada en el mundo del Señor de los Anillos pero que carece de todos los puntos a favor e interesantes de ésta última. Mucha espada y poco seso.

Eso sí, las láminas y las imágenes son muy bonitas… pero con un aire de estar sacadas de la película del Señor de los Anillos que tumba, a no ser, claro, que los aspectos visuales de la película estuvieran basados en dichas láminas.

June 17, 2007

Charles Dickens: ¡Cazado!

Cuentecillo más bien insulso pero que destaca porque una editorial americana le pagó por él lo mismo que en Inglaterra se pagaba por una novela completa.

Asistimos a un intento de engañar a una compañía de seguros por parte de un cliente y cómo esta es capaz de defenderse… Toda la trama tiene que ver mucho con las tan forzadas coincidencias de las que Dickens nos tiene tan habituados.

Get free blog up and running in minutes with Blogsome
Theme designed by Gary Rogers