Apêndice C: Leituras recomendadas¶
Tópicos
C.1 Recomendações para leitura¶
E agora, para onde você vai? Existem diversas direções que podem ser seguidas, aumentando o seu conhecimento especificamente em Python e/ou na ciência da computação em geral.
Os exemplos contidos neste livro foram deliberadamente simples, ou seja, eles podem não ter mostrado todo o potencial do Python. Abaixo uma lista de extensões e sugestões para projetos que usem Python:
Programar utilizando interfaces gráficas (GUI - graphical user interface) permite ao seu programa usar um ambiente de janelas para interagir com o usuário e exibir conteúdos gráficos (janelas, imagens, etc.) A biblioteca gráfica mais antiga para Python é o Tkinter, que é baseado no Tcl criado por Jon Ousterhout e na linguagem de script Tk. O Tkinter está incluso na distribuição padrão do Python, ou seja, quando instalamos o Python, o módulo do Tkinter é instalado também.
Outra biblioteca famosa é o wxPython, que é essencialmente uma “folheagem” do Python sobre o wxWindows, uma biblioteca C++ que, por sua vez, implementa janelas usando a interfaces nativas nas plataformas Windows e Unix (incluindo Linux). As janelas e controles no wxPython tendem a ter um visual mais nativo do que no Tkinter e são mais um pouco mais simples de usar.
Em qualquer biblioteca GUI que você usar, você usará a programação orientada a eventos, onde o usuário, e não o programador, determina o fluxo de execução. Este estilo de programação exige um novo costume que, por vezes, o obrigará a repensar toda a estrutura de um programa.
A programação web é um modelo de programação que integra o Python com a Internet. Por exemplo, você pode criar um cliente web que abre e lê uma página remota (quase) tão facilmente como você pode abrir um arquivo local. Existem, ainda, módulos para Python que permitem acesso remoto a arquivos utilizando FTP, e módulos que permitem você enviar e receber e-mails. Python também é usado (amplamente) para construir programas em servidores web com o intuito de tratar dados fornecidos por formulários.
Banco de dados são como super arquivos, que armazenam dados em esquemas predefinidos, e mantém relações entre itens de dados que lhe permitem acessar os dados de várias formas. Python tem vários módulos que possibilitam ao usuário conectar seus programas a diversos sistemas gerenciadores de banco de dados, tanto sistemas livres (Open source) quanto sistemas comerciais.
A programação multitarefa (multithread) permite que você execute várias tarefas (threads) dentro de um único programa. Se você já teve a experiência de usar um navegador web para se deslocar por uma página web enquanto o navegador ainda está carregando ela, então você já tem uma ideia do que da pra fazer usando a programação multitarefa.
Quando o desempenho é primordial, você pode escrever extensões para o Python em linguagens compiladas, como C e C++. Este abordagem é vastamente utilizada na biblioteca padrão do Python, formando a sua base. O mecanismo de ligação de dados e funções é um pouco complexo. Existe uma ferramenta, chamada SWIG (Simplified Wrapper and Interface Generator), que faz este processo de ligação ser mais simples.
C.2 Sites e livros sobre Python¶
Aqui estão algumas recomendações do autor de informações sobre Python na Internet:
A página oficial do Python (www.python.org) é o ponto de partida para pesquisa sobre qualquer material ligado a Python. Lá você encontrará ajuda, documentação, links para outros sites e listas de discussão nas quais você pode participar.
O Open Book Project (www.ibiblio.com/obp) contém não apenas este livro, mas também livros similares que abordam Java e C++, escritos por Allen Downey. Além disso, há aulas sobre Circuitos Elétricos feitas por Tony R. Kuphaldt; “Get down with …”, um conjunto de tutoriais sobre uma gama de tópicos em ciência da computação, escrito e editado por alunos de ensino médio; “Python for Fun”, um conjunto de estudos de caso em Python, feito por Chris Meyers; e “The Linux Cookbook”, escrito por Michael Stultz, com 300 páginas de dicas e técnicas.
Por último, se você for ao Google e buscar por “python -snake -monty”, você encontrará cerca de 750 mil resultados.
E aqui estão alguns livros que contém material sobre Python:
Core Python Programming, escrito por Wesley Chun, é um grande livro com cerca de 750 páginas. A primeira párte do livro apresenta os recursos básicos do Python. A segunda parte traz uma introdução aos tópicos mais avançados, incluindo muitos dos mencionados acima.
Python Essential Reference, escrito por David M. Beazley, é um livro pequeno, mas que contém informações tanto da linguagem em si quanto dos módulos da biblioteca padrão. É também muito bem indexado.
Python Pocket Reference, escrito por Mark Lutz, este livro realmente cabe no seu bolso. Embora não seja tão abrangente quanto o “Python Essential Reference”, “Python Pocket Reference” é uma referência para se ter em mãos o tempo todo, capaz de atender muito bem à explicação das funções e métodos mais comuns. Mark Luiz também é autor do livro “Programming Python”, um dos primeiros (e maiores) livros sobre Python, e não visa o programador iniciante. Seu último livro, “Learning Python”, é menor e mais acessível.
Python Programming on Win32, escrito por Mark Hammond e Andy Robinson, é um “tem que ter” para qualquer pessoa utilizando Python seriamente para desenvolver aplicações Windows. Entre outras coisas, o livro apresenta a integração entre Python e COM, cria uma pequena aplicação com wxPython, e ainda usar Python para criar scripts para aplicações como Word e Excel.
C.3 Livros de ciência da computação recomendados¶
As seguintes sugestões de leitura incluem muitos dos livros favoritos do autor. Eles lidam com as boas práticas de programação e ciência da computação em geral.
The Practice of Programming, escrito por Kernighan e Pike, abrange não apenas o projeto e a implementação de algoritmos e estrutura de dados, mas também depura, testa e melhora o desempenho de programas. Os exemplos são principalmente em C++ e Java, nenhum em Python.
The Elements of Java Style, editado por Al Vermeulen, é outro livro pequeno que discute alguns dos mais finos pontos de boas práticas de programação, como o bom uso de conveções, comentários, e ainda espaços em branco e endentação (o que não é um problema em Python). O livro também abrange programação por contrato, usando asserções para capturar erros testando precondições e poscondições, e programação adequada utilizando threads e sua sincronização.
Programming Pearls, escrito por Jon Bentley, é um livro clássico. O livro consiste de casos de estudo que originalmente apareceram na coluna do autor no site Communications of ACM (Association for Computing Machinery). Os estudos lidam com trade-offs em programação e por que isto é, muitas vezes, uma péssima idéia, especialmente para usar na sua primeira ideia para um programa. O livro é um pouco mais velho que os outros acima (1986), então os exemplos estão em linguagens antigas. Existem vários problemas para resolver, uns com solução e outros com dicas. O livro foi muito famoso e foi seguido por um segundo volume.
The New Turing Omnibus, escrito por A.K Dewdney, fornece uma leve introdução a 66 tópicos de ciência da computação, indo de computação paralela aos vírus de computador, de tomografias computadorizadas a algoritmos genéticos. Todos os tópicos são curtos e agradáveis. Um livro anterior escrito por Dewdney, The Armchair Universe, é uma coleção de sua coluna “Computer Recreations” (Brincadeiras computacionais) na revista Scientific American. Ambos os livros representam uma rica fonte de ideias para projetos.
Turtles, Termites and Traffic Jams, escrito por Mitchel Resnick, trata do poder de descentralização e como um comportamento complexo pode ocorrer a partir de simples atividades coordenadas, com um grande número de agentes. A execução do programa demonstra o comportamento complexo, que é, muitas vezes, contraintuitivo.
Gödel, Escher and Bach, escrito por Douglas Hofstadter. Simplificando, se você encontrar a magia na recursão, você vai encontrar também neste best-seller. Um dos temas abordados por Hofstadter envolve “loops estranhos” onde os padrões evoluem e ascendem até se encontrarem novamente. Esta é a controvérsia de Hofstadter, de que tais “loops estranhos” representam o elemento essencial que separa o animado do inanimado. Ele demonstra tais padrões na música de Bach, nos quadros de Escher e na incompletude dos teoremas de Gödel.