Tuesday, May 31, 2011

Microcomputadoras en un chip


Hace ya tiempo hablé de los microcontroladores Pic, cuyo fabricante es la empresa Microchip. Estos circuitos electrónicos son computadoras completas en un chip. Tienen  puertos de entrada/salida, unidad lógica aritmética, convertidores analógico digitales, etc. Tiene memoria para programar y aparte de tener una arquitectura RISC (Reduced Instructions Set Computing), hay compiladores de Pascal, C y Basic, para no tener que lidiar con el lenguaje de máquina o con el ensamblador de estas simpáticas microcomputadoras.

Los Pics vienen en diversas presentaciones y dependiendo del tipo de aplicación que se quiera, hay una familia de microcontroladores que pueden hacer la tarea encomendada. La versatilidad de estos circuitos es tal que muchos dispositivos que hay en las casas podrían estar controlados port estos chips, con programas específicos que hacen las tareas encomendadas. Es lo que se ha dado en llamar también embedded computing

Pues bien, con el tiempo he seguido aprendiendo del tema y hoy en día se me han ocurrido dos proyectos en donde un microcontrolador pic, con una serie de botones y pantallas de LCD para desplegar resultados, pueden convertirse en dispositivos útiles. Ya hablaré en otra ocasión de estos proyectos. Lo que aquí quiero hacer es mostrarles la última tarjeta de desarrollo que adquirí, la cual es francamente una maravilla.

Se trata del MPLAB Starter Kit for Pic18 MCUs, hecha por Microchip, que se consigue por menos de 1000 pesos y que contiene botones capacitivos (es decir, de uso táctil, con sólo tocar la placa del circuito se simula el presionar un botón), acelerómetro, lo cual permite saber si hay movimiento en los tres ejes, X, Y y Z. Un displasy OLED de color, de 1/4 de una tarjeta VGA. Un chip Pic de 44 pines (Pic18F46J50) con 64Kbytes de memoria Flash, con tecnología para ser usado con muy poca corriente. Tiene también una microtarjeta SD de 2 gigabytes para guardar datos y programas. El paquete viene con una versión reducida (lite) del compilador de C y el medio ambiente de desarrollo MPLAB IDE. Contiene tutoriales, código de demostración, debugger (depurador) integrado y cable USB. Por lo que trae me parece una ganga.

He aquí un video que explica lo que puede hacerse con este kit de desarrollo:



En algún otro mensaje hablaré de los desarrollos que tengo pensados con este kit. Por lo pronto, es un sistema que sin duda podrá ser muy útil en términos de aprendizaje. Seguiremos informando.

16 peones: Trigésima primera cápsula

Pero a todo esto... ¿Qué es el ajedrez?




Monday, May 30, 2011

Ya salió el peine


Yo sé que nadie es monedita de oro. Yo sé que habrá a quienes yo les caiga mal. Lo entiendo y lo asumo y por ello, cuando salen noticias de Santiago Creel o del actual Secretario de Salud, el Dr. Córdova Villalobos, me doy cuenta que no los tolero. Al primero porque es un imbécil en todos sentidos. Sus expresiones, sus ambiciones políticas de ser presidente de este país, su vergozoso actuar cuando fue Secretario de Gobernación en el sexenio de Fox, su frase del "sospechosismo", que es tan de gente idiota que además, el Sr. Creel siente que es una idea genial y hasta hace eco de dicha palabreja en su página. Al segundo, porque pienso que el haberlo nombrado Secretario de Salud le mostró las bondades del poder, el trato preferencial, el sentirse diferente a todos nosotros. Y por ello Córdova no falta a evento al que le inviten y sale casi todos los días que puede a decir alguna estupidez referente a la salud, porque supuestamente por ello es el Secretario encargado. He aquí unas cuantas notas relacionadas de los últimos días:

  • México alcanzará cobertura universal antes que EU, promete Córdova
  • Pide la Secretaría de Salud vigilar a ancianos por altas temperaturas
  • Producirá México en 2012 vacuna contra influenza: Córdova
  • Anuncia la Secretaría de Salud centro para las amenazas biológicas
Veamos sólo como ejemplo, alguna de estas notas:

El secretario de Salud, José Ángel Córdova Villalobos, elevó la alerta por las altas temperaturas que ocurren en la mayor parte del país, pues se estima que este será uno de los años con mayor incidencia de calor en la última década, por lo que pone en riesgo a los adultos mayores, y a la piel, entre otras afectaciones.

“La exposición prolongada al sol, el tener alguna otra enfermedad que provoque deshidratación, el sol acelera esta deshidratación y, entonces, los niños muy pequeños y los adultos mayores resisten muy poco estos cambios de temperatura.

“Ustedes se acuerdan de esta situación que ocurrió en Francia hace como ocho o diez años, de los adultos mayores que, con las temperaturas tan elevadas se deshidrataron en sus casas y fueron miles a los que encontraron muertos”, comentó el funcionario.

Por tal motivo, Córdova pidió a la población no exponerse de manera excesiva a los rayos solares, por ejemplo, en las playas.

¿Lo que dice es en serio? ¿se necesita ser Secretario de Salud para decir algo que es de una lógica por demás transparente? probablemente no, pero Córdova Villalobos, en su patética ambición política sabe que hay que salir en los medios, estar en la foto, mostrarse presente y por ende, es capaz de citar a conferencia de prensa, o aceptar cualquier invitación a la radio o a la TV para hablar de estas problemáticas porque él lo sabe: si se quiere estar políticamente, es inefable su presencia en los medios de información.

De hecho, véase la siguiente nota, publicada por Excélsior ayer:


Renunciará Córdova para candidatura 
del PAN en Guanajuato

El secretario de Salud buscará dejará la dependencia en septiembre para presentarse en los comicios de 2012
 
José Báez / corresponsal

CIUDAD DE MÉXICO, 29 de mayo.- El secretario de Salud, José Ángel Córdova Villalobos, confirmó que renunciará a la dependencia que encabeza en septiembre, para buscar la candidatura del PAN al gobierno de Guanajuato.

El funcionario fue presentado hoy como precandidato del PAN a la gubernatura de Guanajuato en los comicios del 2012.

La elección de Córdova se dio después de que el grupo denominado La Loma anunció de manera oficial que el secretario de Salud representará a este grupo en el proceso de elección del blanquiazul.

A las conferencias de prensa realizadas en distintos municipios de la entidad también acudieron el senador Luis Alberto Villareal García y el presidente municipal de León, Ricardo Sheffield Padilla, quienes junto con Córdova y Usabiaga integran el denominado grupo La Loma.


Pues salió el peine. Ya le gustó al doctor Córdova Villalobos las mieles de la gran política. Pero... ¿qué sabrá de ello si ha dedicado su vida a la medicina? ¿O a poco alguien que es médico ahora puede contender por un cargo de gobernador, que es en realidad un cargo de administrador de un estado de la República? ¿Qué promesas de campaña nos tendrá deparadas el buen doctor? ¿por qué en lugar de buscar este cargo público no se dedica a su profesión, porque no dudo que sea un buen médico? ¿Por qué esa ambición política? ¿es lindo el dinero público? ¿es bonito ser tratado por una sarta de lamebotas como si fuese usted, Dr. Córdova, un ser fuera de serie? Vamos, ¿qué le llama tanto de la política si usted es médico?

Por todo esto me cae mal Córdova Villalobos. Muy mal.

De mitos cotidianos

No hay día en que no me lleguen correos con peticiones por demás absurdas. Entre las últimas que he recibido han sido la de legalizar las drogas, con la intención de que se acabe esta "guerra" que el Gobierno de Calderón ha armado contra el narcotráfico. La suposición simplista de que esto terminará con el problema es por supuesto falsa. Además, si se van a legalizar las drogas, ¿cuáles de ellas? ¿la cocaína? ¿el crack? ¿la mariguana? ¿el LSD? ¿la heroína? porque permitir el consumo de algunas de estas sustancias, de forma legal, que se sabe bien, generan una gran dependencia a los consumidores, se puede convertir en un grave problema de salud pública. Además, se conoce que algunos drogadictos, en su necesidad física de droga, son capaces de los actos más viles y crueles con tal de conseguir recursos para su adicción. Así pues, esta idea puede desde luego ponerse en tela de juicio y analizarse, pero asumir de la manera más burda que legalizando el consumo de drogas esto acabará con esta problemática, pues es no entender nada.

También me llegan correos con propuestas de no hablar por teléfono celular por un día, para que los proveedores de la telefonía móvil se vean obligados a bajar sus precios. En este caso, a quien se le ocurren estas babosas propuestas no sabe nada de este mercado y su visión es tan tonta como simplista. Vale la pena, por ejemplo, leer el artículo de Javier Matuk, en donde habla de algunas medidas que usan las telefónicas, como el del promedio de tiempo aire usado por el usuario. De hecho, Javier futuriza pensando que el modelo de negocios de la telefonía móvil bien podría ser el de una cuota fija y así los usuarios podrían hablar -en principio- todo el tiempo que quisiesen por la misma cuota mensual. Sin embargo, probablemente a la larga estarían incluso pagando más. Las interesantes reflexiones de Matuk sobre este tema, aquí.

Ahora me llega otro correo de alguien que propone no consumir gasolina el día 30 de mayo, es decir, hoy, porque si nadie compra gasolina, el gobierno no recaudará unos 3 mil millones de pesos. y como todos sabemos que este gobierno es corrupto e ineficiente, pues los castigaremos. El mensaje en cuestíon indica que además, en 1997 una medida similar por parte de los consumidores de energéticos, hizo bajarlos en unas horas. Esto es una evidente mentira. En mis años de vida jamás, de verdad JAMÁS, han bajado los combustibles... y menos por una medida de esta naturaleza.

Pero en el fondo de nuevo, quien propone estas ideas no sabe nada de micro economía y no se informa tampoco. Existe un concepto de la economía, sacada de la física, en la que se habla de productos elásticos e inelásticos. La elasticidad se usa con frecuencia respecto de la relación precio-demanda y de la relación precio-oferta

Por ejemplo, el pan de harina de trigo es un producto típicamente inelástico en la cultura occidental, ya que es considerado un artículo de primera necesidad, de tal manera que, aunque el precio del mismo subiera drásticamente, la demanda no se modificaría en la misma medida (duplicar el precio de la barra de pan no provoca que la demanda baje a la mitad), mientras que bajar su precio no supondría un aumento de la demanda (que la barra de pan baje su precio a la mitad no provocará que consumamos el doble de pan).

En general, los bienes de consumo de primera necesidad tienen una demanda relativamente inelástica (E < 1). Los bienes de lujo tienen una demanda unitaria (E = 1).

Los productos relativamente inelasticos son aquellos básicos que se pueden sustituir (los alimentos), mientras que aquellos que, aún siendo necesarios, no pueden sustituirse por otros. Así, la insulina y sal yodada son perfectamente inelasticos. Son necesarios pero no pueden sustituirse por otros.

Las joyas, yates, perfumes y autos de marca son unitarios o elásticos. No son necesarios, pero mucha gente está dispuesta a pagar aunque esté por encima de sus posibilidades.

Los energéticos son relativamente inelásticos, pero en esta sociedad basada en el petróleo, éste se ha convertido literalmente en un producto inelástico, Si hoy me suben el precio de los energéticos, el consumo per cápita del mismo no bajará en promedio aunque hoy día 30 de mayo decida no comprar gasolina. A la larga o a la corta tendré que ir y cargar el tanque de mi coche. Por tanto, lo que no compré hoy lo tendré que comprar mañana. Así, la medida propuesta es invíable.

El punto aquí es que, de nuevo, vía Internet, la gente cree que al mandar estas propuestas "lógicas" tiene sentido y que si se siguen los precios entonces bajarán, la telefonía será gratuita casi casi y viviremos en un país genial, en donde el pueblo decide los precios porque en un acto por demás solidario, todos siguen las indicaciones de un correo de esta naturaleza.

En serio, o se es muy ingenuo o muy tonto para creerse estas cosas.

16 peones: Trigésima cápsula

Hoy hablaremos de la importancia de la psicología en ajedrez...



Sunday, May 29, 2011

Saturday, May 28, 2011

16 peones: vigésima octava entrega

Hoy es el turno de hablar del ajedrez inventado por Bobby: el Fischerandom...

 


Friday, May 27, 2011

El ingenio de Groucho Marx


Groucho Marx (2 de octubre de 1890 - 19 de agosto de 1977) fue un actor y humorista estadounidense, considerado por muchos (por ejemplo Woody Allen) como uno de los mejores humoristas de la historia. Aunque para algunos sus películas tienen un humor por demás simplón, sin duda los hermanos Marx, en especial Groucho, crearon una mística completa alrededor de ellos.

He aquí algunas frases de Groucho, las cuales hablan de su ácido ingenio, muy de mi gusto:
  • "¿A quién va usted a creer, a mí o a sus propios ojos?" Nota: Esta cita es popularmente atribuida a Groucho, pero en realidad la dijo Chico Marx disfrazado de Groucho en "Sopa de ganso."
  • "Bebo para hacer interesantes a las demás personas." Nota: Esta cita es también popularmente atribuida a Groucho, pero realmente él no solía beber alcohol, excepto los días en que se aprobó la Ley Seca.
  • "Claro que lo entiendo. Incluso un niño de cuatro años podría entenderlo. ¡Que me traigan un niño de cuatro años!."
  • "Conozco a centenares de maridos que volverían felices al hogar si no hubiera una esposa que les esperara. Quiten a las esposas del matrimonio y no habrá ningún divorcio."
  • "Cuando muera quiero que me incineren y que el diez por ciento de mis cenizas sean vertidas sobre mi representante."
  • "Debo confesar que nací a una edad muy temprana."
  • "Desde el momento en que cogí su libro me caí al suelo rodando de risa. Algún día espero leerlo."
  • "Detrás de un gran hombre hay una gran mujer. Detrás de ella está su esposa."
  • "Disculpen si les llamo caballeros, pero todavía no les conozco bien." Nota: Antes de comenzar un discurso.
  • "Durante mis años formativos en el colchón, me entregué a profundas cavilaciones sobre el problema del insomnio. Al comprender que pronto no quedarían ovejas que contar para todos, intento el experimento de contar porciones de oveja en lugar del animal entero."
  • "El matrimonio es la principal causa del divorcio."
  • "El matrimonio es una gran institución. Por supuesto, si te gusta vivir en una institución."
  • "El otro día me encontré con dos leones y los sometí... Los sometí a una serie de ruegos y llantos."
  • "El secreto del éxito se encuentra en la sinceridad y la honestidad. Si eres capaz de simular eso, lo tienes hecho."
  • "En las fiestas no te sientes jamás; puede sentarse a tu lado alguien que no te guste."
  • "Estos son mis principios. Si no le gustan tengo otros."
  • "Estuve tan ocupado escribiendo la crítica que nunca pude sentarme a leer el libro."
  • "Hace tiempo conviví casi dos años con una mujer hasta descubrir que sus gustos eran exactamente como los míos: los dos estábamos locos por las chicas."
  • "Hay muchas cosas en la vida más importantes que el dinero. ¡Pero cuestan tanto!"
  • "He disfrutado mucho con esta obra de teatro, especialmente en el descanso."
  • "He pasado la mejor noche de mi vida, pero no ha sido ésta." Otra versión: "He pasado una noche estupenda... pero no ha sido ésta."
  • "Hija, donde conociste a ese Daniel. ¿En un ascensor?¿Subia o Bajaba? Porque cuando un ascensor baja produce una sensacion en el estomago que puede confundirse con el amor."
  • "Hijo mío, la felicidad está hecha de pequeñas cosas: Un pequeño yate, una pequeña mansión, una pequeña fortuna."
  • "Hoy no tengo tiempo para almorzar. Tráigame directamente la cuenta." (Al camarero de un restaurante)
  • "Humor es posiblemente una palabra; la uso constantemente y estoy loco por ella. Algún día averiguaré su significado."
  • "Jamás aceptaría pertenecer a un club que admitiera como miembro a alguien como yo." Nota: Respuesta de Groucho, a cierto club al que había intentado apuntarse con su verdadero nombre, cuando después de negarse el club a admitirlo, trató de rectificar (el club, tras conocer la verdadera identidad del aspirante).
  • "La humanidad, partiendo de la nada y con su solo esfuerzo, ha llegado a alcanzar las más altas cotas de miseria."
  • "La inteligencia militar es una contradicción en sus términos."
  • "La justicia militar es a la justicia lo que la música militar es a la música."
  • "La política es el arte de buscar problemas, encontrarlos, hacer un diagnóstico falso y aplicar después los remedios equivocados."
  • "La próxima vez que lo vea, recuérdeme no saludarlo."
  • "La televisión ha hecho maravillas por mi cultura. En cuanto alguien enciende la televisión, voy a la biblioteca y me leo un buen libro."
  • "Lo malo del amor es que muchos lo confunden con la gastritis y, cuando se han curado de la indisposición, se encuentran con que se han casado."
  • "No estoy seguro de cómo me convertí en comediante o actor cómico. Tal vez no lo sea. En cualquier caso me he ganado la vida muy bien durante una serie de años haciéndome pasar por uno de ellos."
  • "No reírse de nada es de tontos, reírse de todo es de estúpidos."
  • "Nunca olvido una cara, pero con la suya voy a hacer una excepción."
  • "Nunca voy a ver películas donde el pecho del héroe es mayor que el de la heroína." **refiriéndose a una película de Victor Mature.
  • "O él ha muerto o se ha parado mi reloj."
  • "¿Pagar la cuenta? Qué costumbre tan absurda."
  • "Pienso que todo el mundo debería creer en algo. Yo creo que voy a seguir bebiendo."
  • "Si sigues cumpliendo años, acabarás muriéndote. Besos, Groucho."  Felicitación de Groucho a un amigo
  • "Siempre me casó un juez: debí haber exigido un jurado."
  • "Siempre salgo con dos mujeres. Detesto que las chicas vuelvan a casa solas."
  • "Sólo hay una forma de saber si un hombre es honesto: preguntárselo. Si responde sí, ya sabemos que es un corrupto."
  • "Soy tan viejo que recuerdo a Doris Day antes de que fuera virgen."
  • "Yo me he esforzado para llegar de la nada a la pobreza extrema."

Hay dos citas muy simpáticas, aunque parecen ser ambas falsas:

"Perdonen, señores, que no me levante".

Ampliamente citado como epitafio de Groucho, pero no es cierto que aparezca en su lápida (del Eden Memorial Park, San Fernando, California), en ella sólo se puede leer su nombre y la fecha de su nacimiento y defunción, así como la Estrella de David. Se dice que él habría pedido que escribieran ese epitafio en su lápida, después de su muerte, pero que su familia prefirió no hacerlo.

"-¿Por qué y cómo ha llegado usted a tener veinte hijos en su matrimonio? :-Amo a mi marido. :-A mí también me gusta mucho mi puro, pero de vez en cuando me lo saco de la boca."

Desmentida por el propio Marx en una entrevista para la revista 'Esquire'.

Fuente: WikiQuote

16 peones: Vigésimo séptima entrega

Hoy hablaremos del original gran maestro Aron Nimzowitsch.




Thursday, May 26, 2011

Lenguajes de programación y obsolescencia


Cuando uno entra al mundo de la computación, tarde o temprano a algunos se nos despierta la curiosidad de saber cómo es que se hacen estos programas que funcionan en nuestras máquinas. Y así, de pronto, ya estamos leyendo manuales de diversos lenguajes de programación, empezamos a ver y a imprimir el código fuente de otros para ver cómo hacen los demás las cosas, y en todo este proceso vamos aprendiendo y nos vamos convirtiendo, bien que mal, en programadores.

En mi caso, aprendí a programar primero en Applesoft Basic, una versión del lenguaje BASIC tradicional, diseñado para la Apple ][. De ahí hice algunos pininos en ensamblador del 6502 y más adelante, ya en la facultad de ciencias, incluso tomé un curso de máquinas digitales con laboratorio, con el estimable físico Javier Sierra, en donde programé en el ensamblador del microprocesador 6809, amén de cursos de programación de sistemas, bases de datos, estructuras de datos, cursos varios de programación, etc.

En este largo camino por el tiempo aprendí Turbo Pascal y encontré a grandes amigos, como Víctor Delgado, apasionado de este producto de Borland, con quienes compartimos código, ideas y compiladores por muchos años. Luego llegó Delphi, que vino a ser el equivalente a Turbo Pascal para Windows y nos enfrascamos en aprender cómo programar bajo la interfaz gráfica. Pude ver Delphi 1.0 en 1994, en la 5a Conferencia Anual de Borland para Desarrolladores y quedé francamente sorprendido por las posibilidades del sistema. Usé la versión 2, 3, 4, 5, 6, 7 y las rebautizadas como Delphi 2008 y 2009 (se puso de moda poner el año de creación como número de versión. Así vimos Windows 95, 98, Windows Millenium, etc). Para mí, la versión 7 fue la más estable, la mejor, comparada quizás solamente con la versión 5. Las versiones 4 y 6 por alguna razón nunca me terminaron de gustar y siempre me parecieron inestables.

Pero he aquí que hemos llegado al 2011 y el año pasado, si la memoria no me falla, Codegear, una empresa subsidiaria de Borland, vendió sus herramientas de desarrollo y programación a la empresa Embarcadero, quien es ahora la compañía que distribuye y sigue soportando el desarrollo de las nuevas versiones de Delphi. Desafortunadamente, veo con cierta tristeza que mi lenguaje de programación favorito ya no tiene el volumen de personas que se ocupan de él. Digamos que el interés por Delphi, con estos cambios de empresas una y otra vez, ha desilusionado a muchos y es claro que cada vez parece haber menos apoyo. Y es una lástima, porque Delphi ha demostrado ser una gran herramienta, basada en el original Pascal de Niklaus Wirth y supercargado con toda la programación orientada a objetos.

Un síntoma de que algo anda mal con Delphi es que las editoriales norteamericanas que se dedican a publicar libros de programación, hacen años que no sacan un nuevo libro sobre Delphi. Y eso suena parecido a lo que pasó con una de las mejores revistas de computación que hubo en el mercado, la revista Byte, que de ser un volumen de cientos y cientos de páginas, de pronto empezó a adelgazar espantosamente y terminó muriendo de inanición. Esto está pasándole a Delphi, me parece.

Me pasó algo parecido en Prolog, aunque aquí la historia es en realidad diferente. En los años ochenta salió Turbo Prolog, y considerando la potencia de las herramientas "turbo" de Borland, me hice de este compilador. Me fui a hacer una maestría a la Universidad de Essex para aprender a usar Prolog entre otras cosas y a mi regreso escribí mi primera aplicación completa en turbo Prolog, un corrector ortográfico híbrido (usa reglas ortográficas, diccionarios, bigramas, etc.), al que llamé Lapsus. Pero he aquí que Borland regresó a los creadores de Turbo Prolog su herramienta y la empresa danesa desarrolladora, sacó más adelante una versión para windows llamada Visual Prolog. De nuevo, aunque el lenguaje sigue siendo el mismo, el soporte a Prolog es discreto y quizás en muchos sentidos no es el mejor lenguaje de programación por muchas razones, aunque sus puntos fuertes son inimitables en cualquier otro lenguaje.


El punto es que uno toma decisiones en el pasado, por ejemplo, la que yo tomé, de programar en Turbo Pascal, aunque pude haber elegido otra plataforma de desarrollo, quizás C, quizás Java, quizás ¿Visual Basic? y creo que por muchos años disfruté de una de las herramientas mejor escritas en este mundillo de la programación. Pero creo que me estoy quedando obsoleto.

Y sí, aprendí un poquito de Java, de PHP, de C++, pero no los he usado ni con la frecuencia que debería y tampoco creo tener las últimas versiones de estos compiladores/intérpretes.

Así pues, si hay alguna moraleja en esta historia sería la de tomar el estudio de diversos lenguajes de programación al mismo tiempo, por ejemplo Java y C. De hecho, su sintaxis es parecida y eso haría la curva de aprendizaje mucho más rápida, amén de que con la experiencia de lenguajes anteriores, muchos conceptos se entienden mucho más rápido. No obstante esto, es claro que los lenguajes de programación parecen tener un ciclo como las personas: nacen, crecen y mueren (no se reproducen)...

En cualquiera de los casos, pienso que a pesar de todo, esto da oportunidad  a aprender nuevas herramientas, nuevos paradigmas y seguir aprendiendo, cosa que finalmente siempre me ha parecido uno de los más extraordinarios goces en el ser humano: el del descubrir cómo funcionan las cosas y cómo hacerlas mejor, así como entender conceptos que quizás hemos pasado por alto por mucho tiempo. Quizás entonces, no todo está perdido.

16 peones: vigésima sexta entrega

El diablo anda suelto...




______

(*) La imagen que ilustra esta cápsula es de Belle, la computadora que Ken Thompson construyó cuando trabajaba precisamente para los laboratorios Bell. El costo de esta máquina se estima en unos 20,000 dólares. Solamente podía jugar al ajedrez y era capaz de buscar 180,000 posiciones por segundo. Las supercomputadoras de su tiempo (los ochentas) podían calcular unas 5000 posiciones por segundo. Belle podía analizar 4.5 a 5 jugadas de produndidad, lo que corresponde a la fuerza de un maestro y de hecho, fue Belle la primera computadora en EEUU que se le otorgó el título de Maestro Nacional.

Wednesday, May 25, 2011

Maestros de la Facultad de Ciencias, UNAM


La doctora Elisa Viso Gurovich es una profesora de la Facultad de Ciencias de la UNAM. Licenciatura en matemáticas en 1977 por la propia UNAM, Maestría en Ciencias de la informática, en el 2005, por parte del Politécnico Nacional y Doctorado en Ciencias (computación), por la UNAM también, en el año 2007. La conozco desde que empecé mi carrera de física y como esto de la vocación toma muchas veces forma mientras se estudia, entendí que me agradaba mucho todo lo referente a la computación y por años mantuvimos muchas pláticas amén de cursos que ella daba. Igualmente su esposo, Mario Magidin, que desafortunadamente ya no das clases en la facultad, quizás por falta absoluta de tiempo, nos mostró esa fascinación que da el cómputo. Se decía que Mario podía "compilar" un programa en ALGOL en el pizarrón, es decir, el código que escribía en el pizarrón sin duda correría si lo tecléabamos en una terminal de alguna computadora con un compilador de ese lenguaje (muy parecido a Pascal a todo esto). Amén de ser grandes profesores Elisa y Mario, creo que siempre se portaron también como grandes amigos.

Hoy estando en mi escuela encontré un cartel en donde se anunciaba un libro de Elisa. Minutos después me encontré a la autora y me dijo que me daría un ejemplar, que ahora tengo en mi poder. De hecho son dos ejemplares, el libro de texto, publicado por "las prensas de ciencias", que hasta donde entiendo es una organización editorial de la propia facultad de ciencias de la UNAM, cuyo título es "Introducción a las Ciencias de la Computación con Java", y un segundo volumen, menos grueso, que es el "manual de prácticas", del primer volumen.

Aunque Elisa ha escrito otros libros, lo cual fue sorpresa para mí, éste que reseño aquí está escrito con el licenciado en ciencias de la computación Canek Peláez (2004).

El temario de la obra es este:

  1. Introducción.
  2. El proceso del software.
  3. Clases y objetos.
  4. Manejo de cadenas y expresiones.
  5. Datos estructurados.
  6. Herencia.
  7. Administración de la memoria durante ejecución.
  8. Ordenamientos usando estructuras de datos.
  9. Manejo de errores en ejecución.
  10. Entrada y salida.
  11. Hilos de ejecución. 
Esto es sin duda una introducción por demás completa y extensa al lenguaje Java de programación. Desde hace unos años el paradigma de los objetos hizo su aparición y su poder es tal que los autores de la obra enmarcan todo su texto bajo el fuerte influjo de la programación orientada a objetos (POO).

Viso y Peláez han decidido tocar muchos temas que quizás se salgan de cualquier curso introductorio a la programación en Java, empezando por las excepciones, el manejo de archivos y eventos. A diferencia de otros textos de esta naturaleza, el volumen gira siempre alrededor de un tema central: el manejo de una base de datos, en donde se ejemplifican conceptos importantes como extensibilidad, modularidad y reuso de los objetos.

El texto también contiene otros ejemplos que complementan la enseñanza de los tópicos más importantes, aunque estos no necesariamente sean de la POO.


Por su parte, el Manual de Prácticas, contiene un buen número de ejercicios para que el lector pueda aprender Java "ensuciándose las manos", es decir, practicando. Su índice va así:

  1. Ant y el compilador de Java
  2. Usar y modificar clases
  3. Variables, tipos y operadores
  4. Interfaces y clases por dentro
  5. Estructuras de control y listas
  6. Herencia
  7. Entrada/salida y arreglos
  8. Recursión
  9. Manejo de excepciones
  10. Interfaces gráficas
  11. Ant y archivos Jar
  12. *Hilos de ejecución y enchufes
Apéndice A: El resto de las leyes



He empezado a hojear la obra y francamente es un trabajo notable, bien escrito, cuidado, profundo, como caracteriza a Elisa (y supongo que a Canek también, que no lo conozco personalmente).  Estoy seguro que si se quiere aprender Java, es una buena idea hacerse de este libro. Enhorabuena y felicidades a los autores.

    16 peones: Vigésimo quinta cápsula

    Hoy daremos algunas recomendaciones para mejorar en ajedrez...




    Tuesday, May 24, 2011

    Recordando a los Beagle Bros


    Después de haber hablado de los tiempos de la Apple ][ y de la optimización que se hacía en esos tiempos del cómputo casero, Benito Estrada me comentó de los miniprogramas, los "two-liners" (programas escritos en dos líneas de Applesoft Basic), los cuales eran, sin duda, la excelencia en optimización. De hecho, sé que de vez en vez hay concursos en prácticamente todos los lenguajes para escribir en una cantidad limitada de bytes algún programa que haga algo de utilidad.

     Bert Kersey en la actualidad

    El asunto es que recordando a los Beagles Bros (sin punto, porque de acuerdo al fundador, "ya no había espacio suficiente para ponerlo"), esta empresa se especializó en software para Apple ][ y fue fundada en 1980 por Bert Kersey y se expandió con el tiempo hasta lograr tener un buen conjunto de programadores y diseñadores. En ese tiempo había muchas companías de software que buscaban introducir la microcomputadora en los pequeños negocios y así había Visicalc, que es el equivalente de ese tiempo de lo que hoy podría ser Excel, por ejemplo. Kersey sin embargo, buscó apoyar al aficionado, al que hacía programación por hobby, por diversión.

    Como resultado de esto, la línea de productos Beagle Bros consistía en software que ponía el poder creativo en las manos de los usuarios o expandían productos populares de otras compañías. Por ejemplo, Apple Mechanics permitía a los usuarios crear sus propias tablas de "shapes" (una forma temprana de lo que en otras máquinas ya se denominaban sprites), para crear juegos. DOS Boss, por ejemplo, permitía a los usuarios parchar el sistema operativo para cambiar los nombres de los comandos. Beagle Bag tenía juegos simples y sencillos escritos en BASIC de Apple. Los Beagle Bros además, mandaban con su software unos simpáticos carteles que contenían las direcciones de memoria importantes en la Apple ][, como el "Peeks, Pokes, & Pointers". La companía con el tiempo publicó un libro que se llamaba Big Tip Book, conteniendo todo género de consejos y ayudas para los aficionados a la Apple ][. Se publicó también el Tip Disk. Para esde entonces, a todo esto, muchas empresas protegían sus programas. Beagle Bros indicaba -con orgullo- que todo su software no estaba protegido contra copia, cosa que en realidad era una novedad en su época.

    Cuando la Apple IIgs fue preentada comercialmente, la primera compañía que sacó software para esta computadora fue Beagle Bros, con el Platinum Paint y BeagleWrite GS, los cuales se consideran dos de los mejores programas de esa plataforma.

    Tiempo después, Beagle Bros captó más adeptos cuando produjo programas agregados, utilerías pues, para el programa de Apple, AppleWorks. E primero fue un generado de macro instrucciones, llamado MacroWorks, escrito por Randy Brandt. Por su parte Alan Bird se dio cuenta que se podía crear un API para AppleWorks y se puso bajo una serie llamada TimeOut. Poco después, los programadores de TimeOut Alan Bird, Randy Brandt y Rob Renstrom se fueron a Claris, para desarrollar AppleWorks 3.0 y el propio API que ellos crearon se convirtió en parte de la versión 4.0 de AppleWorks (creado por Randy Brandt y Dan Verkade, y publicado por Quality Computers). Eventualmente el API de TimeOut se hizo público y nacieron muchas aplicaciones TimeOut que no venían directamente de los Beagle Bros.

    El fin de una era llegó en 1991, cuando el nuevo dueño de Beagle Bros, Mark Simonsen, licenció la línea de los Beagle Bros a Quality Computers. Esta empresa fue después vendida y hoy día desapareció todo lo que correspondía a los originales Beagle Bros. No obstante, mucho de sus "clásicos" se pusieron en el dominio público a mediados de los noventas, incluyendo sus primeros programas y juegos. La compañía en algún momento sacó un par de utilerías para Mac y PC, pero con poco éxito. De hecho, BeagleWorks para Mac, fue licenciado a WordPerfect en 1992 y se convirtió en WordPerfect Works. Este producto se descontinuó cuando WordPerfect fue adquirido por Novell.

    Muchos de los programadores de Beagle Bros continuaron involucrados en la industria del software. Por ejemplo Joe Holt, es uno de los autores del iMovie. Alan Bird ha trabajado para Eudora y fue el autor del programa OneClick para la Mac. Randy Brandt creó el Online Army Knife, un corrector ortográfico para Macintosh y siguió publicando utilerías para los productos AppleWorks a través de su empresa JEM Software. Mark Munz creó Deja ][, el cual permite correr AppleWorks bajo Mac OS X. El fundador de la compañía, Bert Kersey, empezó una empresa de trenes en miniatura poco después de haber vendido Beagle Bros, manteniendo el mismo estilo que le dio fama a su empresa de software. Ahora está retirado y vive en Fallbrook, California, con su esposa Sharon y un patio trasero lleno de búhos.

    Pero tal vez el aspecto más memorable de Beagle Bros era su diseño gráfico, como del siglo 19. Mientras que otros buscaban un estilo que mostrara que estaban en la modernidad, Beagle Bros cultivaba la nostalgia, manteniendo su misión de crear software para los poco experimentados, para quienes aman aprender y jugar.



    El humor permeó en los productos de Beagle Bros, incluso en las etiquetas de advertencia sobre cómo cuidar los discos de 5.25 pulgadas. A diferencia de otras advertencias sobre imanes, agua o altas temperaturas, que podrían dañar los diskettes, los iconos de advertencia de los Beagle Bros indicaban no usar los diskettes como papalotes, o doblarlos como aviones de papel o alimentar cocodrilos con ellos.

    Otro detalle eran los "two-liners", programas en dos líneas que en los anuncios de Beagle Bros aparecían. Cada coomunicación en los medios impresos, en los anuncios de su software, venían acompañados con programas de dos líneas. Al principio los escribio el propio Kersey pero más adelante incluso puso programas escritos por los propios aficionados.

    He aquí algunas imágenes de sus programas, sus carteles, etc. En mi opinión, Bert Kersey fue uno de los primeros que se dio cuenta de lo que ahora decidí llamar "programación lúdica". 




    16 peones: Vigésimo cuarta entrega

    Hoy es el momento de hablar de emociones fuertes... en ajedrez, obviamente.




    Monday, May 23, 2011

    La medida del desempeño en ajedrez

    El ajedrez tiene una virtud sobre muchas otras actividades lúdicas/deportivas, que es la posibilidad de medir el desempeño y actuación de quienes practican esta actividad. Así, tenemos la medida del rating, la cual nos indica la fuerza ajedrecística de un jugador en comparación con la de otros. Esto se basa en los cálculos de Arpad Elo, inventor del sistema de rating, el cual parte que entre dos jugadores, cuya diferencia en puntuación Elo es de 100 puntos, el de mayor rating hará estadísticamente más del 68% de los puntos. Lo simpático de esta afirmación es que se cumple para jugadores cuyos ratings son 1300 y 1400 o 2600 y 2700 puntos, respectivamente.

    Pues bien, otra medida que en algún momento se puso de moda y que sigue en boga, es la del desempeño o "performance", la cual supuestamente es el rating que un jugador tendría al haber hecho los puntos que hizo en un evento. Algunas organizaciones usan un algoritmo muy popular, denomina "algoritmo de los 400", para calcular el rating desempeño. De acuerdo a este algoritmo, el desempeño en términos de rating, para un evento, se calcula tomando

    1. el rating de cada jugador al que se le ha ganado y añadiendo 400 puntos
    2. el rating de cada jugador con el que se perdió y restándole 400 puntos
    3. el rating de cada jugador con quienes empató

    Se suman todos estos números y se divide por el número de juegos jugador. Esto puede expresarse por la fórmula:

        Performance/desempeño = [(rating total de los oponentes + 400 * (triunfos - derrotas)) / juegos jugados].

    Sin embargo, esta es una simplificación porque no toma en cuenta el factor k de la fórmula del rating, la cual es diferente de acuerdo al nivel del jugador de ajedrez. Una k de 25 es para alguien de 2000 puntos. Una k de 5 es la que se usa para jugadores del más alto rating. Sin embargo, ofrece una fórmula simple para estimar el valor del desempeño de un jugador.

    La FIDE, no obstante, calcula el desempeño mediante otra fórmula:

    el promedio del rating de los oponentes + la diferencia en ratings.

    La diferencia en ratings dp está basada en el porcentaje p que debe hacer un jugador en un torneo, el cual se usa como valor clave en la siguiente tabla:

      p       dp
    --------------
    0.99    +677
    0.9     +366
    0.8     +240
    0.7     +149
    0.6     + 72
    0.5        0
    0.4     - 72
    0.3     -149
    0.2     -240
    0.1     -366
    0.01    -677
    

    p es simplemente los puntos hechos divididos entre el número de partidas jugadas. Note que, en el caso de un score perfecto, dp está indeterminado. La tabla que aquí presentamos no es la tabla completa. Ésta puede hallarse en el handbook de la FIDE.

    Pues con estos valores en mente, sabemos que Karpov, en el torneo de Linares de 1994, ganó con 11 puntos de 13, frente a los mejores del momento: Kasparov, Shirov, Topalov, Bareev, Lautier, Kramnik, Kamsky, Anand, Ivanchuk, Gelfand, Illescas, Polgar y Beliavsky. Su desempeño se calculó en 2985 puntos Elo, el más alto de la historia hasta el 2009, en donde Carlsen hizo un performance de 3002 puntos. Cabe señalar que ese Linares 1994 fue uno de los torneos más fuertes de todos los tiempos. El desempeño de Karpov fue verdaderamente asombroso.

    Pero toda esta reflexión viene a cuento porque leo que el GM Kuljasevic, de Croacia, tuvo un desempeño de 2714 puntos Elo, de acuerdo a la página de Susan Polgar, cuando este GM, de 2537 puntos Elo jugó con rivales de estos ratings: 2127, 2224, 2430, 2388, 2230 y 2479, y haciendo 5.5 puntos de 6 posibles. Bueno, la realidad es que este GM difícilmente haría este desempeño contra un grupo de 6 GMs de unos 2700 puntos, por lo cual, dudo mucho de esta medida y de sí realmente dice algo o es una mera especulación divertida.


    _____

    (*) La gráfica que ilustra este artículo es el desarrollo del rating del fortísimo GM Peter Svidler a través de los años, a partir del año 2000.

    De la eficiencia en cómputo



    Han pasado ya algunos años, por no decir muchos, desde que empecé a usar computadoras. Mi primera máquina fue una Apple ][ y ahí hice mis pininos, primero en el Applesoft Basic y más adelante en el UCSD Pascal. Cabe recordar que una computadora de los años ochenta tenía unos 128K de memoria RAM y unidades de discos flexibles. Ni pensar en discos duros. De hecho, me tocó ver uno, para un sistema de precios unitarios, que era cvomo de 5 megabytes y que, para usarse con la Apple ][, el disco estaba dividido en un sistema de discos flexibles virtuales, que el sistema operativo DOS 3.3, podía entender entonces.


    Cuando se tenían estos sistemas, estábamos limitados a unos 70K por lado del disco. Si voltéabamos el disco flexible (floppy) y le hacíamos una muesca en un borde, podíamos duplicar la cantidad de información a guardar, aunque el fabricante de los diskettes no recomendaba esta práctica. Igualmente, al tener solamente 128K de RAM, teníamos espacio reducido para nuestros programas. Si usábamos el intérprete de Applesoft Basic entonces estaríamos hablando de unos 48K para programas, porque los 128K no podían usarse más que en dos mapas alternativos de memoria por la forma en que el procesador accedía a la memoria. Por ello, en Applesoft Basic se seguía un esquema que se usó mucho en los primeros sistemas con lenguaje BASIC, el cual lo que hacía era "tokenizar" cada palabra reservada del lenguaje, para así ahorrar bytes, que estaban tan escasos en ese tiempo. Así, la instrucción PRINT, por ejemplo, se traducía a un sólo número hexadecimal. Si queríamos ver el listado del programa en memoria, éste se desplegaba destokenizando, valga la expresión, cada token y el programador veía su código fuente.

    En términos de hardware y software, por ejemplo, la Apple ][ tenía su sistema operativo en un diskette de 70K. Increíble pensar que se podía tener un sistema operativo en tan poca memoria. Pues bien, como desde luego esta pieza de software era la más importante de la Apple ][, me hice de un libro que explicaba lo que pasaba dentro del sistema: Beneath Apple DOS. Hallé, cosa notable, que los ingenieros de software de Apple habían decidido poner el sistema a la mitad del disco. Si éste tenía 36 tracks, se cargaba éste en el track 18. Sonaba extraño. ¿Para qué? la respuesta es notable: si el cargador se pone a la mitad del disco, la cabeza lectora tiene que caminar máximo la mitad de la distancia para hallar el track deseado.  Obsérvese pues cómo se buscaba optimizar hasta en estos detalles.

    Con el tiempo y los megas, gigas y teras, que ya están con nosotros, las cosas cambiaron radicalmente. Cualquier computadora casera tiene al menos dos gigabytes de memoria, y ello hace que la optimización y la eficiencia pierda sentido.

    Ahora nadie piensa realmente en este tema. Los compiladores ya no son tan cuidadosos para ahorrar memoria. Los procesadores de texto han hecho crecer los documentos porque ahora se les añadetodo género de tags y marcas para identificar tipos de letra, tamaños, formato, etc. Simplemente un archivo que contenga la frase "Hello world!", ocupa  24064 bytes, cosa que vendría ser la tercera parte de un diskette de Apple ][.

    Ahora la eficiencia, creo yo, se considera desde otro enfoque. Ahora se trata de ser muy rápido en todo, aunque para ello necesitemos usar mucha memoria. Los programadores sabemos que no se puede tener un programa muy rápido que use poca memoria, a mayor rapidez de una cosa, más recursos para que esto ocurra. En ese sentido la computación es muy ética. No hay una relación de ganar ganar entre velocidad de proceso y uso de poca memoria.

    Desde luego que a pesar de que los sistemas modernos no hacen énfasis en lo que se refiere a optimización, las herramientas de programación insisten en usar esquemas dinámicos de memoria. Apartar usando un arreglo demasiada memoria ya no es una práctica adecuada. Ahora lo que se hace es que el sistema operatiuvo otorga memoria a los procesos que la están pidiendo. Da bloques de memoria, no toda, a alguna aplicación. Si ésta requiere más, buscará darle más. De esta manera se optimizan ahora las cosas, como previniendo de antemano, por software, de hacer las cosas bien, de usar de la mejor manera losa recursos.

    Como sea, creo que no estaría de más que se pensara de pronto en optimización. Aunque sobre memoria, ¿por qué no hacer las cosas un poco mejor dentro de la computadora?

    16 peones: vigésima tercera entrega

    Hoy toca hablar de "el tiempo" en ajedrez... (basado en un texto del MI Kenneth Frey).




    Sunday, May 22, 2011

    De protestas e imitaciones


    Miles de españoles se mantienen desde hace días acampando en la Puerta del Sol de Madrid, en exigencia de una “democracia real” y en rechazo al manejo que ese país le ha dado a la crisis económica.

    Grandes multitudes han continuado desafiando una prohibición a efectuar manifestaciones antes de la celebración de comicios municipales y estatales en España, al reunirse en plazas centrales de todo el país para protestar contra la alta tasa de desempleo y contra quienes ven como políticos ineptos.

    Los manifestantes se reunieron en la Puerta del Sol, en la capital española, donde apenas dejaron suficiente espacio para permitir que los barrenderos limpiaran las calles y que el tránsito fluyera al amanecer del sábado.

    Las elecciones regionales y municipales se celebrarán en gran parte de España el domingo y el día antes de esos comicios es normalmente llamado "el día de la reflexión" y se prohíben las campañas y los actos políticos.

    Muchas personas, en su mayoría jóvenes, se sienten indignados contra la clase política del país, pues de acuerdo con sus puntos de vista han sido incapaces de resolver adecuadamente una crisis económica que tiene postrada a España con una tasa de desempleo del 21,3%, la más alta de la zona del euro.

    Y sin duda la gente debe estar harta, porque sino, no habría estas manifestaciones multitudinarias contra la política y los gobernantes de España. Con la promoción que los medios informativos han dado estas noticias, ya en Facebook y Twitter hay quien plantea que en México no está lejos de que pase algo así e incluso ya hay foros y grupos en este sentido, como para imitar las acciones que se han visto en España.

    Pero en mi opinión esto es una moda más... ¿por qué tiene que ocurrir en otro lugar un evento de esta naturaleza y entonces lo imitamos? Imitación que no sirve para nada. Será en serio un movimiento importante cuando en realidad la sociedad civil salga a las calles no a modo de imitación, sino por un real hartazgo, que se sienta, que no sea simplemente una copia de algo que pasa en España porque la juventud está allá sí, harta de no tener oportunidades.

    Aquí seguro que los gobernantes ni preocupados están. Cuando mengüen las noticias de este fenómeno la gente lo olvidará. Mientras tengamos futbol nadie se irá a plaza alguna a protestar. Mientras haya pan y circo y la gente esté feliz y lo tolere, no podrá existir un movimiento de protesta legítimo. Estas copias baratas duran un suspiro. Los movimientos sociales no se forman por decreto, por modas, por imitación. Se crean por un verdadero sentir de la propia sociedad que en su conjunto está ya fastidiada de los manejos que hacen los gobernantes en turno.

    Por supuesto que no faltan quienes sus quince minutos de fama. He aquí un video del Grupo Reforma, que muestra la 'indignación' de una centena de españoles y amigos de españoles, afincados en México. ¡Qué bonito protestan! ¡Qué lindo es arengar en las calles por lo que es injusto, aunque a la hora nos iremos todos a nuestras casas a ver el futbol! ¡qué satisfactorio es cantar canciones de Serrat para apoyar a los 'hermanos' españoles! ¡qué bonito es lo bonito!

    16 peones: Vigésima segunda cápsula

    Hoy hablaremos de cómo pensar correctamente en ajedrez...



    Saturday, May 21, 2011

    Un capítulo del nuevo libro de Russek

    Con permiso del autor, desde luego, se publica un capítulo del nuevo libro de Russek. Éste trata de Magnus Carlsen.

    Cabe señalar que se sacó "una foto" de la pantalla del texto, de cada página de dicho capítulo, ya para ser impreso; por lo cual, lo que el lector ve es en realidad un 'facsimil' de las hojas impresas del libro. Se decidió subirlo así para no perder el formato, los diagramas, la notación con los figurines, etc.

    El capítulo pueden bajarlo de http://www.mediafire.com/?ty3t4y4razd5rq5

    16 peones: Vigésima primera cápsula

    Hoy hablaremos de la musa del ajedrez: Caissa



    Friday, May 20, 2011

    16 peones: vigésima cápsula

    Toca el turno de hablar de un  gran maestro por demás peculiar: Federico Sämisch... (Esta cápsula está basada en un artículo del MI Kenneth Frey. La fotografía de Sämisch es cortesía de Chess Notes de Edward Winter).



    Thursday, May 19, 2011

    Nuevo libro de Guil Russek: Campeones Modernos de Ajedrez


    El Maestro Internacional mexicano Guil Russek acaba de publicar un nuevo libro en Editorial Selector, la cual, hay que decirlo, ha apoyado decididamente el ajedrez y en donde probablemente Guil sea uno de sus autores más prolíficos.

    Éste es el índice de la nueva obra de Russek:



    Introducción ..........................................7
    La profundidad posicional de Botvinnik ................9
    El ajedrez armónico de Vassily Smyslov ...............16
    El notable teórico Isaac Boleslavsky .................22
    La versátil excelencia de Yuri Averbakh ..............28
    David Bronstein, creatividad e imaginación ...........34
    El maestro del ataque Effim Geller ...................40
    Mijail Tal, el hechicero del tablero .................46
    La maestría defensiva de Petrosian ...................53
    El original y heterodoxo Bent Larsen .................60
    El estilo universal de Boris Spassky .................66
    Lev Polugaevsky, trabajador e inventivo ..............72
    El ajedrez lógico de Lajos Portisch ..................78
    Bobby Fischer, genialidad y perfección ...............84
    El eterno luchador Viktor Korchnoi ...................91
    La estrategia superior de Anatoly Karpov .............97
    Henrique Mecking, el prodigio del Brasil ............105
    El estilo combinativo de Ljubojevic .................111
    Jan Timman, el polifacético holandés ................117
    Beliavsky y su ajedrez sin compromisos ..............123
    Artur Yusupov, sólido gran maestro ruso .............129
    La energía y combatividad de Kasparov ...............136
    El juego ofensivo del inglés Nigel Short ............143
    Vishy Anand, el gran campeón de la India ............149
    El excéntrico ucraniano Vassily Ivanchuk ............156
    El juego dinámico de Boris Gelfand ..................163
    Gata Kamsky, tenacidad y precisión ..................170
    La fantasía táctica de Alexei Shirov ................176
    Topalov, el agresivo guerrero búlgaro ...............182
    La elegancia estratégica de Kramnik .................189
    Judith Polgar, la mejor ajedrecista de la historia ..195
    Peter Svidler, cinco veces campeón de Rusia .........202
    La consistencia del húngaro Peter Leko ..............208
    El genio táctico armenio, Levon Aronian .............216
    Sergey Karjakin, el gran maestro más joven ..........223
    Magnus Carlsen, el nuevo fenómeno del ajedrez .......231
    Índice de jugadores .................................238

    En mi opinión, Guil Russek es uno de los jugadores de ajedrez -que conozco personalmente- que tiene un conocimiento enciclopédico del juego ciencia. Conoce miles de posiciones. Tiene una estupenda memoria y además, es un apasionado de todos los aspectos del ajedrez. Sus libros son de fácil lectura y en general las partidas y posiciones que elige mostrarnos son siempre sorprendentes, con detalles que van más allá del mismo ingenio ajedrecista, sino que nos hace aprender algo de cada posición que nos muestra. Creo que esta obra es un trabajo serio, pulido, de un verdadero profesional del ajedrez, amén de ser didáctico y ameno.

    He aquí la Introducción de la obra:

    Introducción

    En esta obra presentamos a los grandes ajedrecistas modernos: los más destacados de la segunda mitad del siglo XX hasta los mejores jugadores de la actualidad. De cada uno de ellos veremos una breve semblanza biográfica donde se mencionarán también sus principales aportaciones al juego, analizaremos una instructiva partida completa y una posición táctica ejemplar. Empezaremos desde los primeros campeones mundiales soviéticos Mijail Botvinnik y Vassily Smyslov hasta los grandes talentos de hoy en día, como el armenio Levon Aronian, el ucraniano Sergey Karjakin y el noruego Magnus Carlsen. En el camino estudiaremos la obra de notables y algunos muy famosos ajedrecistas: algunos de ellos llegaron a ostentar la corona del orbe como el “mago de Riga” el genial Mijail Tal, el siempre controversial Bobby Fischer, los soviéticos Tigran Petrosian, Boris Spassky Anatoly Karpov, Garry Kasparov y Vladimir Kramnik, el brillante táctico de la India Vishwanathan Anand, el gran luchador búlgaro Vesselin Topalov, entre otras muchas figuras del tablero.

    En una selección que abarca un periodo tan extenso siempre se presta a polémica la exclusión de algunos “grandes” tales como Keres, Reshevsky o Najdorf, pero el autor ha considerado que los mejores años de estos jugadores fueron antes de 1950 y por ello pueden ser llamados “clásicos” aunque, desde luego, también tuvieron importantes éxitos posteriormente. También fueron tomados en cuentra otros destacados ajedrecistas que lamentablemente por motivos de espacio no fueron incluidos, por ejemplo, Gligoric, Panno, Stein, Hubner, Andersson, Vaganian, entre otros. Por otra parte, la aparición continua de nuevos prodigios en la actualidad (nombremos por ejemplo a Hikaru Nakamura, Anish Giri o al chino Wang Hao) pueda hacer que en un futuro no lejano se eche en falta en el libro a alguno de ellos u otros más.

    El objetivo principal de este libro es introducir al lector en el imprescindible estudio del desarrollo histórico del ajedrez y que esto le sirva como base para un estudio de mayor profundidad. Por otra parte, al analizar críticamente las brillantes partidas y posiciones que se ofrecen a continuación (muchas de ellas verdaderas joyas del ajedrez de ataque) podrá aprender los principios más importantes de la estrategia y la táctica en la competencia de alto nivel. Por lo anterior, es muy recomendable, como método de estudio, que el lector no se limite a reproducir sin más las partidas de la presente obra, sino que también intente predecir las jugadas del bando ganador tratando siempre de aportar sus propias ideas e incluso buscar refutar los análisis del autor si es necesario. Descubra los finos planes estratégicos y sutiles maniobras que muchas veces desembocan en singulares y estéticas combinaciones que han pasado a ser parte del legado histórico del ajedrez. No olvide que lo más importante y satisfactorio es el esfuerzo que estemos dispuestos a realizar para disfrutar cada vez mejor este bello juego ya que como suele decirse, el ajedrez es la gimnasia de la mente.

    Por último, quisiera finalizar dedicando este libro con aprecio y agradecimiento a mi amigo Oscar Culbeaux Tello por su constante apoyo a través de los años y a mis entusiastas y pacientes alumnos (y también amigos) Manolo Álvarez Fernández, Julio Serrano Segovia y su hijo Manuel; consejos importantes así como varias ideas y correcciones salieron a la luz en las sesiones que tuvimos juntos.
    Guil Russek
    Maestro Internacional

    Enhorabuena por esta nueva obra de Guil Russek, que sin duda es una contribución importante dentro del 
    ámbito del ajedrez mexicano.

    Bosquejo de un lector de archivos PGN


    PGN son las siglas de Portable Game Notation, un sistema para anotar partidas de ajedrez, usando el esquema de la notación algebraica, que es el único sistema de escritura oficial de la Federación Internacional de Ajedrez (FIDE). Gracias a este mecanismo, cualquiera puede leer una partida de ajedrez sin prácticamente importar en qué parte del mundo se encuentre. La notación de una partida de ajedrez contempla los siguientes rubros: Evento (en qué torneo se jugó el torneo), lugar del evento, fecha completa, ronda, nombre del conductor de las blancas, nombre del conductor de las negras, resultado, ECO (código de la apertura de acuerdo a la Encyclopedia of Chess Openings - ECO), el rating de las blancas, el rating de las negras, entre otros apartados (estos son los más generalizados). Inmediatamente después de esto, viene la partida, codificada de la siguiente manera: número de jugada, jugada del blanco,  jugada del negro, número de jugada, etc. hasta llegar va 1-0, 0-1 o 1/2 (ganan blancas, ganan negras, empate).

    Por ejemplo, esta es la partida entre Leko e Ivanchuk, del torneo alemán de Dortmund, del 2008:


    [Event "Sparkassen"]
    [Site "Dortmund GER"]
    [Date "2008.06.29"]
    [Round "2"]
    [White "Leko, P."]
    [Black "Ivanchuk, V."]
    [Result "1-0"]
    [ECO "B46"]
    [WhiteElo "2741"]
    [BlackElo "2740"]

    1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 a6 6. Nxc6 bxc6 7. Bd3 d5 8. O-O Nf6 9. Qf3 Be7 10. Qg3 Nh5 11. Qf3 Nf6 12. e5 Nd7 13. Qg3 g6 14. Bh6 c5 15. Na4 c4 16. Be2 Bb7 17. b3 Bc6 18. Nb2 Rb8 19. Nd1 Nc5 20. Ne3 Ne4 21. Qh3 Ng5 22. Qg4 c3 23. a3 Bb5 24. Bxb5+ axb5 25. f3 Qb6 26. Rae1 d4 27. Nd1 d3+ 28. Kh1 dxc2 29. Nf2 Bc5 30. Nd3 Be3 31. Bxg5 Bd2 32. Re2 O-O 33. Nc1 b4 34. Bxd2 cxd2 35. Rxd2 bxa3 36. Rxc2 Rfc8 37. Qe4 Rxc2 38. Qxc2 Qd4 39. Na2 Qxe5 40. b4 Rd8 41. h3 h5 42. Rb1 Qe3 43. Rd1 Rd5 44. Qb1 Qe2 45. Re1 Qd2 46. Rc1 Rd8 47. b5 Rb8 48. Rc3 h4 49. b6 Qd6 50. Rb3 Rb7 51. Nc3 Qc6 52. Rxa3 Qxb6 53. Qxb6 Rxb6 54. Ra4 g5 55. f4 Rb3 56. Ne2 Re3 57. Ng1 1-0


    Aquí las piezas se denominan por sus siglas en inglés: K-king (rey), Q-queen (dama), B-bishop (alfil), N-knight (caballo), R-rook (torre). No se pone la "P" de peón porque como hay dieciseís, se tomó la decisión que sería redundante. Si no hay pieza que se mueve, se asume que es un peón. Cabe hacer notar además, que aquí hemos puesto la partida en notación larga, es decir, indicando de qué casilla se mueve la pieza o peón y a qué casilla llega. En general se usa la notación corta, que es simplemente la pieza que se mueve y hacia qué casilla se mueve. Si dos piezas iguales pueden acceder a la casilla a la que se mueve la pieza, hay entonces que indicar cuál es la que se mueve, poniendo las coordenadas de donde nace la jugada. Por ejemplo, una partida en notación larga se ve así:

    [Event ""]
    [Site "Breslau"]
    [Date "1912"]
    [Round ""]
    [White "Levitzky"]
    [Black "Marshall"]
    [Result "0-1"]

    1.e2-e4 e7-e6 2.d2-d4 d7-d5 3.Nb1-c3 c7-c5 4.Ng1-f3 Nb8-c6 5.e4xd5 e6xd5 6.Bf1-e2 Ng8-f6 7.O-O Bf8-e7 8.Bc1-g5 O-O 9.d4xc5 Bc8-e6 10.Nf3-d4 Be7xc5 11.Nd4xe6 f7xe6 12.Be2-g4 Qd8-d6 13.Bg4-h3 Ra8-e8 14.Qd1-d2 Bc5-b4 15.Bg5xf6 Rf8xf6 16.Ra1-d1 Qd6-c5 17.Qd2-e2 Bb4xc3 18.b2xc3 Qc5xc3 19.Rd1xd5 Nc6-d4 20.Qe2-h5 Re8-f8 21.Rd5-e5 Rf6-h6 22.Qh5-g5 Rh6xh3 23.Re5-c5 Qc3-g3 0-1

    Todo esto viene a cuento porque la cuestión es que se me había ocurrido hacer en prolog, sí, en prolog, un programa que leyera archivos de esta naturaleza y desplegara la partida en formato PGN en un tablerito electrónico. Para simplificar las cosas, decidí primero usar la notación larga, porque así resulta más fácil ya que la propia notación me dice qué movimiento hay que hacer, considerando la casilla inicial y la casilla de llegada de la pieza que hace la jugada.

    Un problema inicial que observé es que en prolog no hay arreglos como en muchos lenguajes como Pascal o C. No incluyo Basic porque esto es de la "Tierra Primitiva". Pero en prolog lo equivalente son las listas. Así, puedo definir una lista con ocho casilleros: [tb,cb,ab,db,ab,cb,tb], lo cual representaría la primera fila del tablero. Quizás haya que ser más precisos y poner: fila(1,[tb,cb,ab,db,ab,cb,tb]).

    Si quisiéramos usar esta representación para el tablero completo, podríamos poner:

    fila(8,[tn,cn,an,dn,an,cn,tn]).
    fila(7,[pn,pn,pn,pn,pn,pn,pn,pn]).
    fila(6,[b,b,b,b,b,b,b,b]).
    fila(5,[b,b,b,b,b,b,b,b]).
    fila(4,[b,b,b,b,b,b,b,b]).
    fila(3,[b,b,b,b,b,b,b,b]).
    fila(2,[pb,pb,pb,pb,pb,pb,pb]).
    fila(1,[tb,cb,ab,db,ab,cb,tb]).
    

    donde tb, cb, ab, db, pb y rb son torre blanca, caballo blanco, alfil blanco, dama blanca, peon blanco y rey blanco, respectivamente (y con sus equivalentes para torre negra, caballo negro,alfil negro, etc.) La "b" representa una casilla vacía.

    Muy bien, aquí ya tenemos parte del asunto zanjado. ya podemos representar en claúsulas de prolog el tablero de ajedrez. Ahora sólo resta poder manipular las jugadas y hacer que éstas se representen en el tablero.

    En prolog, podemos encontrar el enésimo elemento de una lista de manera muy fácil:

    % Hallar el enésimo elemento de una lista.
    % El primer elemento de la lista es el 1.
    
    element_at(X,[X|_],1).
    element_at(X,[_|L],K) :- K > 1, K1 is K - 1, 
                             element_at(X,L,K1).
    

    Esto significa que hallar, digamos, el quinto elemento de una lista es equivalente a hallar el cuarto elemento de una lista menos su primer elemento, o el tercer elemento de una lista sin considerar los dos primeros elementos, etc. Así se hace fácilmente en prolog.

    Ahora basta ver la partida y describir cada jugada como una acción en prolog. Por ejemplo, si tengo la jugada "e2-e4", basta con poner lo que hay en la casilla 52 y pasarlo a la casilla 54. Para ello, ponemos una "b" (de blanco) en la casilla 52 (e2) y lo que había en esa casilla, lo escribimos en la casilla 54. (ver el tablero en la siguiente imagen - correspondence-chess.jpg).

    Para hacer la traducción de las coordenadas de cada columna a, b, c, d, e, f, g, h, podemos hacer el siguiente predicado de equivalencias:

    equivalencia(a,1).
    equivalencia(b,2).
    equivalencia(c,3).
    equivalencia(d,4).
    equivalencia(e,5).
    equivalencia(f,6).
    equivalencia(g,7).
    equivalencia(h,8).
    

    Así, basta ir de jugada en jugada y hacer una rutina que lea las coordenadas, inicial y final, así como la pieza que debe ir ahí y listo, el tablero cambiará su posición. Si la jugada la tenemos como una lista, por ejemplo: [e,2,e,4], el pseudocódigo podría ser algo así:

    haz_jugada([X1,Y1,X2,Y2], Pieza) :- 
        /*saca las coordenadas de la posición inicial y final de la pieza que se mueve*/
        /*revisa qué pieza hay en la lista (fila) correspondiente a la posición de la coordenada inicial*/
        /*sustituye el valor que haya ahí por un blanco*/
        /*ve a la posición final y pon la pieza en la coordenada de la fila correspondiente*/
    

    Es claro que este algoritmo no valida si las jugadas son legales o no, pero la idea es que las partidas dadas en formato PGN son correctas y no contienen errores. En caso de contenerlos caemos en "garbage in -> garbage out" (si le das basura al programa regresará basura).

    Con esto en mente, podemos hacer un programa que lea el archivo PGN y pase jugada por jugada una partida. Sin embargo, esto sólo puede hacerse de ida, es decir, en una dirección, porque cuando se captura una pieza, por ejemplo, la pieza capturada desaparece y no llevamos registro de esto. Así, si queremos ir, por decir algo, una jugada hacia atrás, pues no podemos hacerlo porque no tenemos información de qué pieza fue eliminada del tablero.



    La solución a esto es en realidad crear tantos tableros de ajedrez completos en donde cada jugada esté en uno de ellos. Así, si quiero ir a la jugada 27, entonces pinto inmediatamente el tablero 27. No me tengo que acordar si ahí hubo captura o no de alguna pieza. Si hago así las cosas, entonces mi definición del tablero de ajedrez debo modificarlo para que contemple en qué jugada está el programa en ese momento desplegando el tablero:

                 
    /*ejemplo de la estructura del tablero para el primer movimiento*/
    fila(8,[tn,cn,an,dn,an,cn,tn],1).
    fila(7,[pn,pn,pn,pn,pn,pn,pn,pn],1).
    fila(6,[b,b,b,b,b,b,b,b],1).
    fila(5,[b,b,b,b,b,b,b,b],1).
    fila(4,[b,b,b,b,b,b,b,b]1,).
    fila(3,[b,b,b,b,b,b,b,b],1).
    fila(2,[pb,pb,pb,pb,pb,pb,pb],1).
    fila(1,[tb,cb,ab,db,ab,cb,tb],1).
                        
    

    Una partida promedio, digamos de 40 jugadas tendría entences 80 tableros (8 claúsulas por tablero), que se generarían en tiempo de ejecución como claúsulas de prolog. esto significa 640 claúsulas para guardar en memoria, cosa que actualmente cualquier computadora puede hacer sin mayores dificultades.

    De hecho, los programas comerciales como Chessbase hacen precisamente esto, aunque como no lo hacen en prolog, usan otras técnicas. No sé en qué lenguaje está escrito Chessbase, pero pienso que es C. Si este es el caso, y si se sigue lo que aquí hemos comentado, entonces un programa que lea una partida PGN creará en tiempo de ejecución un diagrama por cada movimiento. Como en C se pueden crear arreglos bidimensionales, probablemente el tablero esté definido de esta manera y entonces, cuando se hace una jugada, se crea un tablero nuevo, en una estructura dinámica, que solamente pide la memoria necesaria cuando el sistema lo necesita.

    Cuando se termina de ver esa partida, se libera toda esa memoria (es mandar los apuntadores a nil, por ejemplo), y entonces tenemos un sistema por demás eficiente.

    El sistema de lectura de partidas PGN en Prolog no es el más eficiente, pero es un problema que puede ser atacado por Prolog de manera razonable y además, sin necesidad de pensar en estructuras dinámicas como en otros lenguajes, cosa que en general se aprende hasta un segundo curso de programación.