Archivos Personajes: Enero 2008

Carlos ChaTo Castillo nos cuenta:

Una vez cada pocos meses, Yahoo! tiene un "Hack Day", un día en que cualquier equipo de Yahoo!s puede enviar un "hack" un programa simple que use tecnologías o datos de Yahoo! a una competencia mundial o regional." PhotoSoup fue la propuesta de nuestro equipo de Barcelona el año pasado para el European Hack Day, y ganamos el premio al "coolest hack" ;-)

SOPA_LETRAS.jpg

Carlos es chileno, estudió en la escuela de ingeniería de la U. de Chile (¿donde más?) y actualmente está trabajando en yahoo Barcelona. Seguramente lo recordarán por su sitio tejedores de la web, y es socio fundador y director de tecnología en Newtemberg.

Felicitaciones a Carlos, y lo genial es que PhotoSoup un juego que puedes incorporar a tus propias páginas, a través de la opción embed, acá les dejo un ejemplo que me armé para este sitio ( también pueden hacer click en la imagen que acompaña este artículo).

El juego está disponible como beta, y se llama PhotoSoup, utiliza las APIs de Flickr, en el sitio del juego pueden crear sus propios puzles e incorporarlos en sus páginas.

Que lo disfruten.

Ajedrez

| | Comentarios (0) | TrackBacks (0)

Hoy falleció Bobby Fischer, personaje del ajedrez. Una figura interesante, con una vida que da para novela o una buena película.

1971-bobby-fischer.jpg

El ajedrez se ha convertido en un problema completamente solucionado desde el punto de vista computacional. En 1997 Deep Blue derrota a Kasparov y se demuestra que es posible construir una máquina que supera al mejor de los jugadores de este deporte.

La historia del ajedrez jugado por una máquina es de larga data, famosa es la historia del turco mecánico, una máquina con aspecto de turco que se dice derrotó incluso a Napoleón Bonaparte, en realidad no había ningún mecanismo, sino que en su interior era operada por el campeón austriaco de ajedrez Johann Allgaier.

turco

Lo interesante es que los grandes pioneros de la computación han participado, en algún momento de su carrera, en este desafío de construir una máquina capaz de jugar ajedrez tan bien como un humano.

Alan Turing, el verdadero padre de la computación, Claude Shanon, creador de la teoría de la información, John Von Neuman en primer diseñador del computador programable y del modelo de casi todos los computadores modernos, y Ken Thompson, el creador de UNIX. Todos ellos han jugado ajedrez a otro nivel, construyendo programas o máquinas que jugaban ajedrez.

Turing

turing.jpg Alan Turing, al final de la segunda guerra mundial diseñó las instrucciones para una máquina capaz de jugar ajedrez. Como no habían máquinas en ese tiempo que pudieran ejecutar las instrucciones que el escribió decidió actuar el mismo como una "CPU humana", cosa que le tomaba aproximadamente una hora y media por jugada. Esta "máquina de papel" de Turing fue probada y tenemos el registro de una de sus partidas, en que la máquina de papel de Turing pierde ante uno de sus colegas:

Partida de Ajedrez entre la máquina de papel de Turing's versun Alick Glennie, en Manchester 1952:

1.e4 e5 2.Nc3 Nf6 3.d4 Bb4 4.Nf3 d6 5.Bd2 Nc6 6.d5 Nd4 7.h4 Bg4 8.a4 Nxf3+ 9.gxf3 Bh5 10.Bb5+ c6 11.dxc6 0-0 12.cxb7 Rb8 13.Ba6 Qa5 14.Qe2 Nd7 15.Rg1 Nc5 16.Rg5 Bg6 17.Bb5 Nxb7 18.0-0-0 Nc5 19.Bc6 Rfc8 20.Bd5 Bxc3 21.Bxc3 Qxa4 22.Kd2? [22.h5 podría haber tomado al alfil] 22...Ne6 23.Rg4 Nd4? [23...Rxb2! 24.Bxb2 Rxc2+] 24.Qd3 Nb5 25.Bb3 Qa6 26.Bc4 Bh5 27.Rg3 Qa4 28.Bxb5 Qxb5 29.Qxd6 Rd8 0-1.

Shanon

225px-Shannon.jpg Claude Shannon, creador de la teoría de la información, analizó el problema en 1950 y consideró dos tipos de estrategias, una de fuerza bruta (Tipo A) y otra más selectiva (Tipo B). Y aunque Shanon consideró que los algoritmos de Tipo B son más eficientes, porque consumen menos recursos y toman menos tiempo. Sin embargo los mejores programas de ajedrez son del Tipo A, porque en la práctica el problema de seleccionar las jugada más plausibles en un momento dado es un problema muy complicado, y los adelantos en el hardware han permitido superar algunas de las objeciones en cuanto al tiempo de ejecución que planteó Shannon en su estudio.

John von Neumann

Durante el desarrollo de la bomba atómica uno de los problemas complicados eran los cálculos de la forma correcta que deberían tener las cargas de implosión que gatilan la reacción en cadena. La contrucción de un computador que hiciera estos cálculos fue encomendada a John von Neumman.

200px-JohnvonNeumann-LosAlamos.jpg En 1950 el trabajo de von Neumann se reflejó en una gigantesca máquina llamada MANIAC I. Compuesta por miles de tubos de vacío y relés era capaz de ejecutar 10.000 instrucciones por segundo y además era programable (recordemos que el modelo de von Neumann es el estandar en casi todos los computadores modernos).

En vez de empezar a trabajar de inmediato en las bombas atómicas los científicos decidieron darle un uso más interesante a esta máquina, y lo primero que hicieron fue escribir un programa que jugaba ajedrez. Claro que una clase especial de ajedrez, donde el tablero tenía 6×6 casillas, sin alfiles. COn estas restricciones el programa era capaz de analizar jugadas hasta 4 niveles de profundidad y se tomaba unos 12 minutos en esta tarea (si se hubieran incluido los alfiles la tarea habría tomado tres horas).

maniac.jpg

Se hicieron 3 juegos a mediados de los 50 con este programa, el primero jugando contra si mismo, en que ganaron las blancas, el segundo contra un jugador experto, que tomó 10 horas para finalmente perder, y el tercero contra una joven voluntaria (que había aprendido a jugar una semana antes), en este caso el humano perdió en menos de media hora, y también tenemos registro de esa partida (recuerden que es un tablero de 6×6 y no hay alfiles):

MANIAC 1 - Human, Los Alamos 1956: 1.d3 b4 2.Nf3 d4 3.b3 e4 4.Ne1 a4 5.bxa4? [5.Nd2 and 6.Nd2-c4+ Nbcxc4 7.b3xc4 con un buen juego] 5...Nxa4 6.Kd2? Nc3 7.Nxc3 bxc3+ 8.Kd1 f4 9.a3 Rb6 10.a4 Ra6 11.a5 Kd5 12.Qa3 Qb5 13.Qa2+ Ke5 14.Rb1 Rxa5 15.Rxb5 Rxa2 16.Rb1 [para pevenir 16...Ra1 mate!] 16...Ra5 17.f3 Ra4 18.fxe4 c4 19.Nf3+ Kd6 20.e5+ Kd5 21.exf6Q Nc5 22.Qf6xd4+ Kc6 23.Nf3-e5 mate.

Esta partida corresponde a la primera vez que una computadora derrota a un humano.

Ken Thompson

thomps.jpg El último pionero de la informática que participó en esta carrera de desarrollar una máquina capaz de derrotar al ser humano es Ken Thompson, quien junto a Dennis Ritchie crearon el sistema operativo UNIX.

A principios de los 80 Thpomson y algunos colegas en Bell Labs construyeron una máquina con un diseño específico para jugar ajedrez. De hecho fue la primera máquina en alcanzar el nivel de maestro en 1983.

Esta máquina, afectuosamente llamada Belle, costó unos 20.000 dolares y era capaz de analizar 180.000 posiciones por segundo (los super computadores de la época sólo eran capaces de hacer 5000 posiciones).

ken-joe.gif

Era tan poderosa que fue confiscada por el departamento de defensa norteamericano cuando el equipo trataba de llevarla a un torneo en la Unión Sovietica en 1982.

Belle fue la campeona imbatible en casi todos los torneos entre computadores entre 1980 y 1983, hasta que fue derrotado por la supercomputadora Cray XMP, que costaba mil veces más.

Fuentes:

LaTeX

| | Comentarios (6) | TrackBacks (0)

A mi me parece divertido que la gente reclame contra microsoft desde un PC con Windows XP, si linux les resuelve todos los problemas, ¿por qué no lo instalan?

Hay mucho de pose con respecto al tema del software libre, y también mucha ignorancia cuando se habla de tecnología.

Un ejemplo reciente de estos argumentos llenos de ignorancia es aquel que propone LaTeX como alternativa al formato OOXML.

Bien, como fan de Knuth, y también de Leslie Lamport (sobretodo por su trabajo en computación distribuida), me siento con un cierto deber de explicar uno poco de que se trata esto de LaTeX, y por qué no es una alternativa a OOXML, y de paso ver si se aprovechamos de aportar algo de "cultura" al debate.

latex2b.gif

Primero, LaTeX es un conjunto de macros, y scripts que simplifican la composición de textos usando un sistema más general llamado TeX, inventado por nuestro querido Donald Knuth.

TeX corresponde a las letras griegas Tau, epsilon y Chi, y corresponde a la raiz griega TeX, como en la palabra griega tekné, que es la raiz de la palabra tecnología.

Así que esto de TeX es más que un sistema de composición tipográfica, es una manifestación de la filosofía de Knuth, con respecto a la relación entre arte y tecnología.

Sucede que a fines de los 70, Donald Knuth estaba revisando el segundo volumen de su obra magna, The Art Of Computer Programming (coloquialmente conocidoc como TAOCP). Insatisfecho con el resultado de las pruebas tipográficas, Knuth, una persona con un profundo sentido estético meditó y llegó a la conclusión de que el art de la tipografía digital consiste en ordenar 1's y 0's (tinta y no tinta) en un patrón apropiado. Así que se dijo, "Como científico en computación realmente puedo identificar 0's y 1's, así que algo puedo hacer al respecto".

Knuth emprendió un trabajo que tomó unos diez años, en que recibió la ayuda de expertos en tipografía, como Hermann Zapf, el famoso diseñador tipográfico.

El resultado de esos años es el sistema conocido como TeX.

La intención de TeX "es permitir la creación de libros hermosos, especialemente libros que contienen mucha matemática" (de la introducción al Tex Book).

Una de las características interesantes de TeX es que su código fuente no sólo es libre, sino que está hermosamente escrito, puesto que fue escrito usando Web y Tangle, un lenguaje que permite componer código que es agradable de leer, usando una técnica conocida como Literate Programming.

Aparte de TeX, Knuth escribió MetaFONT, un sistema que permite especificar y crear fuentes en formato Bitmap.

metafont.gif

Knuth presentó los fundamentos de su trabajo a la AMS (American Math Society)

  • Este software debía ser usado directamente por los autores (y sus secretarias) que realmente son los que saben de qué están escribiendo.
  • Venía de uan fuente academica, y por lo tanto estaría disponible libremente, sin necesidad de pago monetario alguno (en ese tiempo no se preocuparon mucho sobre el tema del soporte).
  • El sistema terminaría estando disponible en cualquier sistema operativo y sería diseñado de modo que los archivos de entrada serían portable.
  • Además el sistema no sería WYSIWYG.

De hecho, ese es uno de los problemas que aún persisten con los sistemas WYSIWYG. Por ejemplo, pueden introducir una fórmula matemática en un documento word y ocurre que la mísma fórmula matemática se puede ver mal en otra parte del documento. Para que vamos a hablar de lo que pasa con Word en Windows, versus la versión en un Mac.

wysiwyg.png

Knuth en este proceso de creación concibe una de las mejores abstracciones que hay en un sistema computacional, se trata de los conceptos de Glue y Boxes, elementos centrales de la composición en TeX. Para programar eficientemente en TeX hay que dominar estos dos conceptos, que juntos permiten resolver muchos (si no todos) los problemas tipográficos que se presentan en la publicación profesional.

El trabajo de Knuth en TeX no sólo fue revolucionario, sino que probablemente estableció el mejor sistema de composición de textos que se haya logrado.

A principios de los 80, Leslie Lamport, tenía ambiciones similares a las de Knuth, escribir una mega obra, the Great American Concurrency Book, y como Lamport era usuario de TeX decidió escribir un conjunto de macros para poder escribir su libro.

Así nació LaTeX, un "sistema de preparación de documentos", como lo llamó su autor. El prefijo La es simplemente las inicial de su autor, LaTeX es literlamente el TeX de Lamport.

Por años usé LaTeX en mi trabajo, y me divertí programando mis propias macros alternativas a las escritas por Lamport. Y seguiría usándolo si tuviera que escribir documentos con frecuencia, pero en realidad este sistema es ideal para publicaciones científicas, de hecho muchos journals exigen que los trabajos que se envían deben ir en LaTeX.

Pero en la práctica usar Word basta para escribir cartas, o informes. Pero en el mundo académico es ampliamente usado, probablemente porque tienen mucho más tiempo libre ;)

Como sea, la idea de LaTeX es despreocuparse de cómo va a lucir un documento para enfocarnos más en el contenido. El formato lo pone LaTeX, a través de una serie de plantillas pre definidas.

Por ejemplo, si quiero escribir un artículo debo escribir lo siguiente:

\documentclass[12pt]{article}
\usepackage{lingmacros}
\usepackage{tree-dvips}
\begin{document}
Este es un documento
\end{document}

El formato de como se va a ver este documento no es importante para el usuario de LaTeX. Lo que garantiza el sistema es que va a salir siempre igual. Si uno no contaba con un buen monitor podía gastar bastante papel realizando pruebas (algo que tampoco parece preocuparle mucho a los univesitarios).

Aunque con TeX se puede formatear cualquier cosa, hacerlo es un trabajo arduo, al final estás "programando tu texto". Está muy bien en ciertos ambientes, como el académico, pero no es práctico para las empresas o el servicio público.

Sí, existen herramientas que permiten trabajar en forma visual con TeX o LaTex, pero no son muy flexibles y sus resultados tampoco son tran satisfactorios.

Pero hay que enteder que TeX permite componer la tipografía de un documento, está pensado para eso. No esta pensado para interoperar en ambientes de negocios.

Pongámoslo de esta manera, tu puedes crear un documento en TeX y el output, el resultado de aplicar TeX (o LaTeX) sobre tu documento es otro documento en otro formato, que puede ser Postscript, PDF, HTML, Word, u otro. ¡De hecho, se puede generar archivos ODF con LaTeX!

LaTeX es el lenguaje donde describes lo que quieres escribir, te preocupas más del contenido (si te preocupa la tipografía "bajas" a TeX).

ODF por otro lado es un formato que no sólo contiene el texto, sino que integra con multiples fuentes, agrega anexos binarios, como imágenes, sonido, y permite interoperar con otros sistemas.

ODF formatea el texto, al igual que LaTeX, pero es la capacidad de interoperar con otros sistemas lo que lo hace diferente, y le da su potencia (y utilidad).

Por ejemplo, uno puede insertar un fragmento de una planilla de cálculo dentro de una presentación, o una diapositiva dentro de un documento de texto, e incluso colocar un vínculo a una película, y todo eso interactúa en forma dinámica. Puedes presionar un botón y gatillar que el resultado de una fórmula en una planilla de cálculo cambie el texto completo de una carta.

Otro tema que para lo cual TeX tampoco fue pensado es la firma electrónica, de hecho, ¿puede alguien decirme qué es lo correcto: aplicar la firma electrónica al output final de un documento LaTeX o a la fuente? Este problema es bastante interesante en si mismo y daría para armar todo un estándar o un comite para evaluarlo.

Ese tipo de interoperabilidad es la que solucionan formatos propietarios como los de Microsoft Office, o formatos abiertos, como ODF.

LaTeX está pensado para preparar documentos, TeX está pensado para componer documentos con una bella tipografía.

ODF es algo distinto, es un formato para transportar información, integrar multiples sistemas y tecnologías multimediales, y facilitar la ofimática.

Además al ser ODF un documento XML uno puede realizar infinitas transformaciones adicionales, lo que permite automatizar miles de procesos.

No, LaTeX (y TeX) siendo sistemas extraordinariamente valiosos no son adecuados para las necesidades de la ofimática, y para el manejo documental. Así que es mejor no confundirse en estos temas.

Una última cosa, si necesitas ayuda con LaTeX, o con alguna macro para TeX o MetaFONT, bueno, no me preguntes, ya no me acuerdo.

En realidad el 10 de enero es la fecha de su cumpleaños.

Si ustedes no saben quién es D. Knuth es porque no son programadores. Pero si son profesionales de la computación, entonces no tienen excusa para no saber que es uno de los grandes.

He escrito bastante sobre Knuth en este blog, y lo mejor ha sido una clase en donde respondió toda clase de preguntas.

Desde acá va un homenaje al gran maestro, y nada mejor que esta caricatura que refleja lo importante que es Knuth en el folclore de los programadores:

Knuth Sensei

Sobre este archivo

Esta página es un archivo de las entradas en la categoría Personajes de Enero 2008.

Personajes: Diciembre 2007 es el archivo anterior.

Personajes: Febrero 2008 es el siguiente archivo.

Encontrará los contenidos recientes en la página principal. Consulte los archivos para ver todos los contenidos.

Technorati

Technorati search

» Blogs que enlazan aquí

Creative Commons License
Este weblog está licenciado bajo una Licencia Creative Commons.

BloGalaxia website stats
Google