marzo 11, 2010
Descarga el programa: apod.zip.
APOD (de Astronomic Picture of the Day: Foto Astronómica del Día) es una popular web de la NASA que publica y comenta una fotografía diferente cada día de temática astronómica o científica. El programa Python que incluyo a continuación descarga automáticamente la foto de APOD y la instala como fondo de escritorio (si usas GNOME, claro).
(más…)
Filed under:
Linux, Python by rodrigo
marzo 9, 2010
Allá por el año 1999 se publicaba el nuevo y flamante estándar de C, C99. Una de las muchas de novedades que incluye es la de macros variadic, es decir, con un número variable de argumentos. Sin embargo, siendo programador de C++ me resisto a utilizar macros para cualquier cosas que pueda resolverse con funciones inline y con templates. Esto me deja en una situación de desventaja, pues la única manera que que una función en C++ reciba un número variable de argumentos es con (…) y (como la función printf(const char *, …)), pero es una técnica incómoda y totalmente insegura, no es el estilo de C++.
¡Hasta ahora! Porque C++0x ha conseguido lo que parecía imposible: templates variadic, es decir templates con número variable de argumentos.
(más…)
Filed under:
C++0x by rodrigo
marzo 2, 2010
El otro día veíamos la deducción automática de tipos usando auto, con la que el tipo de una variable se deduce de la expresión con la que se inicializa. Para todos los demás casos, desde hace ya varios años, muchos compiladores proporcionan alguna forma de deducción de tipos, normalmente algo parecido a __typeof. El comité de C++ consideró seriamente incluirlo en estándar, pero finalmente lo descartaron en favor de una idea nueva: decltype.
(más…)
Filed under:
C++0x by rodrigo
febrero 25, 2010
La palabra reservada auto es casi con toda seguridad la más inútil de todo el lenguaje C (seguida de lejos por register. Tanto es así que mucha gente ni siquiera sabe que existe porque no la ha visto nunca. Una variable local se declara auto para hacerla automática, es decir que se crea en el punto de declaración y se destruye al salir del bloque declarado. Pero una variable local ya es automática por defecto, a no ser que se defina static o extern, por lo que auto no se usa nunca.
La nueva versión de C++, C++0x, le da un significado nuevo y totalmente diferente a esta palabra reservada, implementando una de las características más deseadas por los ususarios del lenguaje: la deducción automática de tipos.
(más…)
Filed under:
C++0x by rodrigo
febrero 23, 2010
La regla de los cuatro miembros no se refiere a alguna misteriosa deidad tántrica, sino al hecho de que en C++ , una clase o estructura sin ninguna función miembro declarada expresamente posee cuatro funciones miembro implícitas: el constructor por defecto, el constructor de copia, el operador de asignación y el destructor. Esto es así para mantener la compatibilidad con C
(más…)
Filed under:
C++, C++0x by rodrigo
febrero 21, 2010
Una de las críticas habituales de C++ está relacionada con las enumeraciones y se debe principalmente a la herencia de C. Para resolver estas cuestiones, en C++0x se añaden varias nuevas formas de definir enumeraciones. Estos cambios pueden no parecer especialmente significativos, sobre todo comparándolos con otros, pero en mi opinión es importante conocer la nueva sintaxis, aunque solo sea para entender la documentación en la que aparecen.
(más…)
Filed under:
C++0x by rodrigo
febrero 20, 2010
El otro día estaba haciendo un Sudoku con lápiz y papel, cuando se me ocurrió pensar: “Si fuera un ordenador terminaría esto en un momento”. Y después: “Pero si para eso se inventó el Python”. En el improbable caso de que no sepas cómo funciona un Sudoku puedes leer una explicación estupenda en la Wikipedia.
(más…)
Filed under:
Python by rodrigo
febrero 19, 2010
Si alguna vez has utilizado (o intentado utilizar) la clase std::auto_ptr probablemente habrás notado que es una clase rara. Pero ya no hay que preocuparse por ella porque en C++0x ha sido marcada oficialmente como obsoleta. La funcionalidad que aportaba (o lo intentaba) esta clase la proporciona con ventaja la nueva std::unique_ptr.
(más…)
Filed under:
C++0x by rodrigo
febrero 18, 2010
En el post anterior describía cómo las referencias a R-valor permiten definir un constructor de movimiento y un operador de movimiento. Una clase que implementa ambos se llama clase movible.
(más…)
Filed under:
C++0x by rodrigo
febrero 15, 2010
En un post anterior comentaba que en C++ no se puede vincular una referencia a un objeto temporal. En C++0x existe un nuevo tipo de referencias diseñadas para hacer precisamente esto: las referencias a R-valor. Este cambio, aparentemente sutil, es uno de los más importantes del nuevo estándar, y que condiciona muchos de los añadidos adicionales. Por eso es importante comprenderlas bien.
(más…)
Filed under:
C++0x by rodrigo