Julio 28, 2010
A menudo se dice que C++ es un lenguaje complicado, y como ejemplo se cita la iteración sobre los elementos de un contenedor (una lista, por ejemplo): otros lenguajes tienen una sintaxis de tipo for-each, pero en C++ hay que hacer un bucle manual, con iteradores e incremento. Pero ¡ya no más! C++0x incluirá una nueva sintaxis de la sentencia for que será la envidia de los usuarios de otros lenguajes.
(más…)
Filed under:
C++0x por rodrigo
Junio 30, 2010
En una ocasión una conocida empresa de transportes me envió un paquete, según el cual yo vivo en una ciudad llamada CORUÐA, lo cual es absurdo, porque según los anuncios dirigidos de Internet ¡yo vivo en Coruña! (o en Coru�a, según versiones).

Por supuesto, esto también está mal. Estos son errores de codificación, y se deben a que el programador no tuvo en cuenta unas cuantas reglas básicas. En un tema previo ya escribí sobre codificaciones, ahora intentaré dar unos cuantos consejos básicos, para evitar al menos los errores más sangrantes.
(más…)
Filed under:
Programación por rodrigo
Junio 9, 2010
Todo programador que se enfrente habitualmente a cadenas de texto (es decir, todos excepto quizás los que se dedican al cálculo numérico) deberían conocer al menos los conceptos generales relativos a la codificación de caracteres. Desafortunadamente, esto no siempre es así, y en los cursos de formación, incluso avanzados, estos temas se ignoran sistemáticamente. En este artículo me propongo desentrañar los conceptos básicos. En otro posterior me centraré con más detalle en los problemas prácticos que estos plantean.
(más…)
Filed under:
Programación por rodrigo
Mayo 12, 2010
Una de las funcionalidades menos esperadas, pero en mi opinión más bienvenidas, del nuevo estándar de C++ son las funciones Lambda. Originalmente creadas para los lenguajes funcionales, cada vez encuentran más uso en los lenguajes habituales (reconozcámoslo, los lenguajes funcionales no se usan mucho), véanse los delegates en Java y C#, por ejemplo. La inclusión de este concepto en C++, aunque algo limitada en comparación con otros lenguajes de más alto nivel, ofrece muchas posibilidades interesantes.
(más…)
Filed under:
C++0x por rodrigo
Abril 8, 2010
Me he pasado varios artículos discutiendo las novedades de C++0x (que se iba a publicar en algún momento de la década pasada, paciencia…) pero me he dado cuenta de que mucha gente que programa en C++ hoy en día aprendieron hace ya muchos años, o utilizaron un libro antiguo, y no conocen muchas de las características del lenguaje que se incluyeron en el año 1998. Creo que es importante ponerse al día antes de que se publique la próxima versión, así que daré un repaso un tanto resumido a las principales diferencias entre C++ pre-estándar y el C++98 (si crees que me olvido alguna deja un mensaje y lo añado).
(más…)
Filed under:
C++ por rodrigo
Marzo 29, 2010
Descarga el fichero aquí.
Hace unos días, construyendo una versión de prueba del compilador GCC (4.5.0), me encuentro con que instala un misterioso fichero llamado libstdc++.so.6.0.14-gdb.py. GDB, ¡C++ y Python en el mismo fichero! Pero, ¿qué es esto y para qué sirve?
(más…)
Filed under:
C++, GNU, Linux, Python por rodrigo
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 por 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 por 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 por 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 por rodrigo