Apéndice D:
Recomendaciones para una lectura más detallada
¿A dónde se va desde aquí? Existen muchas direcciones que puede seguir para ampliar su conocimiento sobre Python y sobre la informática en general.
Los ejemplos de este libro han sido bastante fáciles, aunque no han mostrado las funciones más interesantes de Python. Aquí hay una muestra de las múltiples aplicaciones y ampliaciones de Python y de propuestas para los proyectos en las que se utilicen.
- La programación GUI (interfaz gráfica de usuario) permite que el programa utilice un entorno de ventanas para interactuar con el usuario y mostrar gráficos. El paquete de gráficos más antiguo para Python es Tkinter, basado en los lenguajes de script Tcl y Tk de Jon Ousterhout. Tkinter viene incluido en la distribución de Python.
Otra importante plataforma es wxPython, que es, básicamente, una "chapa" sobre wxWindows, un paquete C++ que abre ventanas usando una interfaz nativa en las plataformas Windows y Unix (incluida Linux). Las ventanas y controles de wxPython tienden a tener un formato simple que hace que la programación con Tkinter sea más sencilla.
Cualquier tipo de programacion GUI le conducirá a una programación dirigida a eventos en la que el usuario y no el programador es el que determina el flujo de la ejecución. Este tipo de programación requiere una familiarización que puede forzarte a replantearse la estructura entera del programa.
- La programación web integra Python con Internet. Por ejemplo, puede construir programas de clientes web que abran y lean una página web remota de manera (casi) tan fácil como abrir un archivo de un disco. También existen módulos Python que te permiten acceder a archivos remotos vía ftp, y módulos que te permiten enviar y recibir correo electrónico. Python también se utiliza para manejar formularios de entrada de servidores web.
- Las bases de datos son como superficheros donde se archivan los datos en esquemas predefinidos, y las relaciones entre los datos le permiten acceder a estos de varias maneras. Python posee varios módulos que permiten a los usuarios conectar varias bases de datos, tanto de código abierto como comerciales.
- La programación basada en hilos te permite ejecutar varios en un mismo programa. Si has usado alguna vez un navegador para desplazarte al principio de la página mientras se continúa descargando el resto de ésta, entonces sabrás lo que hacen los hilos de ejecución.
- Cuando la velocidad es importante, las extensiones de Python habrán sido escritas en un lenguaje compilado como C o C++. Dichas extensiones forman la base de muchos de los módulos de la biblioteca Python. El mecanismo de enlaces de funciones y datos es complejo. SWIG (Simplified Wrapper and Interface Generator) es una herramienta que simplifica el código y genera la interfaz, facilitando el proceso.
Páginas web y libros relacionados con Python:
A continuación se detallan las recomendaciones de los autores para los recursos de Python en Internet:
- La página principal de Python www.python.org es el lugar para comenzar su búsqueda sobre cualquier material relacionado con este lenguaje de programación. Encontrarás ayuda, documentación, enlaces a otras páginas y listas de correos SIG (grupo de interés especial) en las que puedes darte de alta.
- The Open Book Project www.ibiblio.com/obp no sólo contiene este libro en la red sino también libros parecidos para java y c++ de Allen Downey. Además están Lessons in Electric Circuits de Tony R. Kuphaldt, Getting down with ..., una serie de tutoriales sobre informática, escritos y editados por estudiantes de instituto, Python for Fun, una serie de estudios sobre situaciones en Python de Chris Meyers, y The Linux Cookbook de Michael Stultz, con 300 páginas de consejos y trucos.
- Si buscas "python-snake-monty" en Google, le aparecerán aproximadamente 750.000 entradas.
Libros que contienen material adicional sobre el lenguaje Python:
- Core Python Programming de Wesley Chun, libro de aproximadamente 750 páginas. La primera parte trata las características básicas de este lenguaje. En la segunda parte se da una introducción sencilla a los temas más avanzados, incluyendo muchos de los mencionados anteriormente.
- Python Essential Reference de David M. Beazley, un libro que contiene información del lenguaje y los módulos de la biblioteca estándar; además, está muy bien indexado.
- Python Pocket Reference de Mark Lutz. Aunque no es tan extenso como el Python Essential Reference se trata de un manual que sirve como referencia para las funciones y módulos usados más comúnmente. Mark Lutz también es el autor de Programming Python, uno de los primeros (y más extensos) libros sobre Python, dirigido a programadores expertos. Su último libro, Learning Python, es más pequeño y más sencillo.
- Python Programming on Win32 de Mark Hammond y Andy Robinson es un libro que debe tener cualquiera que use Python para desarrollar aplicaciones Windows. Entre otras cosas, cubre la integración de Python con la tecnología COM, crea una pequeña aplicación con wxPython e incluso utiliza Python para aplicaciones como Word y Excel.
Libros recomendados sobre informática
Las siguientes sugerencias para una lectura más detallada incluyen muchos de los libros preferidos de los autores. Abordan los temas de las prácticas de programación y de la informática en general.
- The Practice of Programming de Kernighan y Pike abarca no sólo el diseño y la codificación de los algoritmos y las estructuras de datos sino que también depura, prueba y mejora el rendimiento de los programas. Los ejemplos son, la mayoría, en C++ y Java, no tiene ejemplos en Python.
- The Elements of Java Style, editado por Al Vermeulen es otro libro que trata de algunos de los puntos más importantes de la buena programación, tales como el buen uso de las convenciones de nombramiento, comentarios, e, incluso, los espacios en blanco y las sangrías (algo no característico de Python). El libro también trata de la programación por contrato, del uso de afirmaciones para encontrar errores probando las condiciones previas y las posteriores, y la programación con hilos adecuada y su sincronización.
- Programming Pearls, de Jon Bentley es un clásico. En este libro se encuentran casos de estudios que aparecían en la columna del autor en la revista Communications of the ACM. Los estudios tratan de elementos de compensación en programación y el porqué normalmente es mala idea ejecutar su primera idea para un programa. Este libro, de 1986, es más antiguo que los mencionados anteriormente por lo que los ejemplos están en un lenguaje de programación desfasado. Cuenta con muchos problemas que resolver, algunos con soluciones y otros con trucos. Este libro fue muy famoso y tiene un segundo volumen.
- The New Turing Omnibus de A.K. Dewdney ofrece una pequeña introducción a 66 temas sobre informática, desde ejecución en paralelo hasta virus, desde exploraciones CAT hasta GA (Algoritmos genéticos). Todos los temas son cortos y amenos. Su anterior libro, The Armchair Universe, es una recopilación de los artículos de su columna Computer Recreations en la revista Scientific American. Estas obras cuentan con muy buenas ideas para proyectos.
- Turtles, Termites and Traffic Jams, de Mitchel Resnick habla sobre el poder de descentralización y sobre cómo el comportamiento complejo puede surgir de la actividad coordinada de una multitud de agentes. Introduce el lenguaje de programación StarLogo, que permite al ususario escribir programas para los agentes. Al ejecutar el programa se demuestra el comportamiento complejo total, que a menudo no es intuitivo. Muchos de los programas del libro están desarrollados por escolares y estudiantes de instituto. Podrían escribirse programas parecidos en Python con el uso de gráficos simples e hilos.
- Gödel, Escher and Bach de Douglas Hofstadter. Es simple, si encontraste magia en una función recursiva, también la encontrarás en este "bestseller". Uno de los temas de Hofstadter incluye "raros bucles" en los cuales los patrones evolucionan y ascienden hasta que se vuelven a encontrar de nuevo. Según Hofstadter, estos "raros bucles" son una parte esencial de lo que separa lo animado de lo inanimado. Dichos patrones se demuestran en la música de Bach, las obras de Escher y el teorema de lo incompleto de Gödel.