Harry Potter y los Lenguajes de Programación

Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.

Buscando información sobre diseño de lenguajes de programación (just for fun) me topé con un artículo que relaciona este tópico con los libros de Harry Potter (de los que soy un feliz lector). Para darle más fuerza a la casualidad, el autor del artículo es la misma persona que creó el lenguaje de programación que más me gusta.

Me tomo la libertad de traducir este artículo de Guido Van Rossum, creador del lenguaje de programación Python.

La Teoría de Harry Potter para el Diseño de Lenguajes de Programación

por Guido van Rossum

14 de Agosto de 2005

Resumen

Una comparación alegre de como exitosos autores de ficción y diseñadores de lenguajes de programación pueden por accidente encontrar en su primer trabajo las pistas de sus éxitos futuros.

La teoría

Me encanta leer los libros de Harry Potter, y recientemente se me ocurrió una analogía interesante entre escribir series de libros de ficción y diseñar lenguajes de programación.

Estoy seguro de esto: cuando J.K. Rowling escribió el primer libro de Harry Potter (como el primero de una serie de siete) había desarrollado una buena idea de las cosas que eventualmente iban a pasar en la serie pero no tenía la idea exacta de lo que iba a pasar en los restantes libros, tampoco todos los detalles de cómo funcionaría la magia en el mundo que estaba creando.

También estoy asumiendo que a medida que iba escribiendo los volúmenes sucesivos, volvía a los primeros libros para rescatar detalles que habían sido introducidos solo para darle color a la historia y darles un nuevo significado. Por ejemplo, dudo que cuando inventó el nombre Voldemort ya haya pensado que "I am Lord Voldemort" (Yo soy el Señor Voldemort) sería un anagrama de "Tom Marvolo Riddle" (Tom Riddle no es un nombre muy convincente para quien terminaría siendo la persona más mala del mundo, pero aparentemente no pudo encontrar un buen anagrama para Voldemort solo). Tampoco pienso que haya pensado que la patética rata de Ron, Scrabbers, sería un animago (el hecho de que le falte un dedo, al menos en lo que yo se, no aparece en ninguno de los dos primeros libros). Creo que ya captaron mi idea.

De forma similar, no había pensado en iteradores o generadores cuando se me ocurrió por primera vez el for-loop de Python o usar % como un operador para el formateo de strings, y de hecho, usar 'def' para definir tanto funciones como métodos tampoco fue parte del plan inicial.

De la misma forma en que los sucesivos libros de Harry Potter requieren tener continuidad (el gusto de Dumblendor por los dulces no puede cambiar drásticamente en el tercer libro), las versiones sucesivas de Python están limitadas por serios requerimientos de compatibilidad hacia atrás.

A veces es fácil volver y generalizar una característica, por ejemplo, trasnformar las funciones de conversión int(), str() y list() en clases. Por otro lado, una reciente discusión en python-dev sobre la jerarquía de las excepciones (PEP 348) ha mostrado que deciciones anteriores pueden ser menos que ideales. Las inconsistencias en la convención de nombres y la calidad del API son otro ejemplo.

Comentarios al artículo original: http://www.artima.com/forums/flat.jsp?forum=106&thread=123234

Correcciones: por desconocer cuestiones internas del lenguaje o de mi traducción en sí son bienvenidas.

Comentarios

Comments powered by Disqus