Archivo por meses: julio 2008

Cuenta cuentos

Sacado del blog de riva:

Os propongo una cosa. Vosotros dais ideas para relatos (una palabra, frase o concepto) y yo intento escribir un relato corto con lo que eso me inspire. Tan simple como eso. Nada demasiado estricto, es decir, si me dais todo el argumento ahí es cuando me bloqueo, pero si cosas a partir de las cuales se puedan sacar historias y distintas interpretaciones.
A cambio… el que quiera puede hacer su propia interpretación sobre las propuestas o, si lo quiere, hacer esto mismo en su blog.

300 entradas

Ya hace 3 años que empecé con el blog (bueno, 3 años un casi medio mes) y ya he alcanzado la cifra de 300 entradas. Esto es, 100 entradas anuales o casi una entrada cada 3 días… Sí, aunque llego a pasar periódos de casi 15 a 30 días sin escribir.

Lo mejor es que no es la anterior entrada la nº 300, sino que le he dejado el honor a la entrada que festeja ese mismo número, por la recursividad y tal :-P Así que esta entrada festeja que he escrito esta misma entrada y que en total he alcanzado las 300 (y me aproximo a la Termópilas).

Plantillas en C++

Recuerdo cuando empecé a aprender C++ que la cosa que menos entendía era el uso de plantillas. Debo reconocer que me ha costado mucho comprender como funciona porque era algo completamente diferente a lo que hasta entonces había visto.

Por otro lado, hemos visto en los últimos tiempos como gran cantidad de arquitecturas han copiado el modelo para implementarlo a su modo. Aquí es donde vemos los genéricos de Java y de .Net. El problema es que no tienen ni de cerca la misma potencia que el sistema de C++, pero que como ventaja consumen menos espacio de ejecutable.

Para entrar un poco en materia, comentar que las plantillas de C++ son como documentos en los que dejamos lineas en blanco y luego las rellenamos cuando ya sabemos qué queremos poner en ahí. Pero en C++ no ha líneas en blanco, estas tienen nombre.

La principal ventaja de este sistema es que permite programar clases genéricas, como pueda ser una clase lista que automáticamente se adapte al tipo que debe contener. La segunda ventaja es el rendimiento, por el mismo motivo anterior.

Para empezar a ver un poco como va la cosa vamos a ver un ejemplo sencillo de plantilla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template<typename T, int S>
class array
{
private:
   T *ptr;
 
public:
   array()
   {
      ptr = new T[S];
   }
 
   T& operator[](int idx)
   {
      return T[idx];
   }
 
   int size()
   {
      return S;
   }
};
//</typename>

Como vemos, hemos utilizado la palabra reservada template para indicar que se trata de una plantilla y luego, entre los símbolos < y > hemos introducido la lista de elementos de la plantilla. Estos elementos son los tipos y nombres de los valores a sustituir. En este caso son T de tipo typename y S de tipo int. Esto significa que cada vez que dentro de la clase aparezca T deberá sustituirse por su corresponditente valor pasado en la plantilla y que necesariamente deberá ser un tipo de dato (por ejemplo un int, una clase, etc.) y que cada vez que aparezca S deberá sustituirse por su valor que deberá ser un número entero. Para utilizar la plantilla sólo deberemos hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
int main(void)
{
   using namespace std;
 
   array<int , 5> a;
   cout < < "Tamaño del array: " << a.size() << endl;
   a[1] = 5;
 
   return 0;
}

Como vemos, lo único que hemos hecho ha sido añadir al nombre del la clase la lista de argumentos. En este caso concreto, deberá devolver que el tamaño es 5, que es el indicado en el parámetro de la plantilla.

Si nos fijamos en bibliotecas como STL o Boost, hacen un uso intensivo de las plantillas. El principal motivo es que C++ está optimizado para funcionar con plantillas, así que se prefieren al uso de mecanismos como la herencia. Además, la herencia hace que las llamadas a métodos sean más lentos, por lo que también se evita. Es en este momento cuando nos podemos preguntar el cómo hace C++ entonces para garantizar que se implementan ciertas funcionalidades. Por ejemplo, si queremos tener una lista ordenada, nos interesa que los elementos de la lista puedan compararse entre ellos con el operador <=. Pues la respuesta es sencilla: en la clase de plantilla simplemente utilizamos ese método y en tiempo de compilación se comprueba si está o no. Por ejemplo:

1
2
3
4
5
6
template<typename T>
T& mayor(T& a, T& b)
{
   return a >= b ? a : b;
}
//</typename>

Hemos creado una función mayor que devuelve el mayor de dos elementos de tipo T. Los elementos de tipo T deben sobrecargar el operador >= para que funcione. Como se ve, no es necesario hacer herencia de ningún tipo, el compilador detecta automáticamente si está o no sobrecargado y dará el correspondiente error en caso necesario (si miramos el caso de Java o de .Net veremos como sí es necesario hacer herencia para que el mecanismo de genéricos funcione de este modo).

Debo decir que el tema de las plantillas está muy bien y se puede hacer muchas cosas interesantes, como la clase array, que funciona igual que un array y que tiene un rendimiento muy parecido (benditos métodos inline de C++).

Otro día, seguiré hablando sobre plantillas, que dan para mucho.

Soledad

Grata compañía que nos reconforta
Triste destino de los aflijidos
Sordo grito que todo lo envuelve
La nada y el todo

Ya sé que es sencillo, pero así se me ha ocurrido el meme, poner una palabra y luego 4 frases, palabras, descripciones o lo que sea que os evoca la palabra. Más fácil no puede ser. Luego se lo mandáis a 4 personas y asunto concuído.

Yo de momento se lo mando a: Ghanima, Riva, La Reina del Hielo y a Graphen.

¿Crisis o la pescadilla que se muerde la cola?

Últimamente no se habla de otra cosa que no sea la crisis económica. Crisis que en España parece venida principalmente por el sector inmobiliario y por inercia de la crisis subprime de los Estados Unidos.

Personalmente creo que en España la crisis viene por dos motivos:

  • El evidente, la crisis del sector inmobiliario que ha arrastrado a muchas familias a una situación absolutamente precaria y que amenaza con dejar a una gran parte de ciudadanos en la calle y sin nada.
  • La otra razón que creo es un factor importante para la crisis es la sensación de crisis que invade a la gente.

Aunque mucha gente eche la culpa de lo primero a los constructores, el verdadero culpable ha sido el propio comprador. Si te parece caro, no compres y punto. Si la gente no compra el precio ha de bajar de todas todas, pero claro, como la vivienda es una gran inversión…

Por otro lado también ha sido culpable la banca, que ha bajado enormemente el listón para dar créditos y ha alargado enormemente los plazos de pago auspiciado por un Euribor bajo. Era sólo cuestión de tiempo que el precio del dinero subiese, es algo necesario y que si en España se hubiese hecho bien las cosas no nos hubiera afectado.

El segundo motivo esgrimido, la sensación de crisis, es el que me sirve para nombrar esta entrada como la pescadilla que se muerde la cola. Si la gente cree que hay una situación económica adversa, tenderá a hacer reservas de dinero y a comprar menos para evitar problemas. Pero esta solución no es totalmente buena porque esto supone que los empresarios empiezan a vender menos. Si el tío que te contrata gana menos dinero no va a ser el que se vaya a la calle, serás tú. Ahora bien, si los empresarios dejan de patitas en la calle a los que deben comprar los productos, evidentemente venderán menos…. Buffffffff, qué lío, eh?

No soy precisamente un genio, por lo que no sé muy bien qué soluciones dar para ambos problemas, sobre todo porque algunos tienen una dimesión internacional que los hace difíciles de manejar, pero sí se me ocurren cosas que serían beneficiosas para solucionar el segundo supuesto:

  • Es necesario potenciar el mercado interno. Uno de los mayores problemas de los españoles es que parece que les de tirria los productos de la propia casa, relegandolos a segundo plano; esto debe cambiar. Hay muy buenos productos de empresas españolas y deberían colocarse en las mejores posiciones en los supermercados. Además, así se incrementaría el capital que se queda en España, pudiéndose reinvertir en otras empresas.
  • Los empresarios deberían bajarse un poco los pantalones. Con el cambio de pesetas a euros, muchos empresarios optaron por incrementar los precios de forma completamente abusiva en beneficio completamente propio. En estos momentos deberían pensar en bajar sus márgenes de beneficios bajando los precios para reactivar el mercado y que empiece a haber nuevamente movimiento de capital.

Seguro que hay más cosas que se pueden hacer, pero personalmente creo que con esto se conseguiría mejorar sustancialmente la situación. Como no, esto es sólo la opinión de un informático, no la de un economista, así que es posible (por no decir seguro) que haya muchas cosa que no llegue a comprender y también se que el empresario Español es demasiado orgulloso (y ¿mal nacido?) como para tomar una solución lógica ante un problema que puede poner en riesgo su propio nivel de vida. Y es que todos piensan antes en el vivir de puta madre ahora en lugar del vivir bien durante toda mi vida…

En medio de la nada

Es curioso como muchas veces me soliradizo con Sinji Ikari, personaje de Neon Genesis Evangelion. En esta serie de dibujos proveniente del país del sol naciente hay muchas escenas que representan la psicología interior de algunos personajes. En ellas se puede ver al personaje sentado en una silla mientras habla o le hablan otros personajes de la serie. Estas escenas son muy criticadas aquí ya que las vemos con poco o nulo sentido y rompen completamente la línea argumental de lo que previsiblemente iba a ser una serie de acción.

El caso es que muchas veces me siento parecido a Sinji, encerrado en mi mismo dándole vueltas a las cosas, perdiendo el sueño tratando de resolverlas o entenderlas preocupándome en demasía por cuestiones insignificantes y teniendo grandes monólogos internos sobre infinidad de temas. Es más, incluso en los monólogos llego a adoptar distintos roles que actúa de diferente modo como si dentro de mi no habitase únicamente una personas sino multitud de ellas.

En la mayoría de casos es hasta un buen ejercicio, puedo ver distintas situaciones sociales y trato de ver los mecanismos para resolverlas, aunque luego nunca me toca aplicarlos. Otras veces lo utilizo como sistema para tratar de saber cómo piensa otra persona, para tratar de conocerla mejor sin tener que encontrarme con ella.

Vamos es otra pseudorareza de las mías. Digo pseudo porque supongo a muchos les pasará lo mismo, puede que de igual modo, sólo en parte o de una forma completamente diferente. Pero qué le vamos a hacer si somos así de raros los seres humanos (y los no tan humanos).

Batalla sin fin

Cruel nada devoradora que con todo lo que a su paso toca destruye, que quita las ilusiones, ciega las mentes y torna loco al cuerdo.

Lucho contra ti, batalla perdida desde el principio. Cada vez más graden, más fuerte, más negra embites con fuerza y sin tregua.

¿Qué será de mi cuando finalmente te tenga delante? ¿Acaso deberé deponer las armas? o acaso en un último esfuerzo deberé levantarlas de nuevo contra ti.

Cada vez tengo menos fuerzas, los aliados se pierden y hacen oídos sordos a las amenazas; es tan casado luchar para nada.

Lo único que en pie me mantiene es la esperanza de que todo puede cambiar, de que se puede vencer a la nada y poner fin a su expansión.

Unos lloran por lo que han perdido, otros por los que nunca tuvieron y unos pocos por lo que se perderá.

El Tour de la vergüenza

No sé como en España se sigue transmitiendo una prueba que persigue y expulsa a la más mínima a cualquier corredor español (y de otros mucho paises) si tiene la más mínima posibilidad de disputar el jersey amarillo.

Ya desde hace muchos años se viene persiguiendo a muchos corredores, principalmente porque parece ser el único modo que tienen desde la organización del evento de dar posibilidades a los corredores autóctonos de conseguir algo.

Un ejemplo es Valverde, que estos días está siendo sometido a constantes pruebas antidopaje; más concretamente se ve sometido a todas las pruebas todos los días. O como a Contador no se le ha permitido participar, no sea que… Pero como ellos, hay otros muchos corredores, no necesariamente españoles, que se encuentran en la misma situación.

Por otro lado, hay corredores a los que se favorece mucho. en mi opinión un caso claro ha sido el de Amstrong y todo su equipo (pero no voy a tratar más esto porque no hay pruebas concluyentes, aunque todo el mundo sabe que se dopaba mucho [y la organización se lo permitía por la enfermedad que pasó]).

Me pregunto que hará ahora el Tour de Francia que ha comprado a la Vuelta Ciclista a España, ¿también impedirá a nuestros corredores participar?

Día torcido

Y no digo malo porque realmente no ha sido malo, pero si que ha ido cambiando la planificación a causa de que parece nada funciona. En la beca, la aplicación parece que toma vida propia cuando la pongo en modo depuración (–enable-log), que se supone debería decirme todo lo que hace y de repente, las variables no toman sus valores, se producen fallos de memoria absurdos, etc. Y eso que necesito probarla intensivamente para encontrar un posible fallo que tiene.

Igualmente tenía planes para estudiar nuevas cosillas junto con otra cosa (de informática, no penséis ¿mal?) y luego para ir a ver a unos amigos a Madrid… ¡También se suspende!

La bueno de todo lo anterior es que podré ver a la reina del hielo, riva, mory, raven y compañía.