Em Tradução:Pense em Python/0

A estranha história deste livro

editar

Em janeiro de 1999 eu estava me preparando para lecionar uma aula introdutória a Java. Tinha que ensinar três vezes e estava começando a ficar frustrado. O índice de fracasso nas aulas era muito alto e, mesmo para os alunos que avançavam, o nível abrangente de aprendizado era muito baixo.

Um dos problemas que eu via eram os livros. Eram muito longos, com muitos detalhes sobre Java desnecessários, e não havia a necessária tutoria de alto-nível sobre como programar. E todos sofriam do efeito de alçapão: começavam fáceis, procediam gradualmente e, então, em algum lugar próximo ao Capítulo 5, caiam por terra. Os alunos apanhavam muito material novo, rapidamente, e eu gastava o resto do semestre tentando juntar os pedaços.

Duas semanas antes do primeiro dia de aula, decidi que escreveria meu próprio livro. Meus objetivos eram:

  • Mantê-lo pequeno. É melhor para os alunos ler 10 páginas do que não ler 50.
  • Ser mais cuidadoso com o vocabulário. Tentei minimizar o uso de jargão e defini cada termo quando era usado pela primeira vez.
  • Construí-lo gradualmente. Para evitar alçapões, peguei os tópicos mais complicados e os dividi numa série de pequenos passos.
  • Focar em programação, não na linguagem de programação. Incluí o subconjunto útil mínimo de Java e deixei de fora o resto.

Precisava de um título e, por imaginação, decidi que seria Como Pensar como um Cientista da Computação. Minha primeira versão foi uma tentativa, mas funcionou. Os alunos fizeram a leitura e entenderam o suficiente e eu pude dedicar mais aulas aos tópicos difíceis, aos interessantes e (o mais importante de tudo) deixá-los praticar.

Lancei o livro sob a Licença do GNU para Documentos Livres, o que permite aos leitores copiar, modificar e distribuir o livro.

O que aconteceu depois é a melhor parte. Jeff Elkner, um professor de colegial na Virgínia, adotou o meu livro e o verteu para Python. Ele me enviou uma cópia da sua versão e eu tive a inesperada experiência de aprender Python lendo o meu próprio livro. Pela Green Tea Press eu publiquei a primeira versão em Python do livro em 2001.

Em 2003 eu comecei a lecionar no Olin College onde ensinei Python pela primeira vez. O contraste com Java foi impressionante. Os alunos sofriam menos, aprendiam mais, trabalhavam em projetos mais interessantes e, em geral, se divertiam mais.

Ao longo dos nove últimos anos eu continuei a desenvolver o livro, corrigindo erros, melhorando alguns exemplos e adicionando material, especialmente exercícios.

O resultado é este livro, agora com o título mais modesto: Pense em Python. Algumas das mudanças são:

  • Adicionei uma seção sobre depuração ao final de cada capítulo. Essas seções apresentam técnicas gerais para encontrar e evitar erros de programação, e avisos sobre armadilhas.
  • Adicionei mais exercícios, de pequenos testes de compreensão a alguns projetos substanciais. E escrevi as soluções para a maioria deles.
  • Adicionei uma série de estudos de caso – longos exemplos com exercícios, soluções e discussão. Alguns baseados em Swampy, uma suíte de programas Python que escrevi para uso nas minha aulas. Swampy, exemplos de código e algumas soluções estão disponíveis em http://thinkpython.com.
  • Expandi a discussão sobre planos de desenvolvimento de programas e padrões de projeto básicos.
  • Adicionei apêndices sobre depuração, análise de algoritmos e diagramas da UML com Lumpy.

Espero que seja proveitoso para você trabalhar com este livro e que ele o ajude a aprender a programar e pensar, pelo menos um pouco, como um cientista da computação.

Allen B. Downey
Needham MA
Allen Downey é Professor de Ciência da Computação no Franklin W. Olin College of Engineering.

Agradecimentos

editar

Meus cumprimentos a Jeff Elkner, que verteu meu livro de Java para Python, que tomou esse projeto começado e me apresentou àquela que se tornou a minha linguagem predileta.

Quero agradecer também a Chris Meyer, que contribuiu com inúmeras seções de Como Pensar Como Um Cientista da Computação.

Agradeço a Free Software Foundation por ter desenvolvido a Licença do GNU para Documentos Livres, que tornou a minha colaboração com Jeff e Chris possível, e a Creative Commons pela licença que estou usando agora.

Obrigado aos editores em Lulu que trabalharam em Como Pensar Como um Cientista da Computação.

Obrigado a todos os estudantes que trabalharam com as versões anteriores desse livro e a todos os contribuidores (listados abaixo) que enviaram correções e sugestões.

Lista de contribuidores

editar

Mais de 100 olhos atentos e leitores cuidadosos enviaram sugestões e correções nesses anos que se passaram. Suas contribuições e entusiasmo com esse projeto tem sido uma valiosa ajuda.

Se você tem uma sugestão ou correção a apontar, por favor, envie um e-mail para feedback@thinkpython.com. Se eu fizer alguma alteração com base no seu retorno, irei adicioná-lo a lista de contribuidores (a menos que peça para não ser adicionado).

Se você inclui pelo menos parte da sentença, onde o erro aparece, fica mais fácil para eu encontrá-lo. Página e números de seção são bacanas também, mas não tão fáceis de se trabalhar. Obrigado!

  • Lloyd Hugh Allen enviou uma correção na Seção 8.4.
  • Yvon Boulianne enviou uma correção de um erro semântico no Capítulo 5.
  • Fred Bremmer submeteu uma correção na Seção 2.1.
  • Jonah Cohen escreveu os scripts em Perl para converter o código LaTeX desse livro em agradável HTML.
  • Michael Conlon enviou uma correção gramatical no Capítulo 2 e um ajuste de estilo no Capítulo 1, além de iniciar a discussão sobre os aspectos técnicos dos interpretadores.
  • Benoit Girard enviou uma correção a um engano humorístico na Seção 5.6.
  • Courtney Gleason e Katherine Smith escreveram horsebet.py, que foi usado como um estudo de caso numa versão anterior do livro. Esse programa pode ser encontrado agora no website.
  • Lee Harr submeteu tantas correções que não temos aqui espaço para listar todas e, na verdade, deve ser listado como um dos principais editores do texto.
  • James Kaylin é um estudante que utiliza o texto. E submeteu inúmeras correções.
  • David Kershaw corrigiu a função caTwice bugada da Seção 3.10.
  • Eddie Lam enviou numerosas correções aos Capítulos 1, 2 e 3. Também corrigiu o Makefile para que ele crie um índice na primeira vez que é executado e ajude-nos a montar um esquema de versionamento.
  • Man-Yong Lee enviou uma correção ao código de exemplo na Seção 2.4
  • David Mayo notou que a palavra “unconsciously" (inconscientemente) no Capítulo 1 deveria ser mudada para “subconsciously" (subconscientemente).
  • Chris McAloon enviou várias correções às Seções 3.9 e 3.10.
  • Matthew J. Moelter tem sido um contribuidor de longo tempo que enviou numerosas correções e sugestões ao livro.
  • Simon Dicon Montford relatou que faltava uma definição de função e apontou vários erros de digitação no Capítulo 3. Encontrou também erros na função de incremento no Capítulo 13.
  • John Ouzts corrigiu a definição de “return value" no Capítulo 3.
  • Kevin Parks enviou valiosos comentários e sugestões de como melhorar a distribuição do livro.
  • David Pool enviou um erro de digitação no glossário do Capítulo 1, bem como palavras de estímulo.
  • Michael Schmitt enviou uma correção ao capítulo sobre arquivos e exceções.
  • Robin Shaw apontou um erro na Seção 13.1, onde a função printTime foi usada num exemplo sem ter sido declarada.
  • Paul Sleigh encontrou um erro no Capítulo 7 e um bug no script Perl de Jonas Cohen, que gera HTML a partir de código LaTeX.
  • Craig T. Snydal está testando o texto num curso na Drew University. Tem contribuído com várias sugestões valiosas e correções.
  • Ian Thomas e seus alunos estão usando o texto num curso de programação. São um dos primeiros a testar os capítulos da segunda parte do livro e têm feito numerosas correções e sugestões.
  • Keith Verheyden enviou uma correção no Capítulo 3.
  • Peter Winstanley fez-nos saber de um erro de longa-data que havia em nosso Latim no Capítulo 3.
  • Chris Wrobel fez correções ao código no capítulo sobre E/S de arquivos e exceções.
  • Moshe Zadka deu inestimáveis contribuições a este projeto. Além de escrever o primeiro rascunho do capítulo sobre Dicionários, forneceu uma orientação contínua nas fases iniciais do livro.
  • Christoph Zwerschke enviou diversas correções e sugestões pedagógicas, além de explicar a diferença entre gleich e selbe.
  • James Mayer enviou-nos uma enorme quantidade de erros ortográficos e tipográficos, inclusive dois na lista de contribuidores.
  • Hayden McAfee reparou uma inconsistência potencialmente confusa que havia entre dois exemplos.
  • Angel Arnal é um integrante de uma equipe internacional de tradutores que vem trabalhando numa versão em espanhol do texto. Ele encontrou diversos erros na versão em inglês.
  • Tauhidul Hoque e Lex Berezhny criaram as ilustrações no Capítulo 1 e melhoraram muitas outras ilustrações.
  • Dr. Michele Alzetta apanhou um erro no Capítulo 8 e enviou alguns comentários pedagógicos interessantes sobre Fibonacci e Old Maid.
  • Andy Mitchell apanhou um erro de digitação no Capítulo 1 e um exemplo desconexo no Capítulo 2.
  • Kalin Harvey sugeriu uma explanação no Capítulo 7 e apanhou alguns erros de digitação.
  • Christopher P. Smith apanhou diversos erros de digitação e ajudou-nos a adaptar o livro para Python 2.2.
  • David Hutchins apanhou um erro de digitação no prólogo.
  • Gregor Lingl está ensinando Python num colégio em Viena, Aústria. Ele vem trabalhando numa tradução do livro para o alemão e apanhou um par de erros grosseiros no Capítulo 5.
  • Julie Peters apanhou um erro de digitação no Prefácio.
  • Florin Oprina enviou uma melhoria em makeTime, uma correção em printTime e um sútil erro de digitação.
  • D. J. Webrre sugeriu um esclarecimento no Capítulo 3.
  • Ken encontrou um punhado de erros nos Capítulos 8, 9 e 11.
  • Ivo Wever apanhou um erro de digitação no Capítulo 5 e sugeriu um esclarecimento no Capítulo 3.
  • Curtis Yanko sugeriu um esclarecimento no Capítulo 2.
  • Ben Logan enviou uma série de erros de digitação e também problemas em verter o livro para HTML.
  • Jason Armstrong observou que havia uma palavra faltando no Capítulo 2.
  • Louis Cordier notou um trecho do Capítulo 16 onde o código não batia com o texto.
  • Brian Cain sugeriu vários esclarecimentos nos Capítulos 2 e 3.
  • Rob Black enviou uma porção de correções, incluindo algumas mudanças para Python 2.2.
  • Jean-Philippe Rey da Ecole Centrale Paris enviou uma série de correções, incluindo algumas atualizações para Python 2.2 e outras valorosas melhorias.
  • Jason Mader da George Washington University fez uma série de sugestões pertinentes, além de correções.
  • Jan Gundtofte-Bruun lembrou-nos que “a error” é an error.
  • Abel David e Alexis Dinno lembraram-nos que o plural de “matrix” é “matrices”, não “matrixes”. Este erro esteve no livro por anos, mas dois leitores, com as mesmas iniciais, notificaram-no no mesmo dia. Estranho.
  • Charles Thayer encorajou-nos a eliminar os pontos-e-vírgulas que colocávamos nos fins de algumas declarações e a subtrair o nosso uso de “argument” (argumento) e “parameter” (parâmetro).
  • Roger Sperberg indicou-nos um pedaço confuso de lógica no Capítulo 3.
  • Sam Bull indicou-nos um parágrafo confuso no Capítulo 2.
  • Andrew Cheung indicou-nos duas ocorrências de “uso antes de def.”
  • C. Corey Capel percebeu que faltava uma palavra no Terceiro Teorema de Depuração e um erro de digitação no Capítulo 4.