Algunas reseñas de libros

Gatos conspiradores, algoritmos, ciencia y juegos HTML5

Hay algunos libros que he leído desde mi última reseña, y al igual que con las películas, dejaré de hacer reseñas individuales. ¡Celebren, porque habrá menos spam para ustedes!

En este caso, los libros de los que voy a hablar son:

  • How to tell if your cat is plotting to kill you, por Matthew Inman
  • Algorithms in a Nutshell, por George Heineman, Gary Pollice y Stanley Selkow
  • The Grand Design, por Stephen Hawking
  • HTML5 Games, por Jacob Seidelin

How to tell if your cat is plotting to kill you

por Matthew Inman

Este es el libro de Matthew Inman, mejor conocido como The Oatmeal, un escritor de web comics que tiene un humor algo explícito y muy sarcástico. Amante de los animales y la ciencia, fue mucho mejor conocido por las respuestas ultra-sarcásticas que da a quienes lo amenazan legalmente (ver caso FunnyJunk, la respuesta de FunnyJunk y la demanda de FunnyJunk por defamación). Si algo quiero compartir de los comics de Oatmeal es su increíble tributo a la vida de Tesla: Why Nikola Tesla was the greatest geek that ever lived, y la seguidilla de posts en donde él usó su fama para salvar la torre Wardenclyffe y convertirla en un museo.

Volviendo al libro, es una recopilación de muchos de los comics que están online y una compilación de varios otros que no lo están. El estilo de humor es el mismo, por lo que si te gusta lo que ves online, probablemente te guste el libro. No es extremadamente extenso, y la naturaleza de los comics hace que sea de lectura rápida. Literalmente, lo leí en 10 minutos.

Quiero alardear un poquito sobre el hecho de que Matthew Inman (“el chico de los gatos”, según se refirieron a él en la librería) visitó nuestra ciudad el año pasado y aprovechamos a saludar y pedirle un autógrafo. A diferencia de lo que sus comics nos hacen pensar, él es una persona de buena presentación, en buena forma física, joven y muy amable.

Resumiendo: buen humor, aunque no destacable, simple. Libro corto.


Algorithms in a Nutshell

por George Heineman, Gary Pollice y Stanley Selkow

Este libro tiene una muy buena premisa y propósito: hacer entender el concepto detrás de los algoritmos más comunes que se utilizan en el mundo de la informática. Básicamente: ordenamiento, asociación, recorrida de grafos, recorrida de árboles, búsqueda. Desafortunadamente, el libro sufre de varios problemas que lo hace muy difícil de seguir, como por ejemplo:

    - Hay elementos de los cuales se dan sus definiciones matemáticas, asumiendo que el lector ya tiene conocimiento sobre esas bases (recordemos que el libro es para entender los algoritmos -- ¿quizá la premisa no tiene en cuenta la audiencia que querría hacer esto?) - Los gráficos utilizados como ejemplos son demasiado pequeños para ser parte de un libro. Literalmente cuesta mucho trabajo verlos. - Hay muchas explicaciones que se basan en ejemplos puntuales y no en generalidades. Entiendo el uso de un ejemplo para, precisamente, ejemplificar, pero no para deducir relaciones matemáticas entre objetos y llamarlo una ley. - Extensas tablas de datos, a veces con pocas conclusiones al respecto. Es útil para comparar resultados si uno mismo se propone repetir toda la investigación que los autores hicieron, pero no para, nuevamente, entender los algoritmos. - Se efectúan análisis de espacio (memoria) que son específicos a entornos o lenguajes, pero no en cuanto a aspectos generales de la información utilizada. - Existen casos en donde las explicaciones no logran identificar los elementos que son bases para lograr la intuición del algoritmo. Como un buen ejemplo, la explicación de la búsqueda en grafos habla de colores para identificar el estado de análisis y basa sus conclusiones en base al tamaño o extensión de la frontera de búsqueda -- cuando nunca se definió qué era esa frontera. - El código de ejemplo no está escrito para ser legible, en muchos casos incluso está optimizado. La elección de los lenguajes tampoco es la más feliz (C, con un bajo nivel innecesario, Java con una sobre-ingeniería sobre la jerarquía de objetos). En los ejemplos hay poco de algoritmo y mucho de detalles de implementación. En definitiva, tuve una mala experiencia pero no fue totalmente negativa. Logré entender varios de los puntos que querían hacerse y logré sacar algunas cosas del libro. Además, podría ser útil como material de referencia (si es que uno trabaja en C o en Java, porque hay muy poco pseudocódigo). --- ## The Grand Design _por Stephen Hawking_ ![](/assets/grandDesign.jpg) Personalmente, pensé que este libro se centraría en la controversia de Hawking afirmando que no se requiere un Dios para tener al universo de la forma en la que hoy existe, y más aún con toda la polémica de las teorías del Diseño Inteligente. (Esa es una discusión que no abordaré aquí.) Sin embargo, aunque menciona estos puntos, el libro está centrado en explicar el progreso de la ciencia desde los más antiguos mitos (¡recomiendo muchísimo el segundo capítulo, es la corta historia de toda la ciencia!), explicar el método científico y dar a entender también cuáles son las últimas teorías más válidas y por qué. Cubre, sin ir demasiado en detalle, la teoría de cuerdas, las previas teorías del Big Bang y la relatividad. Cuenta algunos hechos fascinantes sobre la mecánica cuántica y por qué realmente es más complicada de lo que podemos imaginar. Un punto muy importante que también explica es el principio antrópico y cómo ha hecho la ciencia para responder esas respuestas. Estén satisfechos o no con esa respuesta, está claro que expone una respuesta a esos problemas y lo explica de una forma muy amena, no hace falta ser un físico teórico para comprender de qué se habla. Como siempre, me quito el sombrero ante Hawking por su capacidad de explicar temas tan complejos de una forma tan simple. --- ## HTML5 Games _por Jacob Seidelin_ ![](/assets/html5games.jpg) Este es uno de esos libros que, como _Algorithms in a Nutshell_, tiene muy buena intención pero la forma de llevar a cabo sus explicaciones no son tan buenas. Sin embargo, a diferencia de ese ejemplo, este sí tiene un contenido con bases mucho más fáciles de comprender, incluso para aquél que no esté totalmente familiarizado con la programación JavaScript. El libro nos lleva sobre las posibles opciones al momento de desarrollar juegos HTML5 siguiendo la línea de un ejemplo práctico, de principio a fin. En este caso, nos cuenta cómo implementar un juego del tipo match-three, haciendo un clon simple de Bejeweled. A lo largo del libro, introduce varias herramientas y técnicas pero nunca se detalla en totalidad ninguna de ellas, en pos de seguir adelante con el ejemplo planteado. Personalmente creo que esto distrae del objetivo de educar sobre las posibles opciones y cuándo elegir una u otra, pero no deja de ser un libro instructivo por eso. De la misma forma, se van introduciendo distintas tecnologías hasta el punto necesario para el ejemplo. Así, el libro es una buena introducción como para tener una idea básica de qué cosas se pueden hacer y de qué forma se harían, pero no es un compendio de posibilidades, ni es extremadamente detallado en las capacidades que las tecnologías mencionadas nos ofrecen. Cabe aclarar, que eso es difícil de lograr de todos modos ya que estas se encuentran aún en un proceso de cambio. Son los riesgos de escribir un libro sobre un tema tan actual. Por último, quería mencionar que el libro hace caso a las buenas prácticas aunque no las hace una parte central del mismo. Pero es bueno saber que no se sacrifica la calidad de código por llevar adelante un ejemplo. Eso es un punto a favor.