Colossus

Ya hablé de Enigma y su poder para encriptar datos del ejército alemán. Pero los ingleses con Alan Turing a la cabeza se las ingeniaron para poder decodificar la clave de cada día usando bombas y a partir de ella poder desencriptar cualquier mensaje alemán. Pero en 1943 los Alemanes crearon una nueva máquina que utilizaba la cifra de Lorenz.

La cifra de Lorenz se utilizaba para codificar las comunicaciones entre Hitler y sus generales, era muy importante para los Ingleses poder conocer esta información. Pero la nueva codificación era mucho más complicada que la que usaban las máquinas Enigma corrientes y el diseño de las bombas inglesas no era el adecuado para poder descifrarla.

Pero Max Newman, un matemático que trabajaba con Alan Turing creó una nueva máquina capaz de adaptarse a diferentes problemas basándose en el concepto de máquina universal de Turing. Este fue posiblemente el primer ordenador programable de la historia. Su nombre era Colossus y constaba de 1.500 válvulas electrónicas y lo más importante de todo es que era programable. Con Colossus los aliados fueron capaces de descifrar todos los mensajes de los enemigos predeciendo los ataques alemanes, sabiendo las posiciones de las tropas, movimientos de submarinos etc. y de esta forma poder ganar la guerra con más rapidez y efectividad.

Colossus fue destruido después de la guerra, y a todo el mundo que lo conocía se le prohibió hablar de él. Incluso los papeles del diseño del primer ordenador de la historia se quemaron. Esto significó que en 1945 J. Prespert Eckert y John W. Mauchly, crearan el ENIAC con 18.000 válvulas considerándose el padre de todos los ordenadores. Estados Unidos tomaba una ventaja crucial en el mundo de la computación y la tecnología que se ha mantenido hasta la época presente.

Java y C#

La verdad es que no estoy en contra de ninguno de los dos lenguajes. Pero voy a criticar ciertas cosas de ambos. C# ha copiado inteligentemente muchos de los conceptos que se idearon con Java en cuanto a una programación orientada a clases elegante pero también es verdad que han introducido nuevas cosas para hacer más agradable el trabajo del programador. Una de las cosas que más me han tocado las narices de Java son los casts (supongo que otros compartiran este sentimiento y se habrán facilitado las cosas con Java 1.5). Me refiero a cosas como esta (El código funciona compilando con Java y C#, que casualidad 😉 :

   String cadena=”22″;
    int numero=Integer.parseInt(cadena);

¿Para qué usar un método estático? No sería mejor algo más intuitivo que lo siguiente:

   String cadena=”22″;
    int numero=cadena.toInt();

Supongo que en Java 1.5 esto ya estará solucionado de la forma que comento. ¿Pero no sería incluso mejor poder hacer esto?:

   String cadena=”22″;
    int numero=cadena;

Y que el compilador se encargue de hacer el cast automáticamente si es que se puede. Esto que comento es la eterna discusión entre los lenguajes que te permiten un control total tipo C, a lenguajes restrictivos como Java. Yo pienso que un lenguaje muy restrictivo crea programadores malos porque no saben realmente lo que están haciendo. Por otra parte si el compilador “se lo traga todo” sin avisar haciendo casts a lo bestia puede dar lugar a bugs difíciles de detectar. Lo ideal creo que es poder el escoger el nivel de restricción. ¿Qué pensais que es mejor, que el compilador haga lo que tu quieras (C,C++ …) o hacer lo que te mande el compilador (Java, C# …)?

Los puentes de Königsberg

Leyendo un post de Tirando Líneas me vino una duda que me resolvió Jacobo sin problemas. El tema me hizo recordar el problema de los puentes de Königsberg. Cuenta la leyenda que un ciudadano se propuso dar un paseo por todos los puentes del río Pregel sin pasar dos veces por el mismo. Los puentes tenían la siguiente disposición:

Durante años se fue extendiendo el rumor y la gente del pueblo se dedicaba a intentar dar un paseo sin cruzar dos veces por el mismo puente. Si intentáis hacer con papel y lápiz, equivale a dibujar una línea pasando por todos los puentes una sola vez. Nadie consiguió realizar tal proeza, y si no comprobadlo vosotros mismos 😉

Pero en 1736, el gran matemático suizo Leonard Euler publicó que era imposible dar tal paseo. Veamos como se puede demostrar matemáticamente. Podemos representar los puentes mediante lo que los matemáticos llaman Grafo. Veamos como se obtiene el grafo a partir de los puentes:

En el grafo las aristas representan los puentes y los vértices tierra firme. Si pensamos en como dibujar el grafo sin levantar el lápiz y sin pasar dos veces por la misma arista se ve que cada vez que “llegamos” a un vértice necesitamos una arista para “salir”, es decir, que si a un vértice llegan 2 aristas podremos entrar por una y salir por la otra. Pero si un vértice tiene 3 aristas llegaremos por una, saldremos por otra, pero la siguiente vez al llegar ya no tendremos salida.

  • Concluimos que todo los vértices del grafo deben de tener grado (Numero de aristas que inciden en el vértice) par para poderse dibujar sin levantar el lápiz empezando y terminando en el mismo punto.
  • En el caso de haber dos vértices con grado impar también se puede solucionar el problema pero empezando y terminando en diferentes puntos.

El grafo de los puentes de Königsberg tiene los vértices A,C y D con grado impar, por lo que es imposible dar un paseo si pasar dos veces por el mismo puente.

Dibujad vuestros propios grafos con vértices de grado par y vértices de grado impar para hacer las pruebas. Un ejemplo típico y cotidiano es el de la casita con la cruz dentro en la cual todos los vértices tienen grado par. También podéis resolver fácilmente usando grafos el problema de Tio Petrus que acabo de encontrar. Ya es casualidad que hablemos de lo mismo 🙂

Wonderful Days

    

Incréibles los gráficos de esta superproducción Koreana. Una película de una belleza apabullante, por las imágen, la música y los personajes. Que habría sido perfecta teniendo un guión un poco más original. Utiliza la típica formula de mundo post-apocalíptico contaminado y una historia que no aporta nada nuevo. En todo caso muy recomendable solo para ver como Disney, Pixar y compañía están a años luz de la animación asiática. Otra película Koreana con unos gráficos mucho más humildes pero con un guión bueno es Oseam

Gaim en dispositivos móviles


Mariano me ha pasado un link al proyecto sourceforge para poder usar Gaim en PDAs. Seguramente en el futuro estaremos siempre disponibles a través de un sistema de mensajeria instantánea. Cuando estemos en casa se conectará con el Gaim del ordenador, cuando nos vayamos se hará un switch y estaremos disponibles a través del móvil o del PDA etc. Pero para que esto que acabo de comentar sea asequible aquí en España pasarán muchos años 🙁

¿Como es el fuego sin gravedad?


Navegando por internet me he encontrado con esa curiosa imagen de una vela ardiendo con gravedad prácticamente cero (pero dentro de una nave con oxígeno evidentemente). Los científicos prefieren hablar de microgravedad ya que en realidad algo de gravedad siempre hay en cualquier sitio. En esta web de la Nasa explican porqué adquiere esa forma la llama y el color tan azulado que tiene, el cual indica una temperatura baja.

Básicamente lo que pasa es que cuando hay gravedad todos sabemos que el aire caliente al ser menos denso tiende a subir. Al encenderse una llama se crea una corriente de aire a su alrededor que va de abajo hacia arriba transportando el aire caliente que ésta genera, dandóle a la llama la forma típica que todos conocemos. En cambio en ausencia de gravedad esta corriente no se genera porque el aire caliente ya no “pesa” más o menos que el resto del aire por lo que no se crea la corriente de convección, la llama tomará una forma esférica. Además con la corriente que se genera gracias a la gravedad conseguíamos que entrase contínuamente oxígeno renovado para seguir con la combustión, pero sin gravedad ya no hay corriente y por tanto no entra oxígeno nuevo; de ahí que la llama sea azulada y tenga menos temperatura.

Esto me hace pensar en muchas explosiones que he visto en películas. En ninguna he visto un efecto parecido a esto.