Em Tradução:Pense em Python/0
Esta página ou seção faz parte de uma obra que ainda está em processo de tradução. Ajude a traduzir! →
Por favor, mantenha este aviso até que toda a obra tenha sido traduzida. |
A estranha história deste livro
editarEm 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
editarMeus 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
editarMais 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.