1.2. Introdução¶
A maneira como pensamos sobre programação sofreu muitas mudanças ao longo dos anos desde os primeiros computadores eletrônicos que usavam cabos e chaves para passar instruções de humanos para a máquina. Assim como em vários aspectos da sociedade, as mudanças na tecnologia de computação forneceram aos cientistas da computação um número crescente de ferramentas e plataformas para praticar seu ofício. Avanços como processadores mais rápidos, redes de alta velocidade e grandes capacidades de armazenamento criaram uma espiral de complexidade através da qual os cientistas da computação devem navegar. Durante toda essa rápida evolução, vários princípios básicos tem permanecido constantes. A ciência da computação está preocupada com o uso de computadores para resolver problemas.
Não há dúvida que você passou um tempo considerável aprendendo o básico sobre resolução de problemas e esperamos que você se sinta agora confiante em sua capacidade de desenvolver uma solução a partir do enunciado de um problema. Você também aprendeu que escrever programas de computador costuma ser difícil. A complexidade de problemas grandes e a correspondente complexidade das soluções podem ofuscar as idéias fundamentais relacionadas ao processo de solução de problemas.
Este capítulo enfatiza duas áreas importantes para o restante do texto. Em primeiro lugar, analisa o arcabouço em que a ciência da computação e o estudo de algoritmos e estruturas de dados deve se adequar, em particular, as razões pelas quais precisamos estudar esses tópicos e como o entendimento desses tópicos nos ajuda a nos tornar melhores solucionadores de problemas. Em segundo lugar, revisamos a linguagem de programação Python. Embora não possamos fornecer uma referência detalhada e exaustiva, vamos dar exemplos e explicações para as construções e idéias básicas que ocorrerão ao longo dos capítulos restantes.