Apresentação¶
Por David Beazley
Como educador, pesquisador e autor de livros, regozija-me ver completo este trabalho. Python é uma linguagem de programação divertida e extremamente fácil de usar que tem ganho forte popularidade nestes últimos poucos anos. Desenvolvida dez anos atrás por Guido van Rossun, a sintaxe simples do Python e seu sentido geral são grandemente derivados do ABC, uma linguagem didática que foi desenvolvida nos anos 80. Entretanto, Python também foi criado para solucionar problemas reais e tomou emprestado uma grande quantidade de características de linguagens de programação como C++, Java, Modula-3 e Scheme. Por causa disso, uma das mais notáveis características do Python é o grande apelo que tem junto a desenvolvedores profissionais de software, cientistas, pesquisadores, artistas e educadores.
A Despeito deste apelo do Python junto às mais variadas comunidades, você pode ainda estar pensando “por que Python?” ou “por que ensinar programação com Python?”. Responder à estas perguntas não é uma tarefa fácil, especialmente se a opinião pública está do lado de alternativas mais masoquistas como C++ e Java. Entretanto, eu acho que a resposta mais direta é que programar com Python é um bocado divertido e mais produtivo.
Quando ministro cursos de ciências da computação, o que desejo é cobrir conceitos importantes além de tornar a matéria interessante e os alunos participativos. Infelizmente, existe uma tendência entre os cursos introdutórios de programação a focar atenção demais em abstrações matemáticas, e de frustração entre os alunos com problemas enfadonhos e inoportunos relacionados a detalhes de sintaxe em baixo nível, compilação e a imposição de regras que aparentemente só um expert pode compreender (enforcement of seemingly arcane rules XXX). Embora alguma abstração e formalismo sejam importantes para engenheiros profissionais de software e estudantes que planejam continuar seus estudos em ciências da computação, escolher tal abordagem em um curso introdutório faz da ciência da computação algo entediante. Quando ministro um curso, não desejo uma sala cheia de alunos sem inspiração. Em vez disso, preferiria muito mais vê-los tentando solucionar problemas interessantes explorando idéias diferentes, trilhando caminhos não convencionais, quebrando regras, e aprendendo a partir de seus erros. Fazendo assim, não pretendo desperdiçar metade de um semestre tentando explicar problemas obscuros de sintaxe, mensagens ininteligíveis de compiladores ou as várias centenas de maneiras pelas quais um programa pode gerar uma falha geral de proteção.
Uma das razões pelas quais eu gosto de Python é que ele oferece um equilíbrio realmente bom entre o lado prático e o lado conceitual. Sendo Python interpretado, os iniciantes podem pegar a linguagem e começar a fazer coisas legais quase imediatamente sem se perderem em problemas de compilação e ligação (linking XXX). Além disso, Python vem com uma grande biblioteca de módulos que podem ser utilizados para fazer todo tipo de tarefa, desde a programação para a web até gráficos. Com tal enfoque prático temos uma bela maneira de alcançar o engajamento dos alunos e permitir que eles finalizem projetos significativos. Entretanto, Python também pode servir de excelente embasamento para a introdução de conceitos importantes em ciência da computação. Já que Python suporta plenamente procedimentos (procedures) e classes, os alunos podem ser gradualmente introduzidos a tópicos como abstração procedural, estruturas de dados, e programação orientada a objetos ? todos aplicáveis em cursos posteriores de Java ou C++. Python ainda toma emprestado certas características de linguagens de programação funcionais e pode ser usado para introduzir conceitos cujos detalhes poderiam ser aprofundados em cursos de Scheme e Lisp.
Lendo o prefácio de Jeffrey, fiquei impressionado com seu comentário de que Python o fez ver um “maior nível de sucesso e um menor nível de frustração” o que lhe permitiu “progredir mais depressa com resultados melhores”. Embora estes comentários refiram-se aos seus cursos introdutórios, eu às vezes uso Python exatamente pelas mesmas razões em cursos avançados de pós-graduação (graduate = pos-graduacao XXX) em ciência da computação na Universidade de Chicago. Nestes cursos, enfrento constantemente a assustadora tarefa de cobrir muitos tópicos difíceis em um rapidíssimo trimestre (quarter XXX) de nove semanas. Embora me seja possível inflingir um bocado de dor e sofrimento pelo uso de uma linguagem como C++, tenho percebido muitas vezes que este enfoque é contraproducente, especialmente quando o curso é sobre um tópico não relacionado apenas com “programar”. Acho que usar Python me permite um melhor foco no tópico em questão, enquanto permite que os alunos completem projetos substanciais em classe.
Embora Python seja ainda uma linguagem jovem e em evolução, acredito que tem um futuro brilhante em educação. Este livro é um passo importante nessa direção.
David Beazley
Universidade de Chicago
Autor de Python Essencial Reference