Appendix D
Lecturas recomendadas
Y ahora, ¿hacia dónde ir desde aquí? Hay muchas
direcciones en las que seguir, ampliando sus conocimientos de Python
specíficamente y de informática en general.
Los ejemplos en este libro han sido deliberadamente simples, por lo
que pueden no haber mostrado las capacidades más excitantes de
Python. A continuación exponemos una muestra de las extensiones de
Python y sugerencias sobre sus usos.
- La programación de GUIs (interfaces gráficas de usuario, {\sl graphic
user interface
en inglés)
permite que su programa utilice un entorno de ventanas para
interactuar con el usuario y mostrar gráficos.
El primer paquete que ha tenido Python para esto es Tkinter, basado en
los lenguajes interpretados Tcl y Tk de Jon Ousterhout. Tkinter está
incluido en la distribución de Python.
Otra plataforma popular es wxPython, que es esencialmente un
enchapado sobre wxWindows, un paquete de C++ que implementa ventanas
utilizando la interfaces nativas las plataformas Windows y Unix
(incluido Linux). Las ventanas y los controles con wxPython tienen una
apariencia más nativa que Tkinter y son un poco más sencillos de
programar.
Cualquier tipo de programación de GUIs le llevará a programación
basada en eventos, donde es el usuario y no el programador quien
determina el flujo de la ejecución. Este estilo de programación
requiere de algo de tiempo para acostumbrarse, y a veces le forzará
a replantearse toda la estructura del programa.
- La programación web integra Python en la Internet. Por
ejemplo, puede construir programas de cliente web que abran y lean una
página remota (casi) tan fácilmente como si fuera un fichero en
disco. También hay módulos de Python que le permiten acceder a
ficheros remotamente vía ftp, y módulos que le permiten enviar
y recibir correos electrónicos. Python también es ampliamente
utilizado en el lado del servidor de la programación web para
manejar los datos de entrada de los formularios.
- Las bases de datos son un poco como super ficheros en donde los
datos están almacenados en esquemas predefinidos, y las relaciones
entre los datos le permiten acceder a ellos de varias maneras. Python
tiene varios módulos para permitir a los usuarios conectarse a
varios motores de bases de datos, tanto Open Source como comerciales.
- La programación multi-procesos (multi-hilos) le permite
ejecutar varios procesos (hilos) de ejecución dentro de un único
programa. Si ha tenido la experiencia de usar un navegador web para
desplazarse por una página web mientras el navegador continúa
cargando el resto de la misma, entonces tiene una idea de lo que los
hilos pueden hacer.
- Cuando la velocidad es más importante se pueden escribir
extensiones para Python en un lenguaje compilado como C o C++. Tales
extensiones forman la base de la mayoría de módulos en la
librería de Python. El mecanismo de enlazar funciones y datos es un
poco complejo. SWIG (Simplified Wrapper and Interface Generator) es
una herramienta para hacer este proceso mucho más sencillo.
Libros y sitios web sobre Python
Aquí tiene las recomendaciones de los autores sobre recursos para
Python en la web:
- La página de inicio de Python en www.python.org es
el lugar para empezar su búsqueda de material sobre Python.
Encontrará ayuda, documentación, enlaces a otros libros y
listas de correo de SIGs (Special Interest Group) a las que se puede unir.
- El proyecto Open Book Project www.ibiblio.com/obp contiene
no sólo este libro en línea sino también otros libros similares
para Java y C++ de Allen Downey. Además está Lessons in Electric
Circuits de Tony R. Kuphaldt, Getting down with ..., un
conjunto de tutoriales de varios temas sobre informática, escritos y
editados por estudiantes de institulo, Python for Fun, un
conjuto de estudios de casos en Python de Chris Meyers, y The
Linux Cookbook de Michael Stultz, con 300 páginas de trucos y
técnicas.
- Finalmente si acude a Google y busca con la cadena "python
-snake -monty" obtendrá cerca de 750.000 resultados.
Y aquí algunos libros que contienen más material sobre el
lenguaje Python:
- Core Python Programming de Wesley Chun es un libro
largo, más de 750 páginas. La primera parte del libro cubre las
características básicas del lenguaje Python. La segunda parte
proporciona una introducción paso a paso a temas más avanzados
incluyendo muchos de los mencionados anteriormente.
- Python Essential Reference de David M. Beazley es un libro
pequeño, pero contiene información sobre el lenguaje en sí
mismo y los módulos de la librería estándar. También está
muy bien indexado.
- Python Pocket Reference de Mark Lutz realmente cabe en el
bolsillo. Aunque no es tan extensivo como Python Essential
Reference es una referencia útil para los módulos y funciones
más comunmente usadas. Mark Lutz también es autor de Programming Python, uno de los primeros (y más largos) libros de
Python y no está dirigido al programador principiante. Su siguiente
libro Learning Python es más pequeño y más accesible.
- Python Programming on Win32 de Mark Hammond y Andy
Robinson es un libro que "debe tener" cualquiera que que utilice
seriamente Python para desarrollar aplicaciones para Windows. Entre
otras cosas cubre la integración de Python y COM, construye una
pequeña aplicación con wxPython, e incluso utiliza Python para
escribir scripts para aplicaciones tales como Word y Excel.
Libros recomendados sobre informática en general
Las siguientes sugerencias sobre lecturas adicionales incluyen muchos
de los libros favoritos de los autores. Estos tratan sobre buenas
prácticas de programación e informática en general.
- The Practice of Programming de Kernighan y Pike cubre no
sólo el diseño y dodificación de algoritmos y estructuras de
datos, sino también depuración, testeo y mejora de rendimiento de
los programas. Los ejemplos están principalmente en C++ y Java, sin
nada de Python.
- The Elements of Java Style editado por Al Vermeulen
es otro libro pequeño que discute algunos de los puntos más
sutiles de la buena programación, tales como el buen uso de
las convenciones de nombres, comentarios e indentación (un poco
irrelevante en Python). El libro también cubre la programación
por contrato, usando aserciones para encontrar los errores probando
precondiciones y postcondiciones, y programación correcta con hilos
y su sincronización.
- Programming Pearls de Jon Bentley es un libro clásico.
Consiste en estudios de caso que aparecieron originalmente en la
columna del autor en Communications of the ACM. Los estudios
tratan sobre toma y daca en programación y por qué suele ser mala
idea desarrollar con la primera idea de un programa. El libro es un
poco más antiguo que los anteriores (1986), por lo que los ejemplos
están en lenguajes más antiguos. Hay muchos problemas para
resolver, algunos con soluciones y otros con pistas. Este libro fue
muy popular y le siguió un segundo volumen.
- The New Turing Omnibus de A.K Dewdney proporciona una
introducción amigable a 66 temas de informática desde computación
en parelelo hasta virus informáticos, desde TACs (tomografías
computerizadas) hasta algoritmos genéticos. Todos los temas son
cortos y entretenidos. Un libro anterior de Dewdney Aventuras
Informáticas es una colección de su columna Juegos de ordenador
en Invertigación y Ciencia. Ambos libros son ricas fuentes de ideas
para proyectos.
- Tortugas, Termitas y Atascos de Tráfico de Mitchel Resnick
trata sobre el poder de la descentralización y de como pueden
obtenerse comportamientos complejos a partir de las actividades
simples de una multitud de agentes coordinados. Introduce el lenguaje
StarLogo, que permite al usuario escribir programas para agentes. La
ejecución del programa demuestra comportamientos complejos agregados,
que suelen ser intuitivos. La mayoría de los programas en el libro
fueron desarrollados por estudiantes de colegio e instituto. Programas
similares pueden escribirse en Python usando gráficos e hilos.
- Gödel, Escher, Bach de Douglas Hofstadter.
Simplemente, si encuentra magia en la recursión también
la encontrará en este libro superventas. Uno de los temas de
Hofstadter concierne a los "lazos extraños" donde los patrones se
desenvuelven y ascienden hasta que se encuentran a sí mismos de
nuevo. Es una disputa de Hofstadter que tales "lazos extraños" son
una parte esencial de lo que separa lo animado de lo no animado. Él
demuestra tales patrones en la música de Bach, las ilustraciones de
Escher y el teorema de incompletitud de Gödel.