Cibernetia > Manuales > Python
Búsqueda personalizada







La extraña historia de "How to Think like a (Python) Programmer", de Allen B. Downey

En enero de 1999 me estaba preparando para enseñar un curso de introducción a la programación Java. Había impartido el curso tres veces y me sentía decepcionado. El índice de fracaso en la clase era demasiado alto, e incluso para los estudiantes que aprobaron, el nivel global de progreso era demasiado baja.

Uno de los problemas fue el de los libros. Lo había intentado con tres libros (y había leído una docena más), y todos ellos presentan los mismos problemas. Eran demasiado grandes, con muchos detalles innecesarios acerca de Java, y no tenían suficiente orientación de alto nivel sobre cómo programar. Y en todos se manifestaba el efecto de la puerta-trampa: se empezaban de forma muy gradual y fácil, y luego, alrededor del capítulo 5, el suelo se desploma. Los estudiantes empiecen a recibir demasiada información con demasiada rapidez, y yo me pasaba el resto del semestre recogiendo los pedazos.

Dos semanas antes del primer día de clases, decidí escribir mi propio libro. Escribí un capítulo de 10 páginas en 13 días. El día 14 hice algunas revisiones, y lo envié a fotocopiar.

Mis objetivos eran:

  • Ser conciso. Es mejor para los estudiantes leer 10 páginas que 50.
  • Ser cuidadoso con el vocabulario. He tratado de reducir al mínimo la jerga y definir cada concepto la primera vez que aparece en el texto.
  • Construir progresivamente. Para evitar la puertas-trampa, dividí la exposición de los temas más difíciles en una serie de pequeños pasos.
  • No se trata de enseñar un lenguaje, sino de enseñar a programar. Incluí un subconjunto mínimo de instrucciones en lenguaje Java y prescindí del resto.

Necesitaba un título, de modo que en un capricho elegí How to Think Like a Computer Scientist (Cómo pensar como un informático).

Mi primera versión fue dura, pero funcionó. Los estudiantes lo leyeron, y entendieron por sí mismos lo suficiente para que yo puediera dedicar las clases a repasar los aspectos más complicados y los asuntos interesantes y (más importante) dedicar tiempo a hacer prácticas.

Como usuario y defensor del software libre, creo en la idea de Benjamin Franklin expresó:

"Puesto que disfrutamos de de las grandes ventajas de los inventos de los demás, deberíamos estar encantados de tener la oportunidad de servir a otros gracias a nuestros inventos, y deberíamos hacerlo de forma libre y desinteresada".

Así que el publique el libro con licencia GNU Free Documenation License, que permite a los usuarios copiar, modificar y distribuir el libro.

Lo que ocurrió a continuación es lo más guay. Jeff Elkner, un maestro de secundaria en Virginia, adoptó mi libro y lo tradujo a Python. Él me envió una copia de su traducción, y he tenido la inusitada experiencia de aprender Python leyendo mi propio libro.

Jeff y yo revisamos el libro, incorporamos un estudio de caso de Chris Meyers, y publicamos How to Think Like a Computer Scientist: Learning with Python (Cómo pensar como un informático: aprender con Python), también con licencia GNU Free Documenation License.

Al mismo tiempo, mi esposa y yo lanzamos Green Tea Press, que distribuye varios de mis libros electrónicos, y vende "Cómo Pensar..." en copia impresa.

He estado enseñando con este libro durante más de cinco años, y he hecho mucho más de programación en Python. Aunque todavía me gusta la estructura del libro, al cabo del tiempo he sentido la necesidad de introducir algunos cambios:

  • Algunos de los ejemplos de la primera edición funcionaban mejor que otros. En mis clases he descartado los menos eficaces y he introducido algunas mejoras.
  • Sólo hay un par de ejercicios en la primera edición. Ahora tengo cinco años de cuestionarios, exámenes y tareas para elegir.
  • He estado programando con Python durante este tiempo, y tengo una visión más precisa de Python. Aunque el libro aún trata sobre programación, y no sobre Python, es posible que ahora el libro esté más influido por el lenguaje.

Al mismo tiempo, Jeff ha estado trabajando en su segunda edición, personalizada para poder utilizarla en sus clases. En lugar de meter todo en un libro (que quizá sea la explicación de que otros libros sean tan gordos), decidimos trabajar en diferentes versiones. Ambas tienen Licencia de documentación libre, por lo que los usuarios pueden elegir una o combinar el material de los dos.

Para mi versión, estoy usando la revisión de Cómo pensar como un programador (en Python). Esta versión tiene un objetivo más modesto que el de la versión original, pero probablemente es más precisa.

Allen B. Downey
Needham MA
Downey Allen es un profesor de Informática en el Franklin W. Olin College of Engineering.

Para el profesor

Swampy y UML

Para el estudiante

Prueba los ejemplos.

Sigue los ejemplos del capítulo.

Dónde obtener el código.

Lista de contribuciones

Parafraseando la filosofía de la Free Software Foundation, este libro es libre como la libertad de expresión, pero no necesariamente gratis como la pizza. Nació de una colaboración que no hubiera sido posible sin la GNU Free Documentation License. Por tanto, damos las gracias a la Free Software Foundation por desarrollar esta licencia y, por supuesto, por hacerla accesible.

También damos las gracias a los más de 100 lectores que, aguda y concienzudamente, nos han enviado sugerencias y correcciones durante los últimos años. Según el espíritu del software libre, hemos decidido expresar nuestro agradecimiento en forma de una lista de contribuciones. Por desgracia, esta lista no está completa, pero nos esforzamos sinceramente por mantenerla actualizada.

Si tienes la oportunidad de repasar la lista, en ella encontrarás los nombres de las personas que han contribuido, mediante el envío de una nota, a evitar que tú y otros lectores como tú sufráis las confusiones derivadas de un error técnico o de una explicación poco transparente.

Por imposible que pueda parecer después de tantas correcciones, pueden quedar errores en este libro. Si te tropiezas con uno, por favor, comprueba la versión en línea del libro en http://thinkpython.com, que es la más actualizada. Si el error no ha sido corregido, por favor tómate un minuto para enviar un correo electrónico a feedback@thinkpython.com. Si finalmente introducimos alguna modificación a raíz de tu sugerencia, publicaremos tu nombre en la próxima versión de la lista de contribuciones (a menos que nos pidas que no lo hagamos). Gracias.

  • Lloyd Hugh Allen envió una corrección a la Sección 8.4.
  • Yvon Boulianne envió una corrección de un error de semántica en el Capítulo 5.
  • Fred Bremmer envió una corrección en la sección 2.1.
  • Jonah Cohen escribió los scripts de Perl para convertir la fuente LaTeX de este libro en bonito HTML.
  • Michael Conlon envió una corrección gramatical en el capítulo 2 y una mejora de estilo en el capítulo 1, e inició la discusión sobre los aspectos técnicos de los intérpretes.
  • Courtney Gleason y Katherine Smith escribió horsebet.py, que se utilizó como estudio de caso en una versión anterior del libro. Su programa ya se encuentra en el sitio web.
  • Lee Harr presentó más correcciones de las que podemos detallar aquí, y, de hecho, debería figurar como uno de los principales redactores del texto.
  • James Kaylin es un estudiante que ha utilizado el texto. Ha presentado numerosas correcciones.
  • David Kershaw corrigió la función catTwice de la Sección 3.10.
  • Eddie Lam ha enviado numerosas correcciones para los capítulos 1, 2 y 3. También corrigió el Makefile de manera que cree un índice la primera vez que se ejecute, y nos ayudó a establecer un sistema de versionado.
  • Man-Yong Lee envió una corrección en el código de ejemplo de la sección 2.4.
  • David May señaló que la palabra "unconsciously" ("inconscientemente") en el Capítulo 1 tenía que substituirse por "subconsciously" ("subconscientemente").
  • Chris McAloon envió varias correcciones que se introdujeron en las secciones 3.9 y 3.10.
  • Matthew J. Moelter ha contribuido durante largo tiempo mediante el envío de numerosas correcciones y sugerencias.
  • Simon Dicon Montford informó de que faltaba una definición de función y varios errores de definición en el Capítulo 3. También encontró errores en la función increment en el Capítulo 13.
  • John Ouzts corrigió la definición de "valor de retorno" en el Capítulo 3.
  • Kevin Parques envió valiosos comentarios y sugerencias sobre la forma de mejorar la distribución del libro.
  • David Pool informó sobre una errata en el glosario del capítulo 1, así como amables palabras de aliento.
  • Michael Schmitt envió una corrección en el capítulo sobre los archivos y las excepciones.
  • Robin Shaw señaló un error en la sección 13.1, donde la función printTime se utilizaba en un ejemplo sin haber sido definida.
  • Paul Sleigh encontró un error en el capítulo 7 y un error en el script de Perl de Jonah Cohen que genera el código HTML a partir de LaTeX.
  • Craig T. Snydal está probando el texto en un curso en la Universidad de Drew. Él ha contribuido con varias valiosas sugerencias y correcciones.
  • Ian Thomas y sus estudiantes están usando el texto en un curso de programación. Ellos son los primeros en probar los capítulos en la segunda mitad del libro, y han hecho numerosas correcciones y sugerencias.
  • Keith Verheyden envió una corrección en el Capítulo 3.
  • Peter Winstanley nos informó sobre un viejo error en el latín que empleamos en el capítulo 3.
  • Chris Wrobel hizo correcciones en el código que aparece en el capítulo sobre archivos y excepciones.
  • Moshe Zadka ha hecho valiosas contribuciones a este proyecto. Además de escribir el primer borrador del capítulo sobre diccionarios, proporcionó orientación continua en las primeras etapas de la obra.
  • Christoph Zwerschke envió varias correcciones y sugerencias pedagógicas, y explicó la diferencia entre gleich y selbe.
  • James Mayer nos envió una gran cantidad de faltas de ortografía y errores tipográficos, dos de ellos en la lista de contribuyentes.
  • Hayden McAfee detectó una contradicción potencialmente liosa entre dos ejemplos.
  • Angel Arnal es parte de un equipo internacional de los traductores que trabajan en la versión en español del texto. También ha encontrado varios errores en la versión en inglés.
  • Tauhidul Hoque y Lex Berezhny creó las ilustraciones en el capítulo 1 y mejoró muchas de las otras ilustraciones.
  • Dr Michele Alzetta identificó un error en el capítulo 8 y envió comentarios muy pedagógicos e interesantes sugerencias acerca de Fibonacci y Old Maid.
  • Andy Mitchell identificó una errata en el capítulo 1 y una ejemplo erróneo en el capítulo 2.
  • Kalin Harvey sugirió una aclaración en el capítulo 7 y encontró algunos errores ortográficos.
  • Christopher P. Smith encontró varios errores ortográficos y nos está ayudando a preparar la actualización del libro para hacerla compatible con Python 2.2.
  • David Hutchins descubrió una errata en el Prólogo.
  • Gregor Lingl enseña Python en una escuela secundaria en Viena, Austria. Está trabajando en una traducción al alemán del libro, y encontró un par de errores en el capítulo 5.
  • Julie Peters encontró una errata en el Prefacio.
  • Florin Oprina envió una mejora de makeTime, una corrección en printTime, y un buen gazapo.
  • DJ Webre sugirió una aclaración en el capítulo 3.
  • Ken encontró un puñado de errores en los capítulos 8, 9 y 11.
  • Ivo Wever encontró una errata en el capítulo 5 y sugirió una aclaración en el capítulo 3.
  • Curtis Yanko propuso una aclaración en el capítulo 2.
  • Ben Logan envió una serie de errores ortográficos y encontró problemas con la traducción del libro a lenguaje HTML.
  • Jason Armstrong descubrió que faltaba una palabra en el capítulo 2.
  • Louis Cordier encontró un fallo en el capítulo 16 en que el código no se correspondía con el texto.
  • Brian Cain sugirió varias aclaraciones en los capítulos 2 y 3.
  • Rob Baclk envió varias correcciones, incluidos algunos cambios para Python 2.2.
  • Jean-Philippe Rey, de la Ecole Centrale Paris, envió una serie de parches, incluidos algunos cambios para Python 2.2 y otras mejoras muy bien pensadas.
  • Jason Mader de la Universidad George Washington hizo una serie de útiles sugerencias y correcciones.
  • Enero Gundtofte - Bruun nos recordó que "a error" es "an error".
  • Abel David y Alexis Dinno nos recordó que el plural de "matrix" es "matrices", no "matrixes". Este error figuró en el libro durante años, pero dos os lectores con las mismas iniciales nos alertaron en el mismo día. Sorprendente.
  • Charles Thayer nos animó a deshacernos de las comas que había puesto en el extremo de algunas declaraciones y a aclarar el uso que hacíamos de los términos "argumento" y "parámetro".
  • Roger Sperberg-McQueen señaló una fragmento lógico erróneo en el Capítulo 3.
  • Sam Bol señaló un párrafo confuso en el capítulo 2.
  • Andrew Cheung señaló dos casos de "uso antes de la definición".
  • C. Corey Capel señaló la palabra que faltaba en el Tercer Teorema de Depuración.
Manuales | Tesis: Ordenadores, Circuitos integrados...
english
Cibernetia